This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 4641be96e5c97c3a91bba0980cb7377586156195 Author: Romain Beauxis <[email protected]> AuthorDate: Wed May 13 20:57:03 2026 -0700 Commit: Romain Beauxis <[email protected]> CommitDate: Sat Jul 11 17:14:43 2026 +0000 fftools/ffmpeg_mux_init.c: delete encoder-specific metadata when re-encoding. --- doc/ffmpeg.texi | 40 +++++ fftools/ffmpeg.h | 1 + fftools/ffmpeg_mux_init.c | 190 +++++++++++++++++++++ fftools/ffmpeg_opt.c | 3 + tests/fate/id3v2.mak | 21 +++ tests/fate/matroska.mak | 23 +++ tests/fate/mov.mak | 5 + tests/ref/fate/caf-alac-remux | 12 +- tests/ref/fate/cover-art-flac-remux | 17 +- tests/ref/fate/cover-art-mp3-id3v2-remux | 4 +- tests/ref/fate/enhanced-flv-hevc | 4 +- tests/ref/fate/enhanced-flv-multitrack | 4 +- tests/ref/fate/generic-tags-remux-asf | 7 +- tests/ref/fate/generic-tags-remux-riff | 5 +- tests/ref/fate/generic-tags-remux-vorbiscomment | 7 +- tests/ref/fate/h264-bsf-redundant-pps-side-data | 4 +- tests/ref/fate/h264-bsf-redundant-pps-side-data2 | 4 +- tests/ref/fate/id3v2-reenc-delete-metadata | 8 +- tests/ref/fate/id3v2-reenc-delete-metadata-keep | 6 + .../fate/id3v2-reenc-delete-metadata-keep-format | 6 + .../fate/id3v2-reenc-delete-metadata-keep-stream | 5 + .../fate/id3v2-reenc-delete-metadata-map-metadata | 8 +- tests/ref/fate/matroska-alac-remux | 13 +- tests/ref/fate/matroska-crop | 4 +- tests/ref/fate/matroska-dovi-hvce-mp4-to-mkv | 4 +- tests/ref/fate/matroska-dovi-write-config7 | 4 +- tests/ref/fate/matroska-dovi-write-config8 | 4 +- tests/ref/fate/matroska-non-rotation-displaymatrix | 4 +- tests/ref/fate/matroska-reenc-chapter-nofilter | 4 +- .../ref/fate/matroska-reenc-delete-audio-metadata | 12 ++ tests/ref/fate/matroska-reenc-delete-metadata | 11 +- .../matroska-reenc-delete-metadata-filter-output | 11 +- tests/ref/fate/matroska-reenc-delete-metadata-keep | 13 ++ ...roska-reenc-delete-metadata-keep-prefix-nomatch | 12 ++ ...atroska-reenc-delete-metadata-keep-stream-video | 13 ++ ...-reenc-delete-metadata-keep-stream-video-suffix | 13 ++ ...troska-reenc-delete-metadata-keep-stream-video1 | 12 ++ .../fate/matroska-reenc-delete-metadata-spec-scope | 11 +- ...ata => mov-cover-reenc-keeps-audio-format-tags} | 15 +- tests/ref/fate/mov-reenc-delete-format-metadata | 20 +-- tests/ref/fate/mov-reenc-delete-stream-metadata | 5 +- .../mov-reenc-delete-stream-metadata-global-tag | 5 +- tests/ref/fate/rgb24-mkv | 4 +- 43 files changed, 450 insertions(+), 128 deletions(-) diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi index 882503142e..ad235b78c4 100644 --- a/doc/ffmpeg.texi +++ b/doc/ffmpeg.texi @@ -920,6 +920,46 @@ To set the language of the first audio stream: ffmpeg -i INPUT -metadata:s:a:0 language=eng OUTPUT @end example +@item -keep_metadata[:@var{metadata_specifier}] @var{key} (@emph{output,per-metadata}) +When re-encoding a stream, certain metadata keys that are likely to become stale +(such as @code{iTunSMPB} or @code{encoded_by}) are automatically discarded. +This option prevents a specific key from being discarded, preserving its original +value from the input. + +Without a specifier, the key is preserved in all metadata contexts (format and +streams). Use @code{g} to restrict to format (global) metadata, or @code{s} with +an optional stream specifier to restrict to matching streams only. + +For example, to keep @code{iTunSMPB} in format metadata only when re-encoding: +@example +ffmpeg -i in.mp3 -keep_metadata:g iTunSMPB out.mp3 +@end example + +To keep @code{NUMBER_OF_BYTES} only for the video stream: +@example +ffmpeg -i in.mkv -keep_metadata:s:v NUMBER_OF_BYTES out.mkv +@end example + +Some keys are stored in the metadata with a suffix (e.g. +@code{NUMBER_OF_BYTES-eng}). Specifying the unsuffixed family name (e.g. +@code{NUMBER_OF_BYTES}) keeps all variants. To keep only a specific one, +specify the full key explicitly: +@example +ffmpeg -i in.mkv -keep_metadata:s:v NUMBER_OF_BYTES-eng out.mkv +@end example + +Some (such as @code{major_brand}, @code{minor_version}, and +@code{compatible_brands}) are always removed regardless of re-encoding, because +they describe the source container and are meaningless in the output. +@code{-keep_metadata} applies to those keys even when stream-copying. + +Re-encoding-only keys (such as encoder tags and Matroska stream statistics) are +removed from a stream's metadata only when that stream is being re-encoded, and +from format metadata only when at least one audio or video stream is re-encoded. + +Only format and stream metadata are filtered. Chapter and program metadata +are never modified by this mechanism. + @item -disposition[:stream_specifier] @var{value} (@emph{output,per-stream}) Sets the disposition flags for a stream. diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index c44aaf6032..a45d004fdf 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -193,6 +193,7 @@ typedef struct OptionsContext { AVDictionary *streamid; SpecifierOptList metadata; + SpecifierOptList keep_metadata; SpecifierOptList max_frames; SpecifierOptList bitstream_filters; SpecifierOptList codec_tags; diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c index 79082f3018..7a238b10ff 100644 --- a/fftools/ffmpeg_mux_init.c +++ b/fftools/ffmpeg_mux_init.c @@ -2962,6 +2962,150 @@ static int copy_metadata(Muxer *mux, AVFormatContext *ic, return 0; } +#define REENC_MASK(type) (1u << (type)) +#define REENC_AUDIO_ONLY REENC_MASK(AVMEDIA_TYPE_AUDIO) +#define REENC_VIDEO_ONLY REENC_MASK(AVMEDIA_TYPE_VIDEO) +#define REENC_ANY (REENC_AUDIO_ONLY | REENC_VIDEO_ONLY) + +static const struct { + const char *key; + int flags; + unsigned reenc_mask; /* 0 = always delete; non-zero = bit-mask of + * REENC_* values whose re-encoding triggers + * deletion of this key */ +} reenc_delete_keys[] = { + // Note: "encoder" is intentionally absent — set_encoder_id() stamps it + // after copy_meta() runs, so it always reflects the current encoder. + + // iTunes gapless playback: encoder-specific sample counts and padding; + // gapless_playback is the M4A/MOV equivalent of iTunPGAP + { "iTunPGAP", 0, REENC_AUDIO_ONLY }, + { "iTunSMPB", 0, REENC_AUDIO_ONLY }, + { "gapless_playback", 0, REENC_AUDIO_ONLY }, + // iTunes Sound Check: peak amplitude computed from the original waveform + { "iTunNORM", 0, REENC_AUDIO_ONLY }, + // encoding provenance: describe the original encoder, not the new one + { "encoded_by", 0, REENC_ANY }, + { "encoding_tool", 0, REENC_ANY }, + // MOV/MP4 stream: vendor 4CC identifies the original encoder + { "vendor_id", 0, REENC_ANY }, + // Matroska stream stats written by mkvmerge; all are invalidated by re-encoding + { "BPS", AV_DICT_IGNORE_SUFFIX, REENC_ANY }, + { "DURATION", AV_DICT_IGNORE_SUFFIX, REENC_ANY }, + { "NUMBER_OF_BYTES", AV_DICT_IGNORE_SUFFIX, REENC_ANY }, + { "NUMBER_OF_FRAMES", AV_DICT_IGNORE_SUFFIX, REENC_ANY }, + { "_STATISTICS_TAGS", AV_DICT_IGNORE_SUFFIX, REENC_ANY }, + { "_STATISTICS_WRITING_APP", AV_DICT_IGNORE_SUFFIX, REENC_ANY }, + { "_STATISTICS_WRITING_DATE_UTC", AV_DICT_IGNORE_SUFFIX, REENC_ANY }, + + // MOV/MP4: source container brand written by the demuxer; muxer ignores + // these keys and writes its own ftyp, so they always describe the source file + { "major_brand", 0, 0 }, + { "minor_version", 0, 0 }, + { "compatible_brands", 0, 0 }, + { NULL } +}; + +static int meta_spec_matches(void *log_ctx, AVFormatContext *oc, AVStream *st, + const char *spec) +{ + char type; + int index = 0; + const char *stream_spec = NULL; + + if (parse_meta_type(log_ctx, spec, &type, &index, &stream_spec) < 0) + return 0; + + if (*spec) { + if (type == 'g' && st) + return 0; + if (type == 's') { + int ret; + if (!st) + return 0; + ret = check_stream_specifier(oc, st, stream_spec); + return ret < 0 ? ret : ret > 0; + } + if (type == 'c' || type == 'p') + return 0; + } + return 1; +} + +static int reenc_delete_metadata_key(const OptionsContext *o, void *log_ctx, + AVFormatContext *oc, AVStream *st, + const char *family, const char *key, int flags) +{ + for (int i = 0; i < o->keep_metadata.nb_opt; i++) { + int ret = meta_spec_matches(log_ctx, oc, st, o->keep_metadata.opt[i].specifier); + if (ret < 0) + return ret; + if (!ret) + continue; + const char *keep = o->keep_metadata.opt[i].u.str; + if (flags & AV_DICT_IGNORE_SUFFIX) { + /* accept the unsuffixed family name (e.g. NUMBER_OF_BYTES keeps + * NUMBER_OF_BYTES-eng) or the exact matched key; an arbitrary + * prefix like NUMBER does not match NUMBER_OF_BYTES-eng */ + if (!strcmp(keep, family) || !strcmp(keep, key)) + return 0; + } else { + if (!strcmp(key, keep)) + return 0; + } + } + for (int i = 0; i < o->metadata.nb_opt; i++) { + int ret; + /* plain -metadata (empty specifier) applies to global metadata only, + * matching of_add_metadata(); don't let it suppress stream-level pruning */ + if (!*o->metadata.opt[i].specifier && st) + continue; + ret = meta_spec_matches(log_ctx, oc, st, o->metadata.opt[i].specifier); + if (ret < 0) + return ret; + if (!ret) + continue; + size_t klen = strcspn(o->metadata.opt[i].u.str, "="); + if (!strncmp(key, o->metadata.opt[i].u.str, klen) && key[klen] == '\0') + return 0; + } + return 1; +} + +static int reenc_delete_stale_metadata(const OptionsContext *o, void *log_ctx, + AVFormatContext *oc, AVStream *st, + AVDictionary **dict, const char *kind, + unsigned reenc_mask) +{ + for (int i = 0; reenc_delete_keys[i].key; i++) { + const char *key = reenc_delete_keys[i].key; + int flags = reenc_delete_keys[i].flags; + const AVDictionaryEntry *e; + int ret; + + if (reenc_delete_keys[i].reenc_mask && !(reenc_delete_keys[i].reenc_mask & reenc_mask)) + continue; + + e = NULL; + while ((e = av_dict_get(*dict, key, e, flags | AV_DICT_MATCH_CASE))) { + ret = reenc_delete_metadata_key(o, log_ctx, oc, st, key, e->key, flags); + if (ret < 0) + return ret; + if (!ret) + continue; + if (reenc_mask & reenc_delete_keys[i].reenc_mask) + av_log(log_ctx, AV_LOG_WARNING, + "Discarding %s metadata '%s' because %s stream is being " + "re-encoded. Use '-keep_metadata %s' to keep it.\n", + kind, e->key, + !strcmp(kind, "stream") ? "the" : "a", e->key); + av_dict_set(dict, e->key, NULL, 0); + e = NULL; + } + } + return 0; +} + static int copy_meta(Muxer *mux, const OptionsContext *o) { OutputFile *of = &mux->of; @@ -3021,6 +3165,42 @@ static int copy_meta(Muxer *mux, const OptionsContext *o) av_dict_set(&oc->metadata, "company_name", NULL, 0); av_dict_set(&oc->metadata, "product_name", NULL, 0); av_dict_set(&oc->metadata, "product_version", NULL, 0); + + } + for (int i = 0; i < o->keep_metadata.nb_opt; i++) { + char type; + int index = 0; + const char *stream_spec = NULL; + const char *spec = o->keep_metadata.opt[i].specifier; + ret = parse_meta_type(mux, spec, &type, &index, &stream_spec); + if (ret < 0) + return ret; + if (type == 'c' || type == 'p') { + av_log(mux, AV_LOG_WARNING, + "-keep_metadata:%s: chapter and program metadata filtering " + "is not supported and will be ignored.\n", spec); + } else if (type == 's') { + for (int j = 0; j < oc->nb_streams; j++) { + ret = check_stream_specifier(oc, oc->streams[j], stream_spec); + if (ret < 0) + return ret; + } + } + } + + /* reenc_mask keys only apply when an audio/video stream is re-encoded; + * subtitle/attachment re-encodes do not affect format-level tags. + * Runs unconditionally so -map_metadata does not bypass the pruning. */ + { + unsigned reenc_mask = 0; + for (int i = 0; i < of->nb_streams; i++) { + OutputStream *ost = of->streams[i]; + if (ost->enc) + reenc_mask |= REENC_MASK(ost->st->codecpar->codec_type); + } + ret = reenc_delete_stale_metadata(o, mux, oc, NULL, &oc->metadata, "format", reenc_mask); + if (ret < 0) + return ret; } if (!metadata_streams_manual) for (int i = 0; i < of->nb_streams; i++) { @@ -3030,6 +3210,16 @@ static int copy_meta(Muxer *mux, const OptionsContext *o) continue; av_dict_copy(&ost->st->metadata, ost->ist->st->metadata, AV_DICT_DONT_OVERWRITE); } + /* runs unconditionally so -map_metadata does not bypass the pruning; + * applies to all output streams, including filter outputs without ost->ist */ + for (int i = 0; i < of->nb_streams; i++) { + OutputStream *ost = of->streams[i]; + + ret = reenc_delete_stale_metadata(o, ost, oc, ost->st, &ost->st->metadata, "stream", + ost->enc ? REENC_MASK(ost->st->codecpar->codec_type) : 0); + if (ret < 0) + return ret; + } return 0; } diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 2c362c64af..4e05e2c56b 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -1631,6 +1631,9 @@ const OptionDef options[] = { { "metadata", OPT_TYPE_STRING, OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(metadata) }, "add metadata", "key=value" }, + { "keep_metadata", OPT_TYPE_STRING, OPT_SPEC | OPT_OUTPUT, + { .off = OFFSET(keep_metadata) }, + "keep metadata key from input when re-encoding", "key" }, { "program", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, { .off = OFFSET(program) }, "add program with specified streams", "title=string:st=number..." }, diff --git a/tests/fate/id3v2.mak b/tests/fate/id3v2.mak index 7cf38b1eb2..8835211f01 100644 --- a/tests/fate/id3v2.mak +++ b/tests/fate/id3v2.mak @@ -5,6 +5,16 @@ FATE_ID3V2_FFMPEG-$(CONFIG_MP3_DEMUXER) += fate-id3v2-invalid-tags fate-id3v2-invalid-tags: CMD = run $(FFMPEG) -nostdin -hide_banner -i $(TARGET_SAMPLES)/id3v2/invalid-tags.mp3 -f null - || true fate-id3v2-invalid-tags: CMP = null +FATE_ID3V2_FFMPEG-$(CONFIG_MP3_DEMUXER) += fate-id3v2-keep-metadata-invalid-type +fate-id3v2-keep-metadata-invalid-type: CMD = run $(FFMPEG) -nostdin -hide_banner -i $(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 -c copy -keep_metadata:x vendor_id -f null - ; true +fate-id3v2-keep-metadata-invalid-type: CMP = grep +fate-id3v2-keep-metadata-invalid-type: REF = Invalid metadata type x + +FATE_ID3V2_FFMPEG-$(CONFIG_MP3_DEMUXER) += fate-id3v2-keep-metadata-invalid-stream-spec +fate-id3v2-keep-metadata-invalid-stream-spec: CMD = run $(FFMPEG) -nostdin -hide_banner -i $(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 -c copy -keep_metadata:s:bogus vendor_id -f null - ; true +fate-id3v2-keep-metadata-invalid-stream-spec: CMP = grep +fate-id3v2-keep-metadata-invalid-stream-spec: REF = Trailing garbage at the end of a stream specifier: bogus + FATE_ID3V2_FFMPEG_FFPROBE-$(call REMUX, MP3) += fate-id3v2-priv-remux fate-id3v2-priv-remux: CMD = transcode mp3 $(TARGET_SAMPLES)/id3v2/id3v2_priv.mp3 mp3 "-c copy" "-c copy -t 0.1" "-show_entries format_tags" @@ -25,10 +35,21 @@ fate-id3v2-txxx: CMD = run_with_temp "$(FFMPEG) -nostdin -hide_banner -loglevel FATE_ID3V2_FFMPEG_FFPROBE-$(call ENCDEC, AAC MP3, NUT) += fate-id3v2-reenc-delete-metadata fate-id3v2-reenc-delete-metadata: CMD = transcode mp3 $(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 nut "-c:a aac -bitexact -t 0.1" "-c copy -t 0.1" "-show_entries format_tags" "" "" "" null +FATE_ID3V2_FFMPEG_FFPROBE-$(call ENCDEC, AAC MP3, NUT) += fate-id3v2-reenc-delete-metadata-keep +fate-id3v2-reenc-delete-metadata-keep: CMD = transcode mp3 $(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 nut "-c:a aac -bitexact -keep_metadata iTunSMPB -t 0.1" "-c copy -t 0.1" "-show_entries format_tags" "" "" "" null + # -map_metadata must not bypass stale metadata pruning FATE_ID3V2_FFMPEG_FFPROBE-$(call ENCDEC, AAC MP3, NUT) += fate-id3v2-reenc-delete-metadata-map-metadata fate-id3v2-reenc-delete-metadata-map-metadata: CMD = transcode mp3 $(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 nut "-c:a aac -bitexact -map_metadata 0 -t 0.1" "-c copy -t 0.1" "-show_entries format_tags" "" "" "" null +# :g specifier targets format metadata — iTunSMPB lives there, so it should be kept +FATE_ID3V2_FFMPEG_FFPROBE-$(call ENCDEC, AAC MP3, NUT) += fate-id3v2-reenc-delete-metadata-keep-format +fate-id3v2-reenc-delete-metadata-keep-format: CMD = transcode mp3 $(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 nut "-c:a aac -bitexact -keep_metadata:g iTunSMPB -t 0.1" "-c copy -t 0.1" "-show_entries format_tags" "" "" "" null + +# :s:a specifier targets stream metadata — iTunSMPB is format-level, so it should still be deleted +FATE_ID3V2_FFMPEG_FFPROBE-$(call ENCDEC, AAC MP3, NUT) += fate-id3v2-reenc-delete-metadata-keep-stream +fate-id3v2-reenc-delete-metadata-keep-stream: CMD = transcode mp3 $(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 nut "-c:a aac -bitexact -keep_metadata:s:a iTunSMPB -t 0.1" "-c copy -t 0.1" "-show_entries format_tags" "" "" "" null + FATE_ID3V2_FFMPEG_FFPROBE-$(call REMUX, MP3) += fate-id3v2-reenc-remux-keep fate-id3v2-reenc-remux-keep: CMD = transcode mp3 $(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 mp3 "-c copy" "-c copy -t 0.1" "-show_entries format_tags" "" "" "" null diff --git a/tests/fate/matroska.mak b/tests/fate/matroska.mak index b68f791c5e..d350b13d8b 100644 --- a/tests/fate/matroska.mak +++ b/tests/fate/matroska.mak @@ -300,6 +300,29 @@ FATE_MATROSKA_FFPROBE-$(call ALLYES, MATROSKA_DEMUXER HEVC_DECODER) += fate-matr FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO HEVC, NUT MATROSKA, SCALE_FILTER) += fate-matroska-reenc-delete-metadata fate-matroska-reenc-delete-metadata: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/hdr10tags-both.mkv nut "-map 0:v:0 -vf scale=iw:ih -c:v mpeg2video -bitexact" "-c copy -t 0.1" "-show_entries format_tags:stream_tags" "" "" "" null +FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO HEVC, NUT MATROSKA, SCALE_FILTER) += fate-matroska-reenc-delete-metadata-keep +fate-matroska-reenc-delete-metadata-keep: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/hdr10tags-both.mkv nut "-map 0:v:0 -vf scale=iw:ih -c:v mpeg2video -bitexact -keep_metadata NUMBER_OF_BYTES" "-c copy -t 0.1" "-show_entries format_tags:stream_tags" "" "" "" null + +# :s:a:0 specifier — no audio stream in output, so NUMBER_OF_BYTES should still be deleted +FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO HEVC, NUT MATROSKA, SCALE_FILTER) += fate-matroska-reenc-delete-audio-metadata +fate-matroska-reenc-delete-audio-metadata: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/hdr10tags-both.mkv nut "-map 0:v:0 -vf scale=iw:ih -c:v mpeg2video -bitexact -keep_metadata:s:a:0 NUMBER_OF_BYTES" "-c copy -t 0.1" "-show_entries format_tags:stream_tags" "" "" "" null + +# :s:v specifier matches the re-encoded video stream — NUMBER_OF_BYTES should be kept +FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO HEVC, NUT MATROSKA, SCALE_FILTER) += fate-matroska-reenc-delete-metadata-keep-stream-video +fate-matroska-reenc-delete-metadata-keep-stream-video: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/hdr10tags-both.mkv nut "-map 0:v:0 -vf scale=iw:ih -c:v mpeg2video -bitexact -keep_metadata:s:v NUMBER_OF_BYTES" "-c copy -t 0.1" "-show_entries format_tags:stream_tags" "" "" "" null + +# suffixed key (NUMBER_OF_BYTES-eng) as seen in metadata output must also work as a keep arg +FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO HEVC, NUT MATROSKA, SCALE_FILTER) += fate-matroska-reenc-delete-metadata-keep-stream-video-suffix +fate-matroska-reenc-delete-metadata-keep-stream-video-suffix: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/hdr10tags-both.mkv nut "-map 0:v:0 -vf scale=iw:ih -c:v mpeg2video -bitexact -keep_metadata:s:v NUMBER_OF_BYTES-eng" "-c copy -t 0.1" "-show_entries format_tags:stream_tags" "" "" "" null + +# an arbitrary prefix of a family name (NUMBER) must not match NUMBER_OF_BYTES or NUMBER_OF_BYTES-eng +FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO HEVC, NUT MATROSKA, SCALE_FILTER) += fate-matroska-reenc-delete-metadata-keep-prefix-nomatch +fate-matroska-reenc-delete-metadata-keep-prefix-nomatch: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/hdr10tags-both.mkv nut "-map 0:v:0 -vf scale=iw:ih -c:v mpeg2video -bitexact -keep_metadata:s:v NUMBER" "-c copy -t 0.1" "-show_entries format_tags:stream_tags" "" "" "" null + +# :s:v:1 specifier — video index 1 does not exist, so NUMBER_OF_BYTES should be deleted +FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO HEVC, NUT MATROSKA, SCALE_FILTER) += fate-matroska-reenc-delete-metadata-keep-stream-video1 +fate-matroska-reenc-delete-metadata-keep-stream-video1: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/hdr10tags-both.mkv nut "-map 0:v:0 -vf scale=iw:ih -c:v mpeg2video -bitexact -keep_metadata:s:v:1 NUMBER_OF_BYTES" "-c copy -t 0.1" "-show_entries format_tags:stream_tags" "" "" "" null + # -metadata:s:a:0 specifier must not suppress deletion on a non-matching (video) stream FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO HEVC, NUT MATROSKA, SCALE_FILTER) += fate-matroska-reenc-delete-metadata-spec-scope fate-matroska-reenc-delete-metadata-spec-scope: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/hdr10tags-both.mkv nut "-map 0:v:0 -vf scale=iw:ih -c:v mpeg2video -bitexact -metadata:s:a:0 NUMBER_OF_BYTES=custom" "-c copy -t 0.1" "-show_entries format_tags:stream_tags" "" "" "" null diff --git a/tests/fate/mov.mak b/tests/fate/mov.mak index 62b47baa4d..30f7cf665c 100644 --- a/tests/fate/mov.mak +++ b/tests/fate/mov.mak @@ -385,6 +385,11 @@ fate-mov-mp4-edst-remainder: CMD = stream_remux mov $(TARGET_SAMPLES)/audiomatch FATE_MOV_FFMPEG_FFPROBE-$(call ENCDEC, AAC AAC, NUT MOV) += fate-mov-reenc-delete-format-metadata fate-mov-reenc-delete-format-metadata: CMD = transcode mov $(TARGET_SAMPLES)/cover_art/Owner-iTunes_9.0.3.15.m4a nut "-map 0:a:0 -c:a aac -bitexact -t 0.1" "-c copy -t 0.1" "-show_entries format_tags" "" "" "" null +# audio-only format tags (gapless_playback, iTunSMPB, iTunNORM) must survive when +# only the cover-art video stream is re-encoded and the audio is stream-copied +FATE_MOV_FFMPEG_FFPROBE-$(call ENCDEC, PNG, NUT MOV) += fate-mov-cover-reenc-keeps-audio-format-tags +fate-mov-cover-reenc-keeps-audio-format-tags: CMD = transcode mov $(TARGET_SAMPLES)/cover_art/Owner-iTunes_9.0.3.15.m4a nut "-map 0:a:0 -c:a copy -map 0:v:0 -filter:v scale -c:v png -bitexact -t 0.1" "-c copy -t 0.1" "-show_entries format_tags" "" "" "" null + # stream-level branding: vendor_id should be deleted on re-encode FATE_MOV_FFMPEG_FFPROBE-$(call ENCDEC, FLAC PCM_S16BE, NUT MOV) += fate-mov-reenc-delete-stream-metadata fate-mov-reenc-delete-stream-metadata: CMD = transcode mov $(TARGET_SAMPLES)/qt-surge-suite/surge-2-16-B-twos.mov nut "-c:a flac -bitexact -t 0.1" "-c copy -t 0.1" "-show_entries stream_tags" "" "" "" null diff --git a/tests/ref/fate/caf-alac-remux b/tests/ref/fate/caf-alac-remux index 63987239db..a77dedf0dd 100644 --- a/tests/ref/fate/caf-alac-remux +++ b/tests/ref/fate/caf-alac-remux @@ -1,5 +1,5 @@ -1f3ac6e905aa6bfee0d35c19a2400c26 *tests/data/fate/caf-alac-remux.caf -1292684 tests/data/fate/caf-alac-remux.caf +1aaad1d0c4a2fe9980bdb3625d74c8b4 *tests/data/fate/caf-alac-remux.caf +1292637 tests/data/fate/caf-alac-remux.caf #extradata 0: 36, 0x562b05d8 #tb 0: 1/44100 #media_type 0: audio @@ -10,17 +10,15 @@ 0, 4096, 4096, 4096, 6701, 0xa9ddc14e 0, 8192, 8192, 4096, 6639, 0x3ccda8d6 [FORMAT] +TAG:album=OpenMusic TAG:track=5/13 -TAG:minor_version=0 -TAG:compatible_brands=M4A mp42isom +TAG:genre=Rock TAG:disc=1 TAG:title=Inside TAG:compilation=1 TAG:gapless_playback=0 -TAG:genre=Rock +TAG:album_artist=Maxwell Strait TAG:Encoding Params=vers TAG:iTunNORM= 000004DF 000004C2 00001E64 00001AB3 00000FB9 00000FB9 00006480 00006480 00000FB9 00000B52 TAG:artist=Maxwell Strait -TAG:album_artist=Maxwell Strait -TAG:album=OpenMusic [/FORMAT] diff --git a/tests/ref/fate/cover-art-flac-remux b/tests/ref/fate/cover-art-flac-remux index 7badb2544d..fad8a94272 100644 --- a/tests/ref/fate/cover-art-flac-remux +++ b/tests/ref/fate/cover-art-flac-remux @@ -1,5 +1,5 @@ -f41881b70a18d8405c1dd43ee8502349 *tests/data/fate/cover-art-flac-remux.flac -964331 tests/data/fate/cover-art-flac-remux.flac +61963e1df31cfa046f99d971a465d364 *tests/data/fate/cover-art-flac-remux.flac +964133 tests/data/fate/cover-art-flac-remux.flac #extradata 0: 34, 0x8f1f0acf #tb 0: 1/44100 #media_type 0: audio @@ -92,18 +92,13 @@ TAG:comment=Publisher/Studio logotype TAG:title=White King Granulated Soap [/STREAM] [FORMAT] -TAG:major_brand=M4A -TAG:minor_version=0 -TAG:compatible_brands=M4A mp42isom +TAG:album=OpenMusic +TAG:album_artist=Maxwell Strait +TAG:artist=Maxwell Strait TAG:disc=1 TAG:title=Inside TAG:compilation=1 -TAG:gapless_playback=0 TAG:track=5/13 -TAG:Encoding Params=vers -TAG:iTunNORM= 000004DF 000004C2 00001E64 00001AB3 00000FB9 00000FB9 00006480 00006480 00000FB9 00000B52 -TAG:artist=Maxwell Strait -TAG:album_artist=Maxwell Strait -TAG:album=OpenMusic TAG:genre=Rock +TAG:Encoding Params=vers [/FORMAT] diff --git a/tests/ref/fate/cover-art-mp3-id3v2-remux b/tests/ref/fate/cover-art-mp3-id3v2-remux index 42fe704470..ddc47c4988 100644 --- a/tests/ref/fate/cover-art-mp3-id3v2-remux +++ b/tests/ref/fate/cover-art-mp3-id3v2-remux @@ -1,5 +1,5 @@ -070ed1d95dc1bd365d68ae795966589f *tests/data/fate/cover-art-mp3-id3v2-remux.mp3 -346509 tests/data/fate/cover-art-mp3-id3v2-remux.mp3 +3a20f15563ed1d277f54562743f615de *tests/data/fate/cover-art-mp3-id3v2-remux.mp3 +346486 tests/data/fate/cover-art-mp3-id3v2-remux.mp3 #tb 0: 1/14112000 #media_type 0: audio #codec_id 0: mp3 diff --git a/tests/ref/fate/enhanced-flv-hevc b/tests/ref/fate/enhanced-flv-hevc index 9e0af51b2a..80cedbcff3 100644 --- a/tests/ref/fate/enhanced-flv-hevc +++ b/tests/ref/fate/enhanced-flv-hevc @@ -1,5 +1,5 @@ -81199f98b1210eada2e7ff7ba11afd8c *tests/data/fate/enhanced-flv-hevc.flv -3603038 tests/data/fate/enhanced-flv-hevc.flv +6d8f2f8590bbcf9bd998b4420155412b *tests/data/fate/enhanced-flv-hevc.flv +3602973 tests/data/fate/enhanced-flv-hevc.flv #extradata 0: 551, 0xb1ddcd66 #extradata 1: 2, 0x00340022 #tb 0: 1/1000 diff --git a/tests/ref/fate/enhanced-flv-multitrack b/tests/ref/fate/enhanced-flv-multitrack index c825327ac8..71e0b54ab2 100644 --- a/tests/ref/fate/enhanced-flv-multitrack +++ b/tests/ref/fate/enhanced-flv-multitrack @@ -1,5 +1,5 @@ -fd79a2d2690c878a3b06cc66c4441e69 *tests/data/fate/enhanced-flv-multitrack.flv -4697015 tests/data/fate/enhanced-flv-multitrack.flv +347f5ababa03ba1e3ef62209f2355220 *tests/data/fate/enhanced-flv-multitrack.flv +4696936 tests/data/fate/enhanced-flv-multitrack.flv #extradata 0: 46, 0x6fed1203 #extradata 1: 26, 0x5e13070a #extradata 2: 12, 0x044200af diff --git a/tests/ref/fate/generic-tags-remux-asf b/tests/ref/fate/generic-tags-remux-asf index 54420ed21a..a9d6b39559 100644 --- a/tests/ref/fate/generic-tags-remux-asf +++ b/tests/ref/fate/generic-tags-remux-asf @@ -1,5 +1,5 @@ -b80387bd80ec592cb99df5de8ef60732 *tests/data/fate/generic-tags-remux-asf.asf -20596 tests/data/fate/generic-tags-remux-asf.asf +e4420ac5019d13273b1d7c068f717705 *tests/data/fate/generic-tags-remux-asf.asf +20556 tests/data/fate/generic-tags-remux-asf.asf #extradata 0: 4, 0x00020001 #tb 0: 1/1000 #media_type 0: audio @@ -40,11 +40,10 @@ TAG:copyright=2011 M83 Recording Inc TAG:date=2011-10-17 TAG:disc=1 TAG:disc_subtitle=Hurry Up -TAG:encoded_by=Tau +TAG:track=1/11 TAG:filename=Intro.mp3 TAG:genre=Electronic TAG:language=eng TAG:performer=Anthony Gonzalez TAG:title=Intro -TAG:track=1/11 [/FORMAT] diff --git a/tests/ref/fate/generic-tags-remux-riff b/tests/ref/fate/generic-tags-remux-riff index c25c3c12dd..322258e8fc 100644 --- a/tests/ref/fate/generic-tags-remux-riff +++ b/tests/ref/fate/generic-tags-remux-riff @@ -1,5 +1,5 @@ -9571b4873186aae56de614a2aada6150 *tests/data/fate/generic-tags-remux-riff.wav -246 tests/data/fate/generic-tags-remux-riff.wav +6ad807e593f65a3846d688a92638b0f5 *tests/data/fate/generic-tags-remux-riff.wav +234 tests/data/fate/generic-tags-remux-riff.wav #tb 0: 1/44100 #media_type 0: audio #codec_id 0: pcm_s16le @@ -15,5 +15,4 @@ TAG:language=eng TAG:title=Intro TAG:album=Hurry Up, We're Dreaming TAG:track=1/11 -TAG:encoded_by=Tau [/FORMAT] diff --git a/tests/ref/fate/generic-tags-remux-vorbiscomment b/tests/ref/fate/generic-tags-remux-vorbiscomment index c5737bbf96..73ebba45a5 100644 --- a/tests/ref/fate/generic-tags-remux-vorbiscomment +++ b/tests/ref/fate/generic-tags-remux-vorbiscomment @@ -1,5 +1,5 @@ -e9e51f486ae8907794c46377678c5203 *tests/data/fate/generic-tags-remux-vorbiscomment.flac -8646 tests/data/fate/generic-tags-remux-vorbiscomment.flac +00ad19f1aff315184c627fa2edb0c225 *tests/data/fate/generic-tags-remux-vorbiscomment.flac +8628 tests/data/fate/generic-tags-remux-vorbiscomment.flac #extradata 0: 34, 0x93a20b79 #tb 0: 1/44100 #media_type 0: audio @@ -16,12 +16,11 @@ TAG:copyright=2011 M83 Recording Inc TAG:date=2011-10-17 TAG:disc=1 TAG:disc_subtitle=Hurry Up -TAG:encoded_by=Tau +TAG:track=1/11 TAG:filename=Intro.mp3 TAG:genre=Electronic TAG:language=eng TAG:performer=Anthony Gonzalez TAG:publisher=M83 Recording Inc TAG:title=Intro -TAG:track=1/11 [/FORMAT] diff --git a/tests/ref/fate/h264-bsf-redundant-pps-side-data b/tests/ref/fate/h264-bsf-redundant-pps-side-data index da27c3fe59..a8570cf51e 100644 --- a/tests/ref/fate/h264-bsf-redundant-pps-side-data +++ b/tests/ref/fate/h264-bsf-redundant-pps-side-data @@ -1,5 +1,5 @@ -18c64ec6b4f0cc39c5f8f3564b372fef *tests/data/fate/h264-bsf-redundant-pps-side-data.nut -596084 tests/data/fate/h264-bsf-redundant-pps-side-data.nut +3e92e076f369fd6a3d7a120d41d15918 *tests/data/fate/h264-bsf-redundant-pps-side-data.nut +596025 tests/data/fate/h264-bsf-redundant-pps-side-data.nut #extradata 0: 34, 0x850408e3 #tb 0: 1/48000 #media_type 0: video diff --git a/tests/ref/fate/h264-bsf-redundant-pps-side-data2 b/tests/ref/fate/h264-bsf-redundant-pps-side-data2 index 99918b80e4..287b10c025 100644 --- a/tests/ref/fate/h264-bsf-redundant-pps-side-data2 +++ b/tests/ref/fate/h264-bsf-redundant-pps-side-data2 @@ -1,5 +1,5 @@ -f94ed2c25b6bbe63160743f08de33665 *tests/data/fate/h264-bsf-redundant-pps-side-data2.nut -5138 tests/data/fate/h264-bsf-redundant-pps-side-data2.nut +97b7e9c6ba90137731c672382862fac7 *tests/data/fate/h264-bsf-redundant-pps-side-data2.nut +5067 tests/data/fate/h264-bsf-redundant-pps-side-data2.nut #tb 0: 1/25 #media_type 0: video #codec_id 0: rawvideo diff --git a/tests/ref/fate/id3v2-reenc-delete-metadata b/tests/ref/fate/id3v2-reenc-delete-metadata index a517621fc0..608d7fe7e4 100644 --- a/tests/ref/fate/id3v2-reenc-delete-metadata +++ b/tests/ref/fate/id3v2-reenc-delete-metadata @@ -1,9 +1,5 @@ -9b854b7dbe3fb779cd75f131e52372b0 *tests/data/fate/id3v2-reenc-delete-metadata.nut -2667 tests/data/fate/id3v2-reenc-delete-metadata.nut +31f137d9ea26baee95f75083ac87f60a *tests/data/fate/id3v2-reenc-delete-metadata.nut +2396 tests/data/fate/id3v2-reenc-delete-metadata.nut [FORMAT] TAG:title=7rk -TAG:iTunPGAP=0 -TAG:encoded_by=iTunes 12.7.0.166 -TAG:iTunNORM= 00000362 000004C0 0000308F 00003CC5 00000DAC 00000DAC 00007D14 00007AC9 000007C1 0000175E -TAG:iTunSMPB= 00000000 00000210 0000086A 0000000000066486 00000000 0002DA9D 00000000 00000000 00000000 00000000 00000000 00000000 [/FORMAT] diff --git a/tests/ref/fate/id3v2-reenc-delete-metadata-keep b/tests/ref/fate/id3v2-reenc-delete-metadata-keep new file mode 100644 index 0000000000..c1562da559 --- /dev/null +++ b/tests/ref/fate/id3v2-reenc-delete-metadata-keep @@ -0,0 +1,6 @@ +805cef2308c41ebbf8e772f166aafe2e *tests/data/fate/id3v2-reenc-delete-metadata-keep.nut +2524 tests/data/fate/id3v2-reenc-delete-metadata-keep.nut +[FORMAT] +TAG:title=7rk +TAG:iTunSMPB= 00000000 00000210 0000086A 0000000000066486 00000000 0002DA9D 00000000 00000000 00000000 00000000 00000000 00000000 +[/FORMAT] diff --git a/tests/ref/fate/id3v2-reenc-delete-metadata-keep-format b/tests/ref/fate/id3v2-reenc-delete-metadata-keep-format new file mode 100644 index 0000000000..d8acf33159 --- /dev/null +++ b/tests/ref/fate/id3v2-reenc-delete-metadata-keep-format @@ -0,0 +1,6 @@ +805cef2308c41ebbf8e772f166aafe2e *tests/data/fate/id3v2-reenc-delete-metadata-keep-format.nut +2524 tests/data/fate/id3v2-reenc-delete-metadata-keep-format.nut +[FORMAT] +TAG:title=7rk +TAG:iTunSMPB= 00000000 00000210 0000086A 0000000000066486 00000000 0002DA9D 00000000 00000000 00000000 00000000 00000000 00000000 +[/FORMAT] diff --git a/tests/ref/fate/id3v2-reenc-delete-metadata-keep-stream b/tests/ref/fate/id3v2-reenc-delete-metadata-keep-stream new file mode 100644 index 0000000000..02827345a3 --- /dev/null +++ b/tests/ref/fate/id3v2-reenc-delete-metadata-keep-stream @@ -0,0 +1,5 @@ +31f137d9ea26baee95f75083ac87f60a *tests/data/fate/id3v2-reenc-delete-metadata-keep-stream.nut +2396 tests/data/fate/id3v2-reenc-delete-metadata-keep-stream.nut +[FORMAT] +TAG:title=7rk +[/FORMAT] diff --git a/tests/ref/fate/id3v2-reenc-delete-metadata-map-metadata b/tests/ref/fate/id3v2-reenc-delete-metadata-map-metadata index 544fda3b9b..ec640b7b55 100644 --- a/tests/ref/fate/id3v2-reenc-delete-metadata-map-metadata +++ b/tests/ref/fate/id3v2-reenc-delete-metadata-map-metadata @@ -1,9 +1,5 @@ -9b854b7dbe3fb779cd75f131e52372b0 *tests/data/fate/id3v2-reenc-delete-metadata-map-metadata.nut -2667 tests/data/fate/id3v2-reenc-delete-metadata-map-metadata.nut +31f137d9ea26baee95f75083ac87f60a *tests/data/fate/id3v2-reenc-delete-metadata-map-metadata.nut +2396 tests/data/fate/id3v2-reenc-delete-metadata-map-metadata.nut [FORMAT] TAG:title=7rk -TAG:iTunPGAP=0 -TAG:encoded_by=iTunes 12.7.0.166 -TAG:iTunNORM= 00000362 000004C0 0000308F 00003CC5 00000DAC 00000DAC 00007D14 00007AC9 000007C1 0000175E -TAG:iTunSMPB= 00000000 00000210 0000086A 0000000000066486 00000000 0002DA9D 00000000 00000000 00000000 00000000 00000000 00000000 [/FORMAT] diff --git a/tests/ref/fate/matroska-alac-remux b/tests/ref/fate/matroska-alac-remux index 1e7a5b4c8e..d7d6eba47d 100644 --- a/tests/ref/fate/matroska-alac-remux +++ b/tests/ref/fate/matroska-alac-remux @@ -1,5 +1,5 @@ -6075eb35f53692596194f3b0175cb184 *tests/data/fate/matroska-alac-remux.matroska -1293794 tests/data/fate/matroska-alac-remux.matroska +8c3da576105e9c29451855520c1c68d2 *tests/data/fate/matroska-alac-remux.matroska +1293709 tests/data/fate/matroska-alac-remux.matroska #extradata 0: 36, 0x562b05d8 #tb 0: 1/1000 #media_type 0: audio @@ -159,9 +159,9 @@ DISPOSITION:multilayer=0 TAG:title=Inside TAG:encoder=Lavf TAG:creation_time=2009-01-25T16:08:26.000000Z -TAG:MAJOR_BRAND=M4A -TAG:MINOR_VERSION=0 -TAG:COMPATIBLE_BRANDS=M4A mp42isom +TAG:track=5/13 +TAG:GENRE=Rock +TAG:ALBUM=OpenMusic TAG:DISC=1 TAG:COMPILATION=1 TAG:GAPLESS_PLAYBACK=0 @@ -169,7 +169,4 @@ TAG:ENCODING_PARAMS=vers TAG:ITUNNORM= 000004DF 000004C2 00001E64 00001AB3 00000FB9 00000FB9 00006480 00006480 00000FB9 00000B52 TAG:ARTIST=Maxwell Strait TAG:ALBUM_ARTIST=Maxwell Strait -TAG:ALBUM=OpenMusic -TAG:GENRE=Rock -TAG:track=5/13 [/FORMAT] diff --git a/tests/ref/fate/matroska-crop b/tests/ref/fate/matroska-crop index 12a863942c..46c2629ff7 100644 --- a/tests/ref/fate/matroska-crop +++ b/tests/ref/fate/matroska-crop @@ -1,5 +1,5 @@ -fc4932f90dfc955b55cfbdbb210fdd16 *tests/data/fate/matroska-crop.matroska -355698 tests/data/fate/matroska-crop.matroska +5e994da09d804380c7e0d7ce107e3eba *tests/data/fate/matroska-crop.matroska +355603 tests/data/fate/matroska-crop.matroska #tb 0: 1/1 #media_type 0: video #codec_id 0: rawvideo diff --git a/tests/ref/fate/matroska-dovi-hvce-mp4-to-mkv b/tests/ref/fate/matroska-dovi-hvce-mp4-to-mkv index 03e25e6be7..67c8641c73 100644 --- a/tests/ref/fate/matroska-dovi-hvce-mp4-to-mkv +++ b/tests/ref/fate/matroska-dovi-hvce-mp4-to-mkv @@ -1,5 +1,5 @@ -8c4a1c8c1c40d3c75e4019aa4f06a6cc *tests/data/fate/matroska-dovi-hvce-mp4-to-mkv.matroska -668049 tests/data/fate/matroska-dovi-hvce-mp4-to-mkv.matroska +77bf58de6cf4db39bfa33568459fcb1f *tests/data/fate/matroska-dovi-hvce-mp4-to-mkv.matroska +667965 tests/data/fate/matroska-dovi-hvce-mp4-to-mkv.matroska #extradata 0: 187, 0x34a930cb #tb 0: 1/1000 #media_type 0: video diff --git a/tests/ref/fate/matroska-dovi-write-config7 b/tests/ref/fate/matroska-dovi-write-config7 index edb6757c68..1e61e0a5a9 100644 --- a/tests/ref/fate/matroska-dovi-write-config7 +++ b/tests/ref/fate/matroska-dovi-write-config7 @@ -1,5 +1,5 @@ -adafbb4d021db027f4ae4ef7ca1c56c2 *tests/data/fate/matroska-dovi-write-config7.matroska -72640 tests/data/fate/matroska-dovi-write-config7.matroska +a713f83f8b20954728839450a7697491 *tests/data/fate/matroska-dovi-write-config7.matroska +72543 tests/data/fate/matroska-dovi-write-config7.matroska #extradata 0: 116, 0x2b8d1669 #extradata 1: 116, 0x2b8d1669 #tb 0: 1/1000 diff --git a/tests/ref/fate/matroska-dovi-write-config8 b/tests/ref/fate/matroska-dovi-write-config8 index 14aadd3f74..6b38ad8806 100644 --- a/tests/ref/fate/matroska-dovi-write-config8 +++ b/tests/ref/fate/matroska-dovi-write-config8 @@ -1,5 +1,5 @@ -414d901156c2bc727c7b9b389e3ca1b5 *tests/data/fate/matroska-dovi-write-config8.matroska -3600635 tests/data/fate/matroska-dovi-write-config8.matroska +c10db6bfab4b9b2344c7e7f92e8998de *tests/data/fate/matroska-dovi-write-config8.matroska +3600558 tests/data/fate/matroska-dovi-write-config8.matroska #extradata 0: 551, 0xb1ddcd66 #extradata 1: 2, 0x00340022 #tb 0: 1/1000 diff --git a/tests/ref/fate/matroska-non-rotation-displaymatrix b/tests/ref/fate/matroska-non-rotation-displaymatrix index ad9d6e5b43..33871f4aea 100644 --- a/tests/ref/fate/matroska-non-rotation-displaymatrix +++ b/tests/ref/fate/matroska-non-rotation-displaymatrix @@ -1,5 +1,5 @@ -7294b73bcb1cd5059b8f413e2a4dab5b *tests/data/fate/matroska-non-rotation-displaymatrix.matroska -7866 tests/data/fate/matroska-non-rotation-displaymatrix.matroska +d7fdaa33d0ae71997ff4e60953741631 *tests/data/fate/matroska-non-rotation-displaymatrix.matroska +7775 tests/data/fate/matroska-non-rotation-displaymatrix.matroska #extradata 0: 34, 0xc1d10b51 #tb 0: 1/1000 #media_type 0: video diff --git a/tests/ref/fate/matroska-reenc-chapter-nofilter b/tests/ref/fate/matroska-reenc-chapter-nofilter index 89ca986a6c..c751461561 100644 --- a/tests/ref/fate/matroska-reenc-chapter-nofilter +++ b/tests/ref/fate/matroska-reenc-chapter-nofilter @@ -1,5 +1,5 @@ -ee93018a787b4e9620dd27207e267ad6 *tests/data/fate/matroska-reenc-chapter-nofilter.nut -28879 tests/data/fate/matroska-reenc-chapter-nofilter.nut +9cb225d7afd5aec09f3b90501f74cc0f *tests/data/fate/matroska-reenc-chapter-nofilter.nut +28587 tests/data/fate/matroska-reenc-chapter-nofilter.nut [CHAPTER] TAG:title=Schloß TAG:NUMBER_OF_FRAMES=test diff --git a/tests/ref/fate/matroska-reenc-delete-audio-metadata b/tests/ref/fate/matroska-reenc-delete-audio-metadata new file mode 100644 index 0000000000..6b1cd0feaa --- /dev/null +++ b/tests/ref/fate/matroska-reenc-delete-audio-metadata @@ -0,0 +1,12 @@ +7d3bba1fefcd3b1e4c8037b372bc7a96 *tests/data/fate/matroska-reenc-delete-audio-metadata.nut +28564 tests/data/fate/matroska-reenc-delete-audio-metadata.nut +[STREAM] +TAG:encoder=Lavc mpeg2video +TAG:language=spa +[SIDE_DATA] +[/SIDE_DATA] +[/STREAM] +[FORMAT] +TAG:DESCRIPTION=Edition description +TAG:TITLE=Edition title +[/FORMAT] diff --git a/tests/ref/fate/matroska-reenc-delete-metadata b/tests/ref/fate/matroska-reenc-delete-metadata index c85b6d18d6..7b7196def4 100644 --- a/tests/ref/fate/matroska-reenc-delete-metadata +++ b/tests/ref/fate/matroska-reenc-delete-metadata @@ -1,15 +1,8 @@ -f3f1913ea5dffcff4789d178aed75e10 *tests/data/fate/matroska-reenc-delete-metadata.nut -28856 tests/data/fate/matroska-reenc-delete-metadata.nut +7d3bba1fefcd3b1e4c8037b372bc7a96 *tests/data/fate/matroska-reenc-delete-metadata.nut +28564 tests/data/fate/matroska-reenc-delete-metadata.nut [STREAM] TAG:encoder=Lavc mpeg2video TAG:language=spa -TAG:BPS-eng=216040 -TAG:DURATION-eng=00:00:00.400000000 -TAG:NUMBER_OF_FRAMES-eng=10 -TAG:NUMBER_OF_BYTES-eng=10802 -TAG:_STATISTICS_WRITING_APP-eng=mkvmerge v9.0.1 ('Mask Machine') 64bit -TAG:_STATISTICS_WRITING_DATE_UTC-eng=2019-02-14 12:53:10 -TAG:_STATISTICS_TAGS-eng=BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES [SIDE_DATA] [/SIDE_DATA] [/STREAM] diff --git a/tests/ref/fate/matroska-reenc-delete-metadata-filter-output b/tests/ref/fate/matroska-reenc-delete-metadata-filter-output index 2f82277ea3..2bcb4a65de 100644 --- a/tests/ref/fate/matroska-reenc-delete-metadata-filter-output +++ b/tests/ref/fate/matroska-reenc-delete-metadata-filter-output @@ -1,15 +1,8 @@ -9a7537256acd618b31e18a3d92fc907f *tests/data/fate/matroska-reenc-delete-metadata-filter-output.nut -28835 tests/data/fate/matroska-reenc-delete-metadata-filter-output.nut +09fe3f3cb1d5d5c474069833bca0d97b *tests/data/fate/matroska-reenc-delete-metadata-filter-output.nut +28543 tests/data/fate/matroska-reenc-delete-metadata-filter-output.nut [STREAM] TAG:encoder=Lavc mpeg2video TAG:language=spa -TAG:BPS-eng=216040 -TAG:DURATION-eng=00:00:00.400000000 -TAG:NUMBER_OF_FRAMES-eng=10 -TAG:NUMBER_OF_BYTES-eng=10802 -TAG:_STATISTICS_WRITING_APP-eng=mkvmerge v9.0.1 ('Mask Machine') 64bit -TAG:_STATISTICS_WRITING_DATE_UTC-eng=2019-02-14 12:53:10 -TAG:_STATISTICS_TAGS-eng=BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES [SIDE_DATA] [/SIDE_DATA] [/STREAM] diff --git a/tests/ref/fate/matroska-reenc-delete-metadata-keep b/tests/ref/fate/matroska-reenc-delete-metadata-keep new file mode 100644 index 0000000000..129b639110 --- /dev/null +++ b/tests/ref/fate/matroska-reenc-delete-metadata-keep @@ -0,0 +1,13 @@ +6796b46d997552df3f92fb51a4e628c9 *tests/data/fate/matroska-reenc-delete-metadata-keep.nut +28591 tests/data/fate/matroska-reenc-delete-metadata-keep.nut +[STREAM] +TAG:encoder=Lavc mpeg2video +TAG:language=spa +TAG:NUMBER_OF_BYTES-eng=10802 +[SIDE_DATA] +[/SIDE_DATA] +[/STREAM] +[FORMAT] +TAG:DESCRIPTION=Edition description +TAG:TITLE=Edition title +[/FORMAT] diff --git a/tests/ref/fate/matroska-reenc-delete-metadata-keep-prefix-nomatch b/tests/ref/fate/matroska-reenc-delete-metadata-keep-prefix-nomatch new file mode 100644 index 0000000000..a084e133ca --- /dev/null +++ b/tests/ref/fate/matroska-reenc-delete-metadata-keep-prefix-nomatch @@ -0,0 +1,12 @@ +7d3bba1fefcd3b1e4c8037b372bc7a96 *tests/data/fate/matroska-reenc-delete-metadata-keep-prefix-nomatch.nut +28564 tests/data/fate/matroska-reenc-delete-metadata-keep-prefix-nomatch.nut +[STREAM] +TAG:encoder=Lavc mpeg2video +TAG:language=spa +[SIDE_DATA] +[/SIDE_DATA] +[/STREAM] +[FORMAT] +TAG:DESCRIPTION=Edition description +TAG:TITLE=Edition title +[/FORMAT] diff --git a/tests/ref/fate/matroska-reenc-delete-metadata-keep-stream-video b/tests/ref/fate/matroska-reenc-delete-metadata-keep-stream-video new file mode 100644 index 0000000000..95bbb34211 --- /dev/null +++ b/tests/ref/fate/matroska-reenc-delete-metadata-keep-stream-video @@ -0,0 +1,13 @@ +6796b46d997552df3f92fb51a4e628c9 *tests/data/fate/matroska-reenc-delete-metadata-keep-stream-video.nut +28591 tests/data/fate/matroska-reenc-delete-metadata-keep-stream-video.nut +[STREAM] +TAG:encoder=Lavc mpeg2video +TAG:language=spa +TAG:NUMBER_OF_BYTES-eng=10802 +[SIDE_DATA] +[/SIDE_DATA] +[/STREAM] +[FORMAT] +TAG:DESCRIPTION=Edition description +TAG:TITLE=Edition title +[/FORMAT] diff --git a/tests/ref/fate/matroska-reenc-delete-metadata-keep-stream-video-suffix b/tests/ref/fate/matroska-reenc-delete-metadata-keep-stream-video-suffix new file mode 100644 index 0000000000..a5208fe81b --- /dev/null +++ b/tests/ref/fate/matroska-reenc-delete-metadata-keep-stream-video-suffix @@ -0,0 +1,13 @@ +6796b46d997552df3f92fb51a4e628c9 *tests/data/fate/matroska-reenc-delete-metadata-keep-stream-video-suffix.nut +28591 tests/data/fate/matroska-reenc-delete-metadata-keep-stream-video-suffix.nut +[STREAM] +TAG:encoder=Lavc mpeg2video +TAG:language=spa +TAG:NUMBER_OF_BYTES-eng=10802 +[SIDE_DATA] +[/SIDE_DATA] +[/STREAM] +[FORMAT] +TAG:DESCRIPTION=Edition description +TAG:TITLE=Edition title +[/FORMAT] diff --git a/tests/ref/fate/matroska-reenc-delete-metadata-keep-stream-video1 b/tests/ref/fate/matroska-reenc-delete-metadata-keep-stream-video1 new file mode 100644 index 0000000000..7e4e59648d --- /dev/null +++ b/tests/ref/fate/matroska-reenc-delete-metadata-keep-stream-video1 @@ -0,0 +1,12 @@ +7d3bba1fefcd3b1e4c8037b372bc7a96 *tests/data/fate/matroska-reenc-delete-metadata-keep-stream-video1.nut +28564 tests/data/fate/matroska-reenc-delete-metadata-keep-stream-video1.nut +[STREAM] +TAG:encoder=Lavc mpeg2video +TAG:language=spa +[SIDE_DATA] +[/SIDE_DATA] +[/STREAM] +[FORMAT] +TAG:DESCRIPTION=Edition description +TAG:TITLE=Edition title +[/FORMAT] diff --git a/tests/ref/fate/matroska-reenc-delete-metadata-spec-scope b/tests/ref/fate/matroska-reenc-delete-metadata-spec-scope index 5ef47368db..d5e5d752b9 100644 --- a/tests/ref/fate/matroska-reenc-delete-metadata-spec-scope +++ b/tests/ref/fate/matroska-reenc-delete-metadata-spec-scope @@ -1,15 +1,8 @@ -f3f1913ea5dffcff4789d178aed75e10 *tests/data/fate/matroska-reenc-delete-metadata-spec-scope.nut -28856 tests/data/fate/matroska-reenc-delete-metadata-spec-scope.nut +7d3bba1fefcd3b1e4c8037b372bc7a96 *tests/data/fate/matroska-reenc-delete-metadata-spec-scope.nut +28564 tests/data/fate/matroska-reenc-delete-metadata-spec-scope.nut [STREAM] TAG:encoder=Lavc mpeg2video TAG:language=spa -TAG:BPS-eng=216040 -TAG:DURATION-eng=00:00:00.400000000 -TAG:NUMBER_OF_FRAMES-eng=10 -TAG:NUMBER_OF_BYTES-eng=10802 -TAG:_STATISTICS_WRITING_APP-eng=mkvmerge v9.0.1 ('Mask Machine') 64bit -TAG:_STATISTICS_WRITING_DATE_UTC-eng=2019-02-14 12:53:10 -TAG:_STATISTICS_TAGS-eng=BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES [SIDE_DATA] [/SIDE_DATA] [/STREAM] diff --git a/tests/ref/fate/mov-reenc-delete-format-metadata b/tests/ref/fate/mov-cover-reenc-keeps-audio-format-tags similarity index 69% copy from tests/ref/fate/mov-reenc-delete-format-metadata copy to tests/ref/fate/mov-cover-reenc-keeps-audio-format-tags index 78ec5a8d54..a9a5af0581 100644 --- a/tests/ref/fate/mov-reenc-delete-format-metadata +++ b/tests/ref/fate/mov-cover-reenc-keeps-audio-format-tags @@ -1,21 +1,18 @@ -31a5be81f6278f7d62e901207bf59485 *tests/data/fate/mov-reenc-delete-format-metadata.nut -894 tests/data/fate/mov-reenc-delete-format-metadata.nut +d9b9b84a20f350bc1d59a91cbba225de *tests/data/fate/mov-cover-reenc-keeps-audio-format-tags.nut +45776 tests/data/fate/mov-cover-reenc-keeps-audio-format-tags.nut [FORMAT] -TAG:major_brand=M4A -TAG:minor_version=0 -TAG:compatible_brands=M4A mp42isom +TAG:date=2010 +TAG:disc=3/5 +TAG:track=2/5 TAG:comment=The comment... TAG:title=Owner TAG:compilation=0 TAG:gapless_playback=0 -TAG:date=2010 +TAG:genre=Rock TAG:iTunSMPB= 00000000 00000840 000001FD 000000000013B5C3 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 TAG:Encoding Params=vers TAG:iTunNORM= 0000085B 0000072C 00006BC3 0000D444 00004EBA 00004ED2 00008000 00008000 000037DF 000039C7 TAG:artist=The Artist TAG:album_artist=The Album Artist TAG:album=The Album -TAG:genre=Rock -TAG:track=2/5 -TAG:disc=3/5 [/FORMAT] diff --git a/tests/ref/fate/mov-reenc-delete-format-metadata b/tests/ref/fate/mov-reenc-delete-format-metadata index 78ec5a8d54..dee47ddba3 100644 --- a/tests/ref/fate/mov-reenc-delete-format-metadata +++ b/tests/ref/fate/mov-reenc-delete-format-metadata @@ -1,21 +1,15 @@ -31a5be81f6278f7d62e901207bf59485 *tests/data/fate/mov-reenc-delete-format-metadata.nut -894 tests/data/fate/mov-reenc-delete-format-metadata.nut +f63b90216e9667fa0b030aae0f808fd8 *tests/data/fate/mov-reenc-delete-format-metadata.nut +579 tests/data/fate/mov-reenc-delete-format-metadata.nut [FORMAT] -TAG:major_brand=M4A -TAG:minor_version=0 -TAG:compatible_brands=M4A mp42isom +TAG:genre=Rock +TAG:album=The Album +TAG:album_artist=The Album Artist TAG:comment=The comment... TAG:title=Owner TAG:compilation=0 -TAG:gapless_playback=0 +TAG:disc=3/5 +TAG:artist=The Artist TAG:date=2010 -TAG:iTunSMPB= 00000000 00000840 000001FD 000000000013B5C3 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 TAG:Encoding Params=vers -TAG:iTunNORM= 0000085B 0000072C 00006BC3 0000D444 00004EBA 00004ED2 00008000 00008000 000037DF 000039C7 -TAG:artist=The Artist -TAG:album_artist=The Album Artist -TAG:album=The Album -TAG:genre=Rock TAG:track=2/5 -TAG:disc=3/5 [/FORMAT] diff --git a/tests/ref/fate/mov-reenc-delete-stream-metadata b/tests/ref/fate/mov-reenc-delete-stream-metadata index f54730e932..dd8bccc4f0 100644 --- a/tests/ref/fate/mov-reenc-delete-stream-metadata +++ b/tests/ref/fate/mov-reenc-delete-stream-metadata @@ -1,9 +1,8 @@ -c3339d3d42a7f414fec083f0766fb79a *tests/data/fate/mov-reenc-delete-stream-metadata.nut -6629 tests/data/fate/mov-reenc-delete-stream-metadata.nut +5e44edd89f2f43665ff5e4e53638fdf5 *tests/data/fate/mov-reenc-delete-stream-metadata.nut +6605 tests/data/fate/mov-reenc-delete-stream-metadata.nut [STREAM] TAG:encoder=Lavc flac TAG:creation_time=2002-06-02T18:38:54.000000Z TAG:language=eng TAG:handler_name=Apple Sound Media Handler -TAG:vendor_id=[0][0][0][0] [/STREAM] diff --git a/tests/ref/fate/mov-reenc-delete-stream-metadata-global-tag b/tests/ref/fate/mov-reenc-delete-stream-metadata-global-tag index aa3332039e..424bfa2d96 100644 --- a/tests/ref/fate/mov-reenc-delete-stream-metadata-global-tag +++ b/tests/ref/fate/mov-reenc-delete-stream-metadata-global-tag @@ -1,11 +1,10 @@ -3b2b8f248a99168fa938c9767c350dca *tests/data/fate/mov-reenc-delete-stream-metadata-global-tag.nut -6647 tests/data/fate/mov-reenc-delete-stream-metadata-global-tag.nut +dc4bc94edbf9bcf78cf74471f244398b *tests/data/fate/mov-reenc-delete-stream-metadata-global-tag.nut +6623 tests/data/fate/mov-reenc-delete-stream-metadata-global-tag.nut [STREAM] TAG:encoder=Lavc flac TAG:creation_time=2002-06-02T18:38:54.000000Z TAG:language=eng TAG:handler_name=Apple Sound Media Handler -TAG:vendor_id=[0][0][0][0] [/STREAM] [FORMAT] TAG:vendor_id=custom diff --git a/tests/ref/fate/rgb24-mkv b/tests/ref/fate/rgb24-mkv index 5f4cb78318..59c532b80d 100644 --- a/tests/ref/fate/rgb24-mkv +++ b/tests/ref/fate/rgb24-mkv @@ -1,5 +1,5 @@ -0013b260aa50b70d1a00d9770581a177 *tests/data/fate/rgb24-mkv.matroska -58236 tests/data/fate/rgb24-mkv.matroska +e85dcc076f7ebea460517c3255705fec *tests/data/fate/rgb24-mkv.matroska +58213 tests/data/fate/rgb24-mkv.matroska #tb 0: 1/10 #media_type 0: video #codec_id 0: rawvideo _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
