diff options
-rw-r--r-- | contrib/ffmpeg/A01-encoding-tool-tag.patch | 40 | ||||
-rw-r--r-- | libhb/muxavformat.c | 5 |
2 files changed, 45 insertions, 0 deletions
diff --git a/contrib/ffmpeg/A01-encoding-tool-tag.patch b/contrib/ffmpeg/A01-encoding-tool-tag.patch new file mode 100644 index 000000000..8a9301150 --- /dev/null +++ b/contrib/ffmpeg/A01-encoding-tool-tag.patch @@ -0,0 +1,40 @@ +diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c +index cc645a5..3ab3139 100644 +--- a/libavformat/matroskaenc.c ++++ b/libavformat/matroskaenc.c +@@ -805,7 +805,8 @@ static int mkv_write_tag(AVFormatContext *s, AVDictionary *m, unsigned int eleme + end_ebml_master(s->pb, targets); + + while ((t = av_dict_get(m, "", t, AV_DICT_IGNORE_SUFFIX))) +- if (av_strcasecmp(t->key, "title")) ++ if (av_strcasecmp(t->key, "title") && ++ av_strcasecmp(t->key, "encoding_tool")) + mkv_write_simpletag(s->pb, t); + + end_ebml_master(s->pb, tag); +@@ -965,7 +966,10 @@ static int mkv_write_header(AVFormatContext *s) + segment_uid[i] = av_lfg_get(&lfg); + + put_ebml_string(pb, MATROSKA_ID_MUXINGAPP , LIBAVFORMAT_IDENT); +- put_ebml_string(pb, MATROSKA_ID_WRITINGAPP, LIBAVFORMAT_IDENT); ++ if ((tag = av_dict_get(s->metadata, "encoding_tool", NULL, 0))) ++ put_ebml_string(pb, MATROSKA_ID_WRITINGAPP, tag->value); ++ else ++ put_ebml_string(pb, MATROSKA_ID_WRITINGAPP, LIBAVFORMAT_IDENT); + put_ebml_binary(pb, MATROSKA_ID_SEGMENTUID, segment_uid, 16); + } + +diff --git a/libavformat/movenc.c b/libavformat/movenc.c +index 43a1647..5bc0ca3 100644 +--- a/libavformat/movenc.c ++++ b/libavformat/movenc.c +@@ -1858,7 +1858,8 @@ static int mov_write_ilst_tag(AVIOContext *pb, MOVMuxContext *mov, + mov_write_string_metadata(s, pb, "\251wrt", "composer" , 1); + mov_write_string_metadata(s, pb, "\251alb", "album" , 1); + mov_write_string_metadata(s, pb, "\251day", "date" , 1); +- mov_write_string_tag(pb, "\251too", LIBAVFORMAT_IDENT, 0, 1); ++ if (!mov_write_string_metadata(s, pb, "\251too", "encoding_tool", 1)) ++ mov_write_string_tag(pb, "\251too", LIBAVFORMAT_IDENT, 0, 1); + mov_write_string_metadata(s, pb, "\251cmt", "comment" , 1); + mov_write_string_metadata(s, pb, "\251gen", "genre" , 1); + mov_write_string_metadata(s, pb, "\251cpy", "copyright", 1); diff --git a/libhb/muxavformat.c b/libhb/muxavformat.c index a5ca6b5fa..d3c2cf56f 100644 --- a/libhb/muxavformat.c +++ b/libhb/muxavformat.c @@ -880,6 +880,11 @@ static int avformatInit( hb_mux_object_t * m ) } } + char tool_string[80]; + snprintf(tool_string, sizeof(tool_string), "HandBrake %s %i", + HB_PROJECT_VERSION, HB_PROJECT_BUILD); + av_dict_set(&m->oc->metadata, "encoding_tool", tool_string, 0); + AVDictionary * av_opts = NULL; if (job->mp4_optimize && (job->mux & HB_MUX_MASK_MP4)) av_dict_set( &av_opts, "movflags", "faststart", 0 ); |