[FFmpeg-devel] [PATCH v4 4/8] avformat/mux: add proper support for full N:M bitstream filtering
Marton Balint
cus at passwd.hu
Tue May 5 11:08:18 EEST 2020
On Tue, 5 May 2020, Andreas Rheinhardt wrote:
> Marton Balint:
>>
>>
>> On Tue, 5 May 2020, Andreas Rheinhardt wrote:
>>
>>> Marton Balint:
>>>>
>>>>
>>>> On Tue, 5 May 2020, Andreas Rheinhardt wrote:
>>>>
>>>>> Marton Balint:
>>>>>> Previously only 1:1 bitstream filters were supported, the end of the
>>>>>> stream was
>>>>>> not signalled to the bitstream filters and time base changes were
>>>>>> ignored.
>>>>>>
>>>>>> This change also allows muxers to set up bitstream filters regardless
>>>>>> of the
>>>>>> autobsf flag during write_header instead of during check_bitstream
>>>>>> and those
>>>>>> bitstream filters will always be executed.
>>>>>
>>>>> Ignoring the autobsf flag is not ok IMO. The muxer should not add a bsf
>>>>> when the user explicitly didn't want this.
>>>>>
>>>>
>>>> The user should not be allowed to create broken files, and the only way
>>>> to achieve that is to force the BSF.
>>>
>>> No, one could also check in the muxer that the packets are ok (these
>>> checks could be disabled if the bsf is enabled, of course) and error out
>>> if it is not.
>>
>> And that would duplicate some functionaltiy for negigable performance
>> gain of not always doing a BSF.
>>
>>>
>>>> I don't see a use case for
>>>> disabling BSF either for MXFenc of GXFenc. (in fact, from the top of my
>>>> head I can't see a use case for disabling automatically inserted BSF-s
>>>> in other muxers).
>>>>
>>> A user who already knows that his packets are ok can do so to avoid the
>>> (admittedly small) overhead of these bsfs. (And even if you think that
>>> the option should be removed/should be made non-public (for internal
>>> testing only), then this does not change that this option exists and
>>> removing it would require the usual deprecation period (and consensus
>>> from other devs, of course; I personally don't have formed an opinion
>>> about this yet).)
>>
>> With my patch the autobsf option is still honored for all existing
>> bitstream filters which are inserted mid-stream (in check_bitstream).
>> Only the ones which are inserted at write_header(), so in mxfenc and
>> gxfenc are forced.
>>
>>> One use-case is if a user runs the pcm_rechunk bsf filter manually and
>>> then sends the output to both a framecrc as well as the mxf muxers in
>>> order to be able to test more thoroughly whether any write errors
>>> happened. Or where you want to write the same audio to multiple mxf
>>> muxers, all with the same audio settings.
>>
>> And for them the additional BSF which is auto inserted will only pass on
>> their packets, it will only *check* for correct packets, exactly what
>> you suggested. I cannot accept the performance gain as argument.
>>
>>>
>>>> So if you feel strongly about this and we still want to avoid creating
>>>> corrupt files then the BSFs should be processed in mxf_interleave and
>>>> gxf_interleave separately from the auto inserted bitstream filters. Do
>>>> you think that is better? I don't think so.
>>>>
>>> That would just be a worse form of automatically inserted bsf (and it
>>> would not work for av_write_frame()).
>>
>> Please suggest something reasonable to follow up on this.
>>
> How about: You error out in write_header if there is an audio track and
> the user does not want automatically inserted bitstream filters?
Then maybe better to do it ff_stream_add_bitstream_filter?
Thanks,
Marton
More information about the ffmpeg-devel
mailing list