changeset 826:ce240888252d libavcodec

cleanup
author michaelni
date Sat, 02 Nov 2002 08:55:46 +0000
parents 92c6d8b71e3b
children 770578c6c300
files mpeg12.c
diffstat 1 files changed, 20 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/mpeg12.c	Sat Nov 02 01:43:19 2002 +0000
+++ b/mpeg12.c	Sat Nov 02 08:55:46 2002 +0000
@@ -1559,7 +1559,18 @@
     }
 }
 
-/* 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<br>
+ *         DECODE_SLICE_ERROR if the slice is damaged<br>
+ *         DECODE_SLICE_OK if this slice is ok<br>
+ *         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 @@
     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 @@
     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 @@
         }
         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 @@
             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 @@
                         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 @@
                             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;