[FFmpeg-devel] [PATCH 25/25] avformat/matroskaenc: Redo handling of FlagDefault

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Tue Jan 21 01:43:13 EET 2020


On Tue, Jan 21, 2020 at 12:11 AM Carl Eugen Hoyos <ceffmpeg at gmail.com>
wrote:

> Am Sa., 18. Jan. 2020 um 09:46 Uhr schrieb Andreas Rheinhardt
> <andreas.rheinhardt at gmail.com>:
> >
> > Up until now, the Matroska muxer would mark a track as default if it had
> > the disposition AV_DISPOSITION_DEFAULT or if there was no track with
> > AV_DISPOSITION_DEFAULT set; in the latter case even more than one track
> > of a kind (audio, video, subtitles) was marked as default which is not
> > sensible.
>
> It would not help only to change this strange behaviour?
>
> So you mean: If no stream with disposition default exist at all, then only
mark the first track of each kind as default; otherwise pass the
disposition through unchanged? That would be possible, of course; and it
would be better than the current behaviour. But it would not allow to
create files with no track marked as default at all (requested in #8173)
and if one muxed several tracks from different Matroska files, each of
which is marked as default in its source, one would still have multiple
tracks of the same kind marked as default in the output. This should not be
the default behaviour.


> > This commit changes the logic used to mark tracks as default. There are
> > now three modes for this:
> > a) In the "infer" mode the first track of every type (audio, video,
> > subtitles) with default disposition set will be marked as default; if
> > there is no such track (for a given type), then the first track of this
> > type (if existing) will be marked as default. This behaviour is inspired
> > by mkvmerge. It ensures that the default flags will be set in a sensible
> > way even if the input comes from containers that lack the concept of
> > default flags. This mode is the default mode.
> > b) The "infer_no_subs" mode is similar to the "infer" mode; the
> > difference is that if no subtitle track with default disposition exists,
> > no subtitle track will be marked as default at all.
> > c) The "passthrough" mode: Here the track will be marked as default if
> > and only the corresponding input stream had disposition default.
> >
> > This fixes ticket #8173 (the passthrough mode is ideal for this) as
> > well as ticket #8416 (the "infer_no_subs" mode leads to the desired
> > output).
>
> Doesn't this duplicate the cli option for disposition?
> (Just asking, I know this is a can of worms)
>
> I am wondering if a new option is necessary and useful.
>
> Without a new option, one could not distinguish the case where the user
explicitly wants no dispositions at all and the case where one remuxes from
a source container that does not have the concept of default streams.
Furthermore, having an option allows to distinguish the infer and
"infer_no_subs" cases (the latter makes (some) players not show the
subtitles unless one explicitly enables them which is what (some) users
(including myself and apparently the guy behind #8416) want; I am actually
unsure whether infer_no_subs would make a better default value).

- Andreas


More information about the ffmpeg-devel mailing list