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;
     }
     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;
 
     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"   
                 },
     { MFX_ERR_DEVICE_LOST,              AVERROR(EIO),    "device lost"         
                 },
     { MFX_ERR_INCOMPATIBLE_VIDEO_PARAM, AVERROR(EINVAL), "incompatible video 
parameters"        },
     { MFX_ERR_INVALID_VIDEO_PARAM,      AVERROR(EINVAL), "invalid video 
parameters"             },
     { MFX_ERR_UNDEFINED_BEHAVIOR,       AVERROR_BUG,     "undefined behavior"  
                 },
     { MFX_ERR_DEVICE_FAILED,            AVERROR(EIO),    "device failed"       
                 },
-    { MFX_ERR_MORE_BITSTREAM,           AVERROR(EAGAIN), "expect more 
bitstream at output"      },
     { MFX_ERR_INCOMPATIBLE_AUDIO_PARAM, AVERROR(EINVAL), "incompatible audio 
parameters"        },
     { MFX_ERR_INVALID_AUDIO_PARAM,      AVERROR(EINVAL), "invalid audio 
parameters"             },
 
-- 
2.0.0

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

Reply via email to