From 86f85dca307ddfab83c92109195f44f4433791e2 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sat, 2 Nov 2002 08:55:46 +0000 Subject: [PATCH] cleanup Originally committed as revision 1142 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/mpeg12.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 8cf31b5158..a435fe8c0b 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -1559,7 +1559,18 @@ static void mpeg_decode_extension(AVCodecContext *avctx, } } -/* return 1 if end of frame */ +#define DECODE_SLICE_FATAL_ERROR -2 +#define DECODE_SLICE_ERROR -1 +#define DECODE_SLICE_OK 0 +#define DECODE_SLICE_EOP 1 + +/** + * decodes a slice. + * @return DECODE_SLICE_FATAL_ERROR if a non recoverable error occured
+ * DECODE_SLICE_ERROR if the slice is damaged
+ * DECODE_SLICE_OK if this slice is ok
+ * DECODE_SLICE_EOP if the end of the picture is reached + */ static int mpeg_decode_slice(AVCodecContext *avctx, AVPicture *pict, int start_code, @@ -1572,7 +1583,7 @@ static int mpeg_decode_slice(AVCodecContext *avctx, start_code = (start_code - 1) & 0xff; if (start_code >= s->mb_height){ fprintf(stderr, "slice below image (%d >= %d)\n", start_code, s->mb_height); - return -1; + return DECODE_SLICE_ERROR; } s->last_dc[0] = 1 << (7 + s->intra_dc_precision); s->last_dc[1] = s->last_dc[0]; @@ -1582,7 +1593,7 @@ static int mpeg_decode_slice(AVCodecContext *avctx, if (s->first_slice) { s->first_slice = 0; if(MPV_frame_start(s, avctx) < 0) - return -2; + return DECODE_SLICE_FATAL_ERROR; } init_get_bits(&s->gb, buf, buf_size); @@ -1651,7 +1662,7 @@ static int mpeg_decode_slice(AVCodecContext *avctx, } if(s->mb_y >= s->mb_height){ fprintf(stderr, "slice too long\n"); - return -1; + return DECODE_SLICE_ERROR; } } eos: //end of slice @@ -1689,12 +1700,12 @@ eos: //end of slice pict->linesize[0] = s->linesize; pict->linesize[1] = s->uvlinesize; pict->linesize[2] = s->uvlinesize; - return 1; + return DECODE_SLICE_EOP; } else { - return 0; + return DECODE_SLICE_OK; } } else { - return 0; + return DECODE_SLICE_OK; } } @@ -1902,7 +1913,7 @@ static int mpeg_decode_frame(AVCodecContext *avctx, start_code <= SLICE_MAX_START_CODE) { ret = mpeg_decode_slice(avctx, picture, start_code, s->buffer, input_size); - if (ret == 1) { + if (ret == DECODE_SLICE_EOP) { /* got a picture: exit */ /* first check if we must repeat the frame */ avctx->repeat_pict = 0; @@ -1930,7 +1941,7 @@ static int mpeg_decode_frame(AVCodecContext *avctx, goto the_end; }else if(ret<0){ printf("Error while decoding slice\n"); - if(ret<-1) return -1; + if(ret==DECODE_SLICE_FATAL_ERROR) return -1; } } break;