[FFmpeg-devel] [PATCH] lavc/qsv: skip the packet if decoding failure.
Mark Thompson
sw at jkqxz.net
Fri Jan 26 13:24:24 EET 2018
On 26/01/18 07:33, Song, Ruiling wrote:
>
>
>> -----Original Message-----
>> From: Jun Zhao [mailto:mypopydev at gmail.com]
>> Sent: Friday, January 26, 2018 1:02 PM
>> To: FFmpeg development discussions and patches <ffmpeg-devel at ffmpeg.org>;
>> Song, Ruiling <ruiling.song at intel.com>
>> Subject: Re: [FFmpeg-devel] [PATCH] lavc/qsv: skip the packet if decoding failure.
>>
>>
>>
>> On 2018/1/25 16:37, Ruiling Song wrote:
>>> From: "Ruiling, Song" <ruiling.song at intel.com>
>>>
>>> MediaSDK may fail to decode some frame, just skip it.
>>> Otherwise, it will keep decoding the failure packet repeatedly
>>> without processing any packet afterwards.
>>>
>>> v2:
>>> switch to using av_packet_unref().
>>>
>>> Signed-off-by: Ruiling Song <ruiling.song at intel.com>
>>> ---
>>> libavcodec/qsvdec_h2645.c | 6 +++++-
>>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/libavcodec/qsvdec_h2645.c b/libavcodec/qsvdec_h2645.c
>>> index 5e00673..d92a150 100644
>>> --- a/libavcodec/qsvdec_h2645.c
>>> +++ b/libavcodec/qsvdec_h2645.c
>>> @@ -153,8 +153,12 @@ static int qsv_decode_frame(AVCodecContext *avctx,
>> void *data,
>>> }
>>>
>>> ret = ff_qsv_process_data(avctx, &s->qsv, frame, got_frame, &s-
>>> buffer_pkt);
>>> - if (ret < 0)
>>> + if (ret < 0) {
>>> + /* Drop buffer_pkt when failed to decode the packet. Otherwise,
>>> + the decoder will keep decoding the failure packet. */
>>> + av_packet_unref(&s->buffer_pkt);
>>
>> I think add a warning message more better than only drop the packet on
>> the quiet.
> What do you think "packet decoding failed, skip it."?
> Usually some error message has already been printed out before skipping the packet.
Yeah. I think the only ways we get here without having already logged the failure are either an internal bug (the setup is broken somehow) or out-of-memory. Neither of those would be improved by a generic "decoding failed" message here.
Anyway, this was applied in libav and has already been applied here as a merge.
Thanks,
- Mark
More information about the ffmpeg-devel
mailing list