# HG changeset patch # User mmu_man # Date 1171391174 0 # Node ID 9bf957e669f0b46f6f7450f83b2f55d385273d12 # Parent b08a4d11e01c2c8ecf595873f7d5b4d84e08d780 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. diff -r b08a4d11e01c -r 9bf957e669f0 avcodec.h --- 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 diff -r b08a4d11e01c -r 9bf957e669f0 dv.c --- 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; icoded_frame = avcodec_alloc_frame(); if (!avctx->coded_frame) - return -ENOMEM; + return AVERROR(ENOMEM); avctx->coded_frame->key_frame = 1; return 0; diff -r b08a4d11e01c -r 9bf957e669f0 gifdec.c --- 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); diff -r b08a4d11e01c -r 9bf957e669f0 sonic.c --- 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;