[FFmpeg-devel] [PATCH] Use AVERROR(ENOSYS) when it makes sense
Stefano Sabatini
stefano.sabatini-lala
Sun Apr 18 20:00:46 CEST 2010
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.
> > aviobuf.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> > 3ebfcdb689ae1ff25ed56f59e9f0fb08432ca6cc 0004-Make-url_fsize-return-AVERROR-ENOSYS-rather-than-AVE.patch
> > >From 492f5063961b0d63fd6dda4404a107aa99484d40 Mon Sep 17 00:00:00 2001
> > From: Stefano Sabatini <stefano.sabatini-lala at poste.it>
> > Date: Tue, 16 Mar 2010 23:10:21 +0100
> > Subject: [PATCH 4/5] Make url_fsize() 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 039b6d3..0c46327 100644
> > --- a/libavformat/aviobuf.c
> > +++ b/libavformat/aviobuf.c
> > @@ -197,7 +197,7 @@ int64_t url_fsize(ByteIOContext *s)
> > return AVERROR(EINVAL);
> >
> > if (!s->seek)
> > - return AVERROR(EPIPE);
> > + return AVERROR(ENOSYS);
> > size = s->seek(s->opaque, 0, AVSEEK_SIZE);
> > if(size<0){
> > if ((size = s->seek(s->opaque, -1, SEEK_END)) < 0)
>
> ok too
Applied.
BTW thanks to Howard for insisting on this :-).
--
FFmpeg = Fascinating and Fancy Mythic Portable Evil God
More information about the ffmpeg-devel
mailing list