From 2e83f5babed4cb5e1fd0e81534a7a3caa3086d7b Mon Sep 17 00:00:00 2001 From: Rodeo Date: Fri, 21 Mar 2014 00:34:04 +0000 Subject: Fix HEVC muxing in Matroska. Some patches haven't been backported to libav v10_beta2 yet. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6125 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- contrib/ffmpeg/A01-hevc-matroska.patch | 45 ++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 contrib/ffmpeg/A01-hevc-matroska.patch diff --git a/contrib/ffmpeg/A01-hevc-matroska.patch b/contrib/ffmpeg/A01-hevc-matroska.patch new file mode 100644 index 000000000..1c22d6cc6 --- /dev/null +++ b/contrib/ffmpeg/A01-hevc-matroska.patch @@ -0,0 +1,45 @@ +diff --git a/libavformat/Makefile b/libavformat/Makefile +index a3cd504..5694314 100644 +--- a/libavformat/Makefile ++++ b/libavformat/Makefile +@@ -168,7 +168,7 @@ OBJS-$(CONFIG_M4V_MUXER) += rawenc.o + OBJS-$(CONFIG_MATROSKA_DEMUXER) += matroskadec.o matroska.o \ + isom.o rmsipr.o + OBJS-$(CONFIG_MATROSKA_MUXER) += matroskaenc.o matroska.o \ +- isom.o avc.o \ ++ isom.o avc.o hevc.o \ + flacenc_header.o avlanguage.o wv.o + OBJS-$(CONFIG_MD5_MUXER) += md5enc.o + OBJS-$(CONFIG_MJPEG_DEMUXER) += rawdec.o +diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c +index 3ab3139..fad1ec4 100644 +--- a/libavformat/matroskaenc.c ++++ b/libavformat/matroskaenc.c +@@ -22,6 +22,7 @@ + #include + + #include "avc.h" ++#include "hevc.h" + #include "avformat.h" + #include "avlanguage.h" + #include "flacenc.h" +@@ -500,6 +501,8 @@ static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb, AVCodecCo + ret = put_wv_codecpriv(dyn_cp, codec); + else if (codec->codec_id == AV_CODEC_ID_H264) + ret = ff_isom_write_avcc(dyn_cp, codec->extradata, codec->extradata_size); ++ else if (codec->codec_id == AV_CODEC_ID_HEVC) ++ ret = ff_isom_write_hvcc(dyn_cp, codec->extradata, codec->extradata_size, 0); + else if (codec->codec_id == AV_CODEC_ID_ALAC) { + if (codec->extradata_size < 36) { + av_log(s, AV_LOG_ERROR, +@@ -1164,6 +1167,10 @@ static void mkv_write_block(AVFormatContext *s, AVIOContext *pb, + if (codec->codec_id == AV_CODEC_ID_H264 && codec->extradata_size > 0 && + (AV_RB24(codec->extradata) == 1 || AV_RB32(codec->extradata) == 1)) + ff_avc_parse_nal_units_buf(pkt->data, &data, &size); ++ else if (codec->codec_id == AV_CODEC_ID_HEVC && codec->extradata_size > 6 && ++ (AV_RB24(codec->extradata) == 1 || AV_RB32(codec->extradata) == 1)) ++ /* extradata is Annex B, assume the bitstream is too and convert it */ ++ ff_hevc_annexb2mp4_buf(pkt->data, &data, &size, 0, NULL); + else if (codec->codec_id == AV_CODEC_ID_WAVPACK) { + int ret = mkv_strip_wavpack(pkt->data, &data, &size); + if (ret < 0) { -- cgit v1.2.3