mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2026-08-09 01:21:06 +00:00
fftools/ffmpeg_mux_init.c: delete encoder-specific metadata when re-encoding.
This commit is contained in:
committed by
Romain Beauxis
parent
c1be9b4a81
commit
4641be96e5
@@ -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.
|
||||
|
||||
|
||||
@@ -193,6 +193,7 @@ typedef struct OptionsContext {
|
||||
AVDictionary *streamid;
|
||||
|
||||
SpecifierOptList metadata;
|
||||
SpecifierOptList keep_metadata;
|
||||
SpecifierOptList max_frames;
|
||||
SpecifierOptList bitstream_filters;
|
||||
SpecifierOptList codec_tags;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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..." },
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
6
tests/ref/fate/id3v2-reenc-delete-metadata-keep
Normal file
6
tests/ref/fate/id3v2-reenc-delete-metadata-keep
Normal file
@@ -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]
|
||||
6
tests/ref/fate/id3v2-reenc-delete-metadata-keep-format
Normal file
6
tests/ref/fate/id3v2-reenc-delete-metadata-keep-format
Normal file
@@ -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]
|
||||
5
tests/ref/fate/id3v2-reenc-delete-metadata-keep-stream
Normal file
5
tests/ref/fate/id3v2-reenc-delete-metadata-keep-stream
Normal file
@@ -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]
|
||||
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
12
tests/ref/fate/matroska-reenc-delete-audio-metadata
Normal file
12
tests/ref/fate/matroska-reenc-delete-audio-metadata
Normal file
@@ -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]
|
||||
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
13
tests/ref/fate/matroska-reenc-delete-metadata-keep
Normal file
13
tests/ref/fate/matroska-reenc-delete-metadata-keep
Normal file
@@ -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]
|
||||
@@ -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]
|
||||
@@ -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]
|
||||
@@ -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]
|
||||
@@ -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]
|
||||
@@ -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]
|
||||
|
||||
18
tests/ref/fate/mov-cover-reenc-keeps-audio-format-tags
Normal file
18
tests/ref/fate/mov-cover-reenc-keeps-audio-format-tags
Normal file
@@ -0,0 +1,18 @@
|
||||
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: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: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
|
||||
[/FORMAT]
|
||||
@@ -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: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
|
||||
TAG:artist=The Artist
|
||||
TAG:date=2010
|
||||
TAG:Encoding Params=vers
|
||||
TAG:track=2/5
|
||||
[/FORMAT]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user