Mercurial > libavcodec.hg
changeset 771:d4cc92144266 libavcodec
handle direct rendering buffer allocation failure
author | michaelni |
---|---|
date | Sun, 27 Oct 2002 00:02:23 +0000 |
parents | d1770a34e4f6 |
children | 311ac50375e4 |
files | avcodec.h h263dec.c mpeg12.c mpegvideo.c mpegvideo.h rv10.c svq1.c |
diffstat | 7 files changed, 19 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/avcodec.h Sat Oct 26 18:56:43 2002 +0000 +++ b/avcodec.h Sun Oct 27 00:02:23 2002 +0000 @@ -5,8 +5,8 @@ #define LIBAVCODEC_VERSION_INT 0x000406 #define LIBAVCODEC_VERSION "0.4.6" -#define LIBAVCODEC_BUILD 4631 -#define LIBAVCODEC_BUILD_STR "4631" +#define LIBAVCODEC_BUILD 4632 +#define LIBAVCODEC_BUILD_STR "4632" enum CodecID { CODEC_ID_NONE, @@ -503,7 +503,7 @@ * encoding: unused * decoding: set by user */ - void (*get_buffer_callback)(struct AVCodecContext *c, int width, int height, int pict_type); + int (*get_buffer_callback)(struct AVCodecContext *c, int width, int height, int pict_type); /** * is 1 if the decoded stream contains b frames, 0 otherwise
--- a/h263dec.c Sat Oct 26 18:56:43 2002 +0000 +++ b/h263dec.c Sun Oct 27 00:02:23 2002 +0000 @@ -457,7 +457,8 @@ s->next_p_frame_damaged=0; } - MPV_frame_start(s, avctx); + if(MPV_frame_start(s, avctx) < 0) + return -1; #ifdef DEBUG printf("qscale=%d\n", s->qscale);
--- a/mpeg12.c Sat Oct 26 18:56:43 2002 +0000 +++ b/mpeg12.c Sun Oct 27 00:02:23 2002 +0000 @@ -1581,7 +1581,8 @@ /* start frame decoding */ if (s->first_slice) { s->first_slice = 0; - MPV_frame_start(s, avctx); + if(MPV_frame_start(s, avctx) < 0) + return -1; } init_get_bits(&s->gb, buf, buf_size);
--- a/mpegvideo.c Sat Oct 26 18:56:43 2002 +0000 +++ b/mpegvideo.c Sun Oct 27 00:02:23 2002 +0000 @@ -791,7 +791,7 @@ } /* generic function for encode/decode called before a frame is coded/decoded */ -void MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx) +int MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx) { int i; UINT8 *tmp; @@ -800,7 +800,10 @@ avctx->mbskip_table= s->mbskip_table; if(avctx->flags&CODEC_FLAG_DR1){ - avctx->get_buffer_callback(avctx, s->width, s->height, s->pict_type); + if(avctx->get_buffer_callback(avctx, s->width, s->height, s->pict_type) < 0){ + fprintf(stderr, "get_buffer() failed\n"); + return -1; + } s->linesize = avctx->dr_stride; s->uvlinesize= avctx->dr_uvstride; @@ -854,6 +857,8 @@ s->dct_unquantize = s->dct_unquantize_h263; }else s->dct_unquantize = s->dct_unquantize_mpeg1; + + return 0; } /* generic function for encode/decode called after a frame has been coded/decoded */
--- a/mpegvideo.h Sat Oct 26 18:56:43 2002 +0000 +++ b/mpegvideo.h Sun Oct 27 00:02:23 2002 +0000 @@ -518,7 +518,7 @@ int MPV_common_init(MpegEncContext *s); void MPV_common_end(MpegEncContext *s); void MPV_decode_mb(MpegEncContext *s, DCTELEM block[6][64]); -void MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx); +int MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx); void MPV_frame_end(MpegEncContext *s); #ifdef HAVE_MMX void MPV_common_init_mmx(MpegEncContext *s);