Quoting wm4 (2017-02-17 07:33:14)
> On Thu, 16 Feb 2017 17:34:30 +0100
> Anton Khirnov <an...@khirnov.net> wrote:
> 
> > This error is treated specially by the API.
> > 
> > CC: libav-sta...@libav.org
> > ---
> >  libavcodec/aacdec.c | 6 +++---
> >  libavcodec/nvenc.c  | 8 +++++---
> >  libavcodec/qsv.c    | 8 +++++---
> >  3 files changed, 13 insertions(+), 9 deletions(-)
> > 
> > diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
> > index 22ebcdc..76c1b16 100644
> > --- a/libavcodec/aacdec.c
> > +++ b/libavcodec/aacdec.c
> > @@ -3228,7 +3228,7 @@ static int read_audio_mux_element(struct LATMContext 
> > *latmctx,
> >      } else if (!latmctx->aac_ctx.avctx->extradata) {
> >          av_log(latmctx->aac_ctx.avctx, AV_LOG_DEBUG,
> >                 "no decoder config found\n");
> > -        return AVERROR(EAGAIN);
> > +        return 1;
> 
> The 1 looks odd here, why not 0? Though it seems the return value is
> discarded if it's not negative anyway.

To distinguish it from 0, which is the "parsing successful" return
value.

> 
> >      }
> >      if (latmctx->audio_mux_version_A == 0) {
> >          int mux_slot_length_bytes = read_payload_length_info(latmctx, gb);
> > @@ -3265,8 +3265,8 @@ static int latm_decode_frame(AVCodecContext *avctx, 
> > void *out,
> >      if (muxlength > avpkt->size)
> >          return AVERROR_INVALIDDATA;
> >  
> > -    if ((err = read_audio_mux_element(latmctx, &gb)) < 0)
> > -        return err;
> > +    if ((err = read_audio_mux_element(latmctx, &gb)))
> > +        return (err < 0) ? err : avpkt->data;
> 
> Wait a moment, you return a pointer as an int?

Yes, I'm dumb. Changed to avpkt->size locally.

> 
> >  
> >      if (!latmctx->initialized) {
> >          if (!avctx->extradata) {
> > diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c
> > index 90b9d1a..e8cf4b4 100644
> > --- a/libavcodec/nvenc.c
> > +++ b/libavcodec/nvenc.c
> > @@ -123,12 +123,14 @@ static const struct {
> >      { NV_ENC_ERR_OUT_OF_MEMORY,            AVERROR(ENOMEM),  "out of 
> > memory"            },
> >      { NV_ENC_ERR_ENCODER_NOT_INITIALIZED,  AVERROR(EINVAL),  "encoder not 
> > initialized"  },
> >      { NV_ENC_ERR_UNSUPPORTED_PARAM,        AVERROR(ENOSYS),  "unsupported 
> > param"        },
> > -    { NV_ENC_ERR_LOCK_BUSY,                AVERROR(EAGAIN),  "lock busy"   
> >              },
> > +    { NV_ENC_ERR_LOCK_BUSY,                AVERROR(EBUSY),   "lock busy"   
> >              },
> >      { NV_ENC_ERR_NOT_ENOUGH_BUFFER,        AVERROR(ENOBUFS), "not enough 
> > buffer"        },
> >      { NV_ENC_ERR_INVALID_VERSION,          AVERROR(EINVAL),  "invalid 
> > version"          },
> >      { NV_ENC_ERR_MAP_FAILED,               AVERROR(EIO),     "map failed"  
> >              },
> > -    { NV_ENC_ERR_NEED_MORE_INPUT,          AVERROR(EAGAIN),  "need more 
> > input"          },
> > -    { NV_ENC_ERR_ENCODER_BUSY,             AVERROR(EAGAIN),  "encoder 
> > busy"             },
> > +    /* this is error should always be treated specially, so this "mapping"
> > +     * is for completeness only */
> > +    { NV_ENC_ERR_NEED_MORE_INPUT,          AVERROR_UNKNOWN,  "need more 
> > input"          },
> > +    { NV_ENC_ERR_ENCODER_BUSY,             AVERROR(EBUSY),   "encoder 
> > busy"             },
> >      { NV_ENC_ERR_EVENT_NOT_REGISTERD,      AVERROR(EBADF),   "event not 
> > registered"     },
> >      { NV_ENC_ERR_GENERIC,                  AVERROR_UNKNOWN,  "generic 
> > error"            },
> >      { NV_ENC_ERR_INCOMPATIBLE_CLIENT_KEY,  AVERROR(EINVAL),  "incompatible 
> > client key"  },
> > diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c
> > index ab48bb0..735e153 100644
> > --- a/libavcodec/qsv.c
> > +++ b/libavcodec/qsv.c
> > @@ -94,15 +94,17 @@ static const struct {
> >      { MFX_ERR_LOCK_MEMORY,              AVERROR(EIO),    "failed to lock 
> > the memory block"      },
> >      { MFX_ERR_NOT_INITIALIZED,          AVERROR_BUG,     "not initialized" 
> >                      },
> >      { MFX_ERR_NOT_FOUND,                AVERROR(ENOSYS), "specified object 
> > was not found"       },
> > -    { MFX_ERR_MORE_DATA,                AVERROR(EAGAIN), "expect more data 
> > at input"            },
> > -    { MFX_ERR_MORE_SURFACE,             AVERROR(EAGAIN), "expect more 
> > surface at output"        },
> > +    /* the following 3 errors should always be handled explicitly, so 
> > those "mappings"
> > +     * are for completeness only */
> > +    { MFX_ERR_MORE_DATA,                AVERROR_UNKNOWN, "expect more data 
> > at input"            },
> > +    { MFX_ERR_MORE_SURFACE,             AVERROR_UNKNOWN, "expect more 
> > surface at output"        },
> > +    { MFX_ERR_MORE_BITSTREAM,           AVERROR_UNKNOWN, "expect more 
> > bitstream at output"      },
> >      { MFX_ERR_ABORTED,                  AVERROR_UNKNOWN, "operation 
> > aborted"                    },
> 
> Why not AVERROR_EXTERNAL?

Because it doesn't exist and as the above comment says, the value
doesn't matter anyway.

-- 
Anton Khirnov
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to