summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorJohn Stebbins <stebbins@jetheaddev.com>2017-06-15 11:20:48 -0700
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>2017-07-04 15:49:34 -0400
commit95f3c85976ff79af6fd10ce3f7a90fcb054c3fc0 (patch)
treee154c4bad9b9b3257300375cbe5d9adde11257b8 /libavformat
parentd086e40459abe96a0765ee7f29fc297bf446135d (diff)
movenc: use correct tag list for AVOutputFormat.codec_tag
ff_mp4_obj_type contains the wrong type of tags for AVOutputFormat.codec_tag. AVOutputFormat.codec_tag is used to validate AVCodecParameters.codec_tag so needs to be the same type of tag. Creates new tag lists for mp4 and ismv. New tag lists support same list of codecs found in ff_mp4_obj_type. psp uses the same tag list as mp4 since these both use mp4_get_codec_tag to look up tags. (cherry picked from commit 713efb2c0d013a42be4051adb7cd90a7c2cbbb4f) Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/movenc.c42
1 files changed, 39 insertions, 3 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index ca389e3a97..25f317d52a 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -6488,6 +6488,41 @@ static int mov_check_bitstream(struct AVFormatContext *s, const AVPacket *pkt)
return ret;
}
+const AVCodecTag codec_mp4_tags[] = {
+ { AV_CODEC_ID_MPEG4 , MKTAG('m', 'p', '4', 'v') },
+ { AV_CODEC_ID_H264 , MKTAG('a', 'v', 'c', '1') },
+ { AV_CODEC_ID_HEVC , MKTAG('h', 'e', 'v', '1') },
+ { AV_CODEC_ID_MPEG2VIDEO , MKTAG('m', 'p', '4', 'v') },
+ { AV_CODEC_ID_MPEG1VIDEO , MKTAG('m', 'p', '4', 'v') },
+ { AV_CODEC_ID_MJPEG , MKTAG('m', 'p', '4', 'v') },
+ { AV_CODEC_ID_PNG , MKTAG('m', 'p', '4', 'v') },
+ { AV_CODEC_ID_JPEG2000 , MKTAG('m', 'p', '4', 'v') },
+ { AV_CODEC_ID_VC1 , MKTAG('v', 'c', '-', '1') },
+ { AV_CODEC_ID_DIRAC , MKTAG('d', 'r', 'a', 'c') },
+ { AV_CODEC_ID_TSCC2 , MKTAG('m', 'p', '4', 'v') },
+ { AV_CODEC_ID_VP9 , MKTAG('v', 'p', '0', '9') },
+ { AV_CODEC_ID_AAC , MKTAG('m', 'p', '4', 'a') },
+ { AV_CODEC_ID_MP4ALS , MKTAG('m', 'p', '4', 'a') },
+ { AV_CODEC_ID_MP3 , MKTAG('m', 'p', '4', 'a') },
+ { AV_CODEC_ID_MP2 , MKTAG('m', 'p', '4', 'a') },
+ { AV_CODEC_ID_AC3 , MKTAG('a', 'c', '-', '3') },
+ { AV_CODEC_ID_EAC3 , MKTAG('e', 'c', '-', '3') },
+ { AV_CODEC_ID_DTS , MKTAG('m', 'p', '4', 'a') },
+ { AV_CODEC_ID_FLAC , MKTAG('f', 'L', 'a', 'C') },
+ { AV_CODEC_ID_OPUS , MKTAG('O', 'p', 'u', 's') },
+ { AV_CODEC_ID_VORBIS , MKTAG('m', 'p', '4', 'a') },
+ { AV_CODEC_ID_QCELP , MKTAG('m', 'p', '4', 'a') },
+ { AV_CODEC_ID_EVRC , MKTAG('m', 'p', '4', 'a') },
+ { AV_CODEC_ID_DVD_SUBTITLE, MKTAG('m', 'p', '4', 's') },
+ { AV_CODEC_ID_MOV_TEXT , MKTAG('t', 'x', '3', 'g') },
+ { AV_CODEC_ID_NONE , 0 },
+};
+
+const AVCodecTag codec_ism_tags[] = {
+ { AV_CODEC_ID_WMAPRO , MKTAG('w', 'm', 'a', ' ') },
+ { AV_CODEC_ID_NONE , 0 },
+};
+
#if CONFIG_MOV_MUXER
MOV_CLASS(mov)
AVOutputFormat ff_mov_muxer = {
@@ -6548,7 +6583,7 @@ AVOutputFormat ff_mp4_muxer = {
.write_trailer = mov_write_trailer,
.deinit = mov_free,
.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
- .codec_tag = (const AVCodecTag* const []){ ff_mp4_obj_type, 0 },
+ .codec_tag = (const AVCodecTag* const []){ codec_mp4_tags, 0 },
.check_bitstream = mov_check_bitstream,
.priv_class = &mp4_muxer_class,
};
@@ -6569,7 +6604,7 @@ AVOutputFormat ff_psp_muxer = {
.write_trailer = mov_write_trailer,
.deinit = mov_free,
.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
- .codec_tag = (const AVCodecTag* const []){ ff_mp4_obj_type, 0 },
+ .codec_tag = (const AVCodecTag* const []){ codec_mp4_tags, 0 },
.check_bitstream = mov_check_bitstream,
.priv_class = &psp_muxer_class,
};
@@ -6631,7 +6666,8 @@ AVOutputFormat ff_ismv_muxer = {
.write_trailer = mov_write_trailer,
.deinit = mov_free,
.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
- .codec_tag = (const AVCodecTag* const []){ ff_mp4_obj_type, 0 },
+ .codec_tag = (const AVCodecTag* const []){
+ codec_mp4_tags, codec_ism_tags, 0 },
.check_bitstream = mov_check_bitstream,
.priv_class = &ismv_muxer_class,
};