On 29/04/12 18:11, Ronald S. Bultje wrote:
> Hi,
> 
> On Sun, Apr 29, 2012 at 5:56 PM, Luca Barbato <[email protected]> wrote:
>> Do return error if memory allocation or I/O fails.
>> ---
>>  libavformat/matroskadec.c |    5 +++++
>>  1 files changed, 5 insertions(+), 0 deletions(-)
>>
>> diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
>> index 5688658..3b78ae3 100644
>> --- a/libavformat/matroskadec.c
>> +++ b/libavformat/matroskadec.c
>> @@ -2069,6 +2069,11 @@ static int matroska_read_packet(AVFormatContext *s, 
>> AVPacket *pkt)
>>         ret = matroska_parse_cluster(matroska);
>>     }
>>
>> +    if (ret == AVERROR_INVALIDDATA) {
>> +        pkt->flags |= AV_PKT_FLAG_CORRUPT;
>> +        return 0;
>> +    }
>> +
>>     return ret;
>>  }
> 
> Only if error resilience flags allow us to. Does this work if we
> didn't finish parsing the block yet, i.e. do we drop the rest of the
> data or do we recover gracefully?

ER isn't involved, you are getting whole packets out of the demuxer, you
have a mean to drop them automagically depending on
AVFMT_FLAG_DISCARD_CORRUPT

The behavior is in line with ogg and mpegts demuxer.

lu

-- 

Luca Barbato
Gentoo/linux
http://dev.gentoo.org/~lu_zero

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to