[FFmpeg-devel] [PATCH] mpegts: Return AVERROR(EAGAIN) instead of -1 if there isn't enough data

Ronald S. Bultje rsbultje
Wed Oct 13 21:35:17 CEST 2010


Hi,

On Wed, Oct 13, 2010 at 3:32 PM, Martin Storsj? <martin at martin.st> wrote:
> On Wed, 13 Oct 2010, Baptiste Coudurier wrote:
>> On 10/13/2010 01:52 AM, Martin Storsjo wrote:
>> > This makes the rtpdec queue code able to process packets more efficiently,
>> > keeping the queue shorter, by parsing the next packet instead of returning
>> > the unidentified error code -1 as an error.
>> > ---
>> > ? libavformat/mpegts.c | ? ?2 +-
>> > ? 1 files changed, 1 insertions(+), 1 deletions(-)
>> >
>> > diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
>> > index d2f9f1e..13a9908 100644
>> > --- a/libavformat/mpegts.c
>> > +++ b/libavformat/mpegts.c
>> > @@ -1742,7 +1742,7 @@ int ff_mpegts_parse_packet(MpegTSContext *ts, AVPacket
>> > *pkt,
>> > ? ? ? ? ? if (ts->stop_parse>0)
>> > ? ? ? ? ? ? ? break;
>> > ? ? ? ? ? if (len< ?TS_PACKET_SIZE)
>> > - ? ? ? ? ? ?return -1;
>> > + ? ? ? ? ? ?return AVERROR(EAGAIN);
>> > ? ? ? ? ? if (buf[0] != 0x47) {
>> > ? ? ? ? ? ? ? buf++;
>> > ? ? ? ? ? ? ? len--;
>>
>> Nope, if we couldn't read TS_PACKET_SIZE, it is an error, there is no need to
>> retry.
>
> Well then, could this piece of code return some other specific error code,
> not just the generic -1, so that the caller knows that the actual error is
> "not enough data provided"?

Sounds a lot like what I had with rtp/asf, see the custom
ByteIOContext read handlers in rtpdec_asf.c, might be useful and was
acceptable to Michael, who voiced similar concerns.

Ronald



More information about the ffmpeg-devel mailing list