[FFmpeg-devel] [PATCH] Use AVERROR(ENOSYS) when it makes sense

Michael Niedermayer michaelni
Mon Apr 19 00:44:09 CEST 2010


On Sun, Apr 18, 2010 at 08:00:46PM +0200, Stefano Sabatini wrote:
> On date Sunday 2010-04-18 02:18:05 +0200, Michael Niedermayer encoded:
> > On Sat, Apr 03, 2010 at 01:46:24PM +0200, Stefano Sabatini wrote:
> > > Hi, as in subject.
> > > -- 
> > > FFmpeg = Fucking and Fabulous Moronic Peaceful Elitarian Genius
> > 
> > >  avio.c |    2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 71a210d2b465f2880ffdcac6a830ffed640659de  0002-Make-url_seek-return-AVERROR-ENOSYS-rather-than-AVER.patch
> > > >From e66cec2193ee289f742120f92db17f33e7651fba Mon Sep 17 00:00:00 2001
> > > From: Stefano Sabatini <stefano.sabatini-lala at poste.it>
> > > Date: Tue, 16 Mar 2010 22:48:37 +0100
> > > Subject: [PATCH 2/5] Make url_seek() return AVERROR(ENOSYS) rather than AVERROR(EPIPE) in
> > >  the case where the seek operation is not defined in the protocol
> > >  handler.
> > > 
> > > ---
> > >  libavformat/avio.c |    2 +-
> > >  1 files changed, 1 insertions(+), 1 deletions(-)
> > > 
> > > diff --git a/libavformat/avio.c b/libavformat/avio.c
> > > index af9e049..3fb64d1 100644
> > > --- a/libavformat/avio.c
> > > +++ b/libavformat/avio.c
> > > @@ -201,7 +201,7 @@ int64_t url_seek(URLContext *h, int64_t pos, int whence)
> > >      int64_t ret;
> > >  
> > >      if (!h->prot->url_seek)
> > > -        return AVERROR(EPIPE);
> > > +        return AVERROR(ENOSYS);
> > >      ret = h->prot->url_seek(h, pos, whence & ~AVSEEK_FORCE);
> > >      return ret;
> > >  }
> > > -- 
> > > 1.7.0
> > > 
> > 
> > ok
> 
> Applied.
> > 
> > 
> > >  aviobuf.c |    2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 99a68a52eeec23be59fe671048fcead6fe6c4c9d  0003-Make-url_fseek-return-AVERROR-ENOSYS-rather-than-AVE.patch
> > > >From f11131bc3a2e08f46b291e4fa849e7e8c642c757 Mon Sep 17 00:00:00 2001
> > > From: Stefano Sabatini <stefano.sabatini-lala at poste.it>
> > > Date: Tue, 16 Mar 2010 23:08:32 +0100
> > > Subject: [PATCH 3/5] Make url_fseek() return AVERROR(ENOSYS) rather than AVERROR(EPIPE) if
> > >  the seek operation is not defined in the ByteIOContext.
> > > 
> > > ---
> > >  libavformat/aviobuf.c |    2 +-
> > >  1 files changed, 1 insertions(+), 1 deletions(-)
> > > 
> > > diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
> > > index 37a6f6d..039b6d3 100644
> > > --- a/libavformat/aviobuf.c
> > > +++ b/libavformat/aviobuf.c
> > > @@ -160,7 +160,7 @@ int64_t url_fseek(ByteIOContext *s, int64_t offset, int whence)
> > >              return AVERROR_EOF;
> > >          s->buf_ptr = s->buf_end + offset - s->pos;
> > >      } else {
> > > -        int64_t res = AVERROR(EPIPE);
> > > +        int64_t res = AVERROR(ENOSYS);
> > >  
> > >  #if CONFIG_MUXERS || CONFIG_NETWORK
> > >          if (s->write_flag) {
> > > -- 
> > > 1.7.0
> > > 
> > 
> > this is definitly wrong,seeking can succeed even without underlaying seek()
> 
> There is exactly one case where url_fseek() fails if the seek callback
> is not defined in the ByteIOContext, which is covered by this patch,
> please check again.

ENOSYS means it will always fail, this is not the case, it only fails
if the seek is outside the available buffer.

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

When the tyrant has disposed of foreign enemies by conquest or treaty, and
there is nothing more to fear from them, then he is always stirring up
some war or other, in order that the people may require a leader. -- Plato
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100419/0f2ef7c9/attachment.pgp>



More information about the ffmpeg-devel mailing list