diff --git a/libavformat/movenc.c b/libavformat/movenc.c index b2c83ea0c6..1a4fd63653 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -532,6 +532,7 @@ static const CodecTag codec_movvideo_tags[] = { { CODEC_ID_SVQ1, MKTAG('S', 'V', 'Q', '1') }, { CODEC_ID_SVQ3, MKTAG('S', 'V', 'Q', '3') }, { CODEC_ID_MPEG4, MKTAG('m', 'p', '4', 'v') }, + { CODEC_ID_H263, MKTAG('h', '2', '6', '3') }, { CODEC_ID_H263, MKTAG('s', '2', '6', '3') }, { CODEC_ID_H264, MKTAG('a', 'v', 'c', '1') }, /* special handling in mov_find_video_codec_tag */ @@ -561,6 +562,11 @@ static int mov_find_video_codec_tag(AVFormatContext *s, MOVTrack *track) else tag = MKTAG('d', 'v', 'p', 'p'); } + } else if (track->enc->codec_id == CODEC_ID_H263) { + if (track->mode == MODE_MOV) + tag = MKTAG('h', '2', '6', '3'); + else + tag = MKTAG('s', '2', '6', '3'); } else { tag = codec_get_tag(codec_movvideo_tags, track->enc->codec_id); } @@ -1461,6 +1467,8 @@ static int mov_write_header(AVFormatContext *s) MOVTrack *track= &mov->tracks[i]; track->enc = st->codec; + track->language = ff_mov_iso639_to_lang(st->language, mov->mode != MODE_MOV); + track->mode = mov->mode; if(st->codec->codec_type == CODEC_TYPE_VIDEO){ track->tag = mov_find_video_codec_tag(s, track); av_set_pts_info(st, 64, 1, st->codec->time_base.den); @@ -1469,8 +1477,6 @@ static int mov_write_header(AVFormatContext *s) av_set_pts_info(st, 64, 1, st->codec->sample_rate); track->sampleSize = (av_get_bits_per_sample(st->codec->codec_id) >> 3) * st->codec->channels; } - track->language = ff_mov_iso639_to_lang(st->language, mov->mode != MODE_MOV); - track->mode = mov->mode; } mov_write_mdat_tag(pb, mov);