[FFmpeg-trac] #8958(undetermined:closed): ffmpeg git: yuv4mpeg pipe seems to be broken
FFmpeg
trac at avcodec.org
Mon Nov 2 18:13:52 EET 2020
#8958: ffmpeg git: yuv4mpeg pipe seems to be broken
-------------------------------------+-------------------------------------
Reporter: BlueSwordM | Owner:
Type: defect | Status: closed
Priority: minor | Component:
| undetermined
Version: git-master | Resolution: invalid
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Comment (by JEEB):
For context, quoting the discussion I had with taliho on IRC last night.
{{{
02:11 < taliho4> JEEB: maybe interesting for you
https://trac.ffmpeg.org/ticket/8958
02:13 <@JEEB> taliho4: yup, I plugged the pipes together, and the
AVFrame received from the filter chain contained that
02:13 <@JEEB> if the AVFrame didn't have that info set, it would not
be set in the muxer, either
02:15 <@JEEB> I'd say the current behavior of passing the AVFrame's
flags by default makes sense. if that enables features
in muxers etc which break other implementations it's a
consideration whether that should be disabled by default
(put under -strict experimental or so), or if the other
implementations should be helped
02:15 <@JEEB> and yea looking at that log it specifically sets the
range in the h.264 stream
02:15 <@JEEB> > Stream #0:0(eng), 9, 1/1000: Video: h264 (High), 1
reference frame, yuv420p(tv, bt709, progressive, left)
02:22 < taliho4> yeah makes sense
}}}
Long story short, the information is only specified if it is exactly
specified in the AVFrame. And if passing that information - as would be
expected - enables features in muxers etc that shouldn't be enabled by
default, that is a separate problem, which was just not noticed before as
often (as it would require setting the flag manually - or in some cases
just utilizing the J pixel formats).
For the record, I have no idea which features of y4m are "standard" and
which are not, but as far as I can tell we're writing these values out
without any checks. The only points where there are checks are with
regards to certain pixel formats :) .
So either:
1. The flags are valid and considered standard enough - and aomenc should
fix their Y4M parser (and in the mean time users unfortunately would have
to utilize -color_range unknown in cases where their input actually
defines that it is either full range or not). In this case the ticket
should be closed like it is currently.
2. The flags are not considered standard enough and we move them under
some flag. Not exactly perfect either since then we by default lose the
capability of saying that something is full range or limited range
explicitly.
'''Note1''':
This was most likely already causing issues with aomenc with YUVJ pixel
formats previously, since those cause the range to always be written
looking at the muxer code.
'''Note2''':
https://linux.die.net/man/5/yuv4mpeg (which I think is the origin of y4m)
notes that
> X[string] - 'metadata' (optional; unparsed, but passed around)
Thus, I am heavily leaning towards option 1, which would be no change on
our output by default as clearly aomenc is not handling the format well
enough.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8958#comment:5>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list