changeset 4520:9bf957e669f0 libavcodec

This fixes error handling for BeOS, removing the need for some ifdefs. AVERROR_ defines are moved to avcodec.h as they are needed in there as well. Feel free to move that to avutil/common.h. Bumped up avcodec/format version numbers as though it's binary compatible we will want to rebuild apps as error values changed. Please from now on use return AVERROR(EFOO) instead of the ugly return -EFOO in your code. This also removes the need for berrno.h.
author mmu_man
date Tue, 13 Feb 2007 18:26:14 +0000
parents b08a4d11e01c
children 891590781d9e
files avcodec.h dv.c g726.c gifdec.c sonic.c
diffstat 5 files changed, 24 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/avcodec.h	Tue Feb 13 16:06:50 2007 +0000
+++ b/avcodec.h	Tue Feb 13 18:26:14 2007 +0000
@@ -37,8 +37,8 @@
 #define AV_STRINGIFY(s)         AV_TOSTRING(s)
 #define AV_TOSTRING(s) #s
 
-#define LIBAVCODEC_VERSION_INT  ((51<<16)+(32<<8)+0)
-#define LIBAVCODEC_VERSION      51.32.0
+#define LIBAVCODEC_VERSION_INT  ((51<<16)+(33<<8)+0)
+#define LIBAVCODEC_VERSION      51.33.0
 #define LIBAVCODEC_BUILD        LIBAVCODEC_VERSION_INT
 
 #define LIBAVCODEC_IDENT        "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
@@ -2699,6 +2699,23 @@
 
 extern unsigned int av_xiphlacing(unsigned char *s, unsigned int v);
 
+/* error handling */
+#if EINVAL > 0
+#define AVERROR(e) (-(e)) /**< returns a negative error code from a POSIX error code, to return from library functions. */
+#define AVUNERROR(e) (-(e)) /**< returns a POSIX error code from a library function error return value. */
+#else
+/* some platforms have E* and errno already negated. */
+#define AVERROR(e) (e)
+#define AVUNERROR(e) (e)
+#endif
+#define AVERROR_UNKNOWN     AVERROR(EINVAL)  /**< unknown error */
+#define AVERROR_IO          AVERROR(EIO)     /**< i/o error */
+#define AVERROR_NUMEXPECTED AVERROR(EDOM)    /**< number syntax expected in filename */
+#define AVERROR_INVALIDDATA AVERROR(EINVAL)  /**< invalid data found */
+#define AVERROR_NOMEM       AVERROR(ENOMEM)  /**< not enough memory */
+#define AVERROR_NOFMT       AVERROR(EILSEQ)  /**< unknown format */
+#define AVERROR_NOTSUPP     AVERROR(ENOSYS)  /**< operation not supported */
+
 #ifdef __cplusplus
 }
 #endif
--- a/dv.c	Tue Feb 13 16:06:50 2007 +0000
+++ b/dv.c	Tue Feb 13 18:26:14 2007 +0000
@@ -125,7 +125,7 @@
 
         dv_vlc_map = av_mallocz_static(DV_VLC_MAP_LEV_SIZE*DV_VLC_MAP_RUN_SIZE*sizeof(struct dv_vlc_pair));
         if (!dv_vlc_map)
-            return -ENOMEM;
+            return AVERROR(ENOMEM);
 
         /* dv_anchor lets each thread know its Id */
         for (i=0; i<DV_ANCHOR_SIZE; i++)
@@ -157,7 +157,7 @@
 
         dv_rl_vlc = av_mallocz_static(dv_vlc.table_size * sizeof(RL_VLC_ELEM));
         if (!dv_rl_vlc)
-            return -ENOMEM;
+            return AVERROR(ENOMEM);
 
         for(i = 0; i < dv_vlc.table_size; i++){
             int code= dv_vlc.table[i][0];
--- a/g726.c	Tue Feb 13 16:06:50 2007 +0000
+++ b/g726.c	Tue Feb 13 18:26:14 2007 +0000
@@ -341,7 +341,7 @@
 
     avctx->coded_frame = avcodec_alloc_frame();
     if (!avctx->coded_frame)
-        return -ENOMEM;
+        return AVERROR(ENOMEM);
     avctx->coded_frame->key_frame = 1;
 
     return 0;
--- a/gifdec.c	Tue Feb 13 16:06:50 2007 +0000
+++ b/gifdec.c	Tue Feb 13 18:26:14 2007 +0000
@@ -87,7 +87,7 @@
     /* verify that all the image is inside the screen dimensions */
     if (left + width > s->screen_width ||
         top + height > s->screen_height)
-        return -EINVAL;
+        return AVERROR(EINVAL);
 
     /* build the palette */
     n = (1 << bits_per_pixel);
--- a/sonic.c	Tue Feb 13 16:06:50 2007 +0000
+++ b/sonic.c	Tue Feb 13 18:26:14 2007 +0000
@@ -601,7 +601,7 @@
 
     avctx->coded_frame = avcodec_alloc_frame();
     if (!avctx->coded_frame)
-        return -ENOMEM;
+        return AVERROR(ENOMEM);
     avctx->coded_frame->key_frame = 1;
     avctx->frame_size = s->block_align*s->downsampling;