On 12/8/2017 12:26 AM, wm4 wrote:
> On Thu, 7 Dec 2017 23:23:51 +0100
> Michael Niedermayer <mich...@niedermayer.cc> wrote:
>> On Tue, Nov 21, 2017 at 07:58:18PM +0100, Michael Niedermayer wrote:
>>> On Sat, Nov 18, 2017 at 09:11:17PM +0100, Michael Niedermayer wrote:  
>>>> On Sat, Nov 18, 2017 at 09:50:33AM +0100, Hendrik Leppkes wrote:  
>>>>> On Sat, Nov 18, 2017 at 3:05 AM, Michael Niedermayer
>>>>> <mich...@niedermayer.cc> wrote:  
>>>>>> On Fri, Nov 17, 2017 at 09:55:47AM +0100, Hendrik Leppkes wrote:  
>>>>>>> On Fri, Nov 17, 2017 at 5:00 AM, Michael Niedermayer
>>>>>>> <mich...@niedermayer.cc> wrote:  
>>>>>>>> On Thu, Nov 16, 2017 at 01:51:34PM +0100, Carl Eugen Hoyos wrote:  
>>>>>>>>> 2017-11-16 13:44 GMT+01:00 Michael Niedermayer 
>>>>>>>>> <mich...@niedermayer.cc>:  
>>>>>>>>>> On Thu, Nov 16, 2017 at 01:04:27AM +0100, Carl Eugen Hoyos wrote:  
>>>>>>>>>>> 2017-11-15 13:34 GMT+01:00 Michael Niedermayer 
>>>>>>>>>>> <mich...@niedermayer.cc>:  
>>>>>>>>>>>> Hi all
>>>>>>>>>>>> I intend to make 3.4.1 very soon  
>>>>>>>>>>> Shouldn't we first decide on how to proceed with #6775?  
>>>>>>>>>> This would be ideal.
>>>>>>>>>> IIUC this is a regression from 
>>>>>>>>>> bddb2343b6e594e312dadb5d21b408702929ae04  
>>>>>>>>> This was confirmed by more than one developer, yes.
>>>>>>>>>> I see a patch that is said to improve 6775, can that be applied and
>>>>>>>>>> would that resolve this ?  
>>>>>>>>> Iiuc, it would not completely resolve the issue, see:
>>>>>>>>> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=881536
>>>>>>>>>> If so why was it not applied yet ?  
>>>>>>>>> The patch did not get support here, see:
>>>>>>>>> [FFmpeg-devel] [PATCH] lavc: reset codec on receiving packet after EOF
>>>>>>>>> in compat_decode  
>>>>>>>> Is someone working on fixing this better than with the available patch 
>>>>>>>> ?
>>>>>>> I don't even agree this needs fixing. Those projects use the API wrong. 
>>>>>> Had we documented the correct/wrong use precissely in the past when
>>>>>> these wrong uses where written ?
>>>>>> Because if it was documented then few should have made the mistake.
>>>>>> But it seems this affects multiple projects, so i wonder if our API
>>>>>> really excluded the use
>>>>> Apparently not well enough, but I also don't even understand why you
>>>>> would *want* to drain in the middle of decoding.
>>>>> The only mention of sending NULL/0 packets (in 3.0 docs, before the
>>>>> new API was introduced) do include the "at the end", however.
>>>>>  * Decoders:
>>>>>  * The decoder has a non-zero delay and needs to be fed with 
>>>>> avpkt->data=NULL,
>>>>>  * avpkt->size=0 at the end to get the delayed data until the decoder no 
>>>>> longer
>>>>>  * returns frames.
>>>>> From avcodec_decode_video2
>>>>> * @note Codecs which have the AV_CODEC_CAP_DELAY capability set have a 
>>>>> delay
>>>>> * between input and output, these need to be fed with avpkt->data=NULL,
>>>>> * avpkt->size=0 at the end to return the remaining frames.
>>>>> There is a few more mentions of the same concept, but as far as I can
>>>>> see all include the key words "at the end".
>>>>> For the suggested patch, draining and flushing in the middle of a
>>>>> bitstream is still going to result in problems, though, since it
>>>>> removes all reference frames, for example.
>>>>> The original behavior cannot really be stored, which was to just keep
>>>>> feeding frames into the decoder after a drain without a flush.
>>>>> However, some decoders actually crashed when you did this, so this was
>>>>> a rather unsafe action to begin with (not an issue any longer, since
>>>>> this pattern is now blocked).  
>>>> Did the previous code really work if the frame after a flush was not a
>>>> new keyframe or there was some use of previous references ?  
>>> ping
>>> so what is the status of this?
>>> Ticket 6775 is still open, neither a workaround was applied nor was
>>> it closed as invalid. Only one workaround was proposed which was
>>> claimed to be worse than the code before.
>>> It seems the discussion died down.
>>> If theres no activity on this in the next days then i intend to make
>>> the release with whats in release/3.4 at the time. I dont think
>>> blind waiting will do any good, id rather release early and often ...
>>> Also if someone wants to write some release notes about this issue,
>>> that is IMO a good idea ...  
>> So this code is completely unmaintained ?
>> Noone cares about pushing a workaround ?
>> Noone cares about closing the ticket as wont fix ?
>> Noone cares about explaining why neither should be done ?
>> I intend to make the release tomorrow or as soon as i have time, we
>> have waited too long already. I can of course wait more if people want
>> but then please have a plan on resolving the issue that the release is
>> delayed for
> I didn't read all of this, but it's probably due to the API user
> passing as null packet, which indeed signals EOF. What happens if you
> send more packets after sending EOF has always been undefined behavior,
> and some audio decoders could crash if you did that. (It's fine if
> you flush the decoder, of course.) I think I brought it up in the past
> (and nobody cared), so I added explicit workarounds to my own API usage
> code to avoid crashes. Why are you making so much noise around it now?

When the old decode API was turned into a wrapper for the new, some
applications using said API this way started to experience
issues/crashes that did not happen before. So basically, a change of
behavior which, as you put it, was apparently undefined.

Some argue it should not crash if it didn't before, others argue that it
was never meant to be used this way. What Michael wants to know in order
to release 3.4.1 is, what should be done? Should it be addressed, or
left as is? If the former, do we apply the patch someone proposed in
another thread, or something else? If the latter, then the ticket should
be closed and the discussion ends there.
ffmpeg-devel mailing list

Reply via email to