X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fmatroska.c;h=fda96fb01439a1a7ef1478c28d913858f1a5260b;hb=d2119f624d392f53f80c3d36ffaadca23aef8a10;hp=c592fb0ce30d5eed58a1de0c8a633a16bc397d1b;hpb=e122a725fbe9bc5c1bb6047d6be8e0f504d660b9;p=ffmpeg diff --git a/libavformat/matroska.c b/libavformat/matroska.c index c592fb0ce30..fda96fb0143 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -35,7 +35,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_FLAC" , AV_CODEC_ID_FLAC}, {"A_MLP" , AV_CODEC_ID_MLP}, {"A_MPEG/L2" , AV_CODEC_ID_MP2}, - {"A_MPEG/L1" , AV_CODEC_ID_MP2}, + {"A_MPEG/L1" , AV_CODEC_ID_MP1}, {"A_MPEG/L3" , AV_CODEC_ID_MP3}, {"A_OPUS" , AV_CODEC_ID_OPUS}, {"A_OPUS/EXPERIMENTAL",AV_CODEC_ID_OPUS}, @@ -74,6 +74,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"S_VOBSUB" , AV_CODEC_ID_DVD_SUBTITLE}, {"S_DVBSUB" , AV_CODEC_ID_DVB_SUBTITLE}, {"S_HDMV/PGS" , AV_CODEC_ID_HDMV_PGS_SUBTITLE}, + {"S_HDMV/TEXTST" , AV_CODEC_ID_HDMV_TEXT_SUBTITLE}, {"V_DIRAC" , AV_CODEC_ID_DIRAC}, {"V_MJPEG" , AV_CODEC_ID_MJPEG}, @@ -150,26 +151,13 @@ const char * const ff_matroska_video_stereo_plane[MATROSKA_VIDEO_STEREO_PLANE_CO int ff_mkv_stereo3d_conv(AVStream *st, MatroskaVideoStereoModeType stereo_mode) { - AVPacketSideData *sd, *tmp; AVStereo3D *stereo; + int ret; stereo = av_stereo3d_alloc(); if (!stereo) return AVERROR(ENOMEM); - tmp = av_realloc_array(st->side_data, st->nb_side_data + 1, sizeof(*tmp)); - if (!tmp) { - av_freep(&stereo); - return AVERROR(ENOMEM); - } - st->side_data = tmp; - st->nb_side_data++; - - sd = &st->side_data[st->nb_side_data - 1]; - sd->type = AV_PKT_DATA_STEREO3D; - sd->data = (uint8_t *)stereo; - sd->size = sizeof(*stereo); - // note: the missing breaks are intentional switch (stereo_mode) { case MATROSKA_VIDEO_STEREOMODE_TYPE_MONO: @@ -207,5 +195,12 @@ int ff_mkv_stereo3d_conv(AVStream *st, MatroskaVideoStereoModeType stereo_mode) break; } + ret = av_stream_add_side_data(st, AV_PKT_DATA_STEREO3D, (uint8_t *)stereo, + sizeof(*stereo)); + if (ret < 0) { + av_freep(&stereo); + return ret; + } + return 0; }