mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-28 12:32:17 +02:00
movenc: use the "encoder" metadata tag to write stsd Compressorname
This mirrors the demuxer behaviour and avoids accessing AVCodecContext.codec, which should not be done in muxers.
This commit is contained in:
parent
6656370b85
commit
0ba5299a80
@ -1003,6 +1003,7 @@ static int mov_write_pasp_tag(AVIOContext *pb, MOVTrack *track)
|
|||||||
|
|
||||||
static int mov_write_video_tag(AVIOContext *pb, MOVTrack *track)
|
static int mov_write_video_tag(AVIOContext *pb, MOVTrack *track)
|
||||||
{
|
{
|
||||||
|
AVDictionaryEntry *encoder;
|
||||||
int64_t pos = avio_tell(pb);
|
int64_t pos = avio_tell(pb);
|
||||||
char compressor_name[32] = { 0 };
|
char compressor_name[32] = { 0 };
|
||||||
|
|
||||||
@ -1036,8 +1037,9 @@ static int mov_write_video_tag(AVIOContext *pb, MOVTrack *track)
|
|||||||
avio_wb16(pb, 1); /* Frame count (= 1) */
|
avio_wb16(pb, 1); /* Frame count (= 1) */
|
||||||
|
|
||||||
/* FIXME not sure, ISO 14496-1 draft where it shall be set to 0 */
|
/* FIXME not sure, ISO 14496-1 draft where it shall be set to 0 */
|
||||||
if (track->mode == MODE_MOV && track->enc->codec && track->enc->codec->name)
|
if (track->mode == MODE_MOV &&
|
||||||
av_strlcpy(compressor_name, track->enc->codec->name, 32);
|
(encoder = av_dict_get(track->st->metadata, "encoder", NULL, 0)))
|
||||||
|
av_strlcpy(compressor_name, encoder->value, 32);
|
||||||
avio_w8(pb, strlen(compressor_name));
|
avio_w8(pb, strlen(compressor_name));
|
||||||
avio_write(pb, compressor_name, 31);
|
avio_write(pb, compressor_name, 31);
|
||||||
|
|
||||||
@ -3366,6 +3368,7 @@ static int mov_write_header(AVFormatContext *s)
|
|||||||
MOVTrack *track= &mov->tracks[i];
|
MOVTrack *track= &mov->tracks[i];
|
||||||
AVDictionaryEntry *lang = av_dict_get(st->metadata, "language", NULL,0);
|
AVDictionaryEntry *lang = av_dict_get(st->metadata, "language", NULL,0);
|
||||||
|
|
||||||
|
track->st = st;
|
||||||
track->enc = st->codec;
|
track->enc = st->codec;
|
||||||
track->language = ff_mov_iso639_to_lang(lang?lang->value:"und", mov->mode!=MODE_MOV);
|
track->language = ff_mov_iso639_to_lang(lang?lang->value:"und", mov->mode!=MODE_MOV);
|
||||||
if (track->language < 0)
|
if (track->language < 0)
|
||||||
|
@ -91,6 +91,7 @@ typedef struct MOVTrack {
|
|||||||
int language;
|
int language;
|
||||||
int track_id;
|
int track_id;
|
||||||
int tag; ///< stsd fourcc
|
int tag; ///< stsd fourcc
|
||||||
|
AVStream *st;
|
||||||
AVCodecContext *enc;
|
AVCodecContext *enc;
|
||||||
|
|
||||||
int vos_len;
|
int vos_len;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user