skip unsupported frame types and substream id's
authorJustin Ruggles <justin.ruggles@gmail.com>
Sat, 7 Jun 2008 22:29:27 +0000 (22:29 +0000)
committerJustin Ruggles <justin.ruggles@gmail.com>
Sat, 7 Jun 2008 22:29:27 +0000 (22:29 +0000)
Originally committed as revision 13691 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/ac3dec.c

index 9bfbec3..b7941c1 100644 (file)
@@ -1175,7 +1175,14 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, int *data_size,
                 av_log(avctx, AV_LOG_ERROR, "invalid frame size\n");
                 break;
             case AC3_PARSE_ERROR_FRAME_TYPE:
+                /* skip frame if CRC is ok. otherwise use error concealment. */
+                /* TODO: add support for substreams and dependent frames */
+                if(s->frame_type == EAC3_FRAME_TYPE_DEPENDENT || s->substreamid) {
+                    av_log(avctx, AV_LOG_ERROR, "unsupported frame type : skipping frame\n");
+                    return s->frame_size;
+                } else {
                 av_log(avctx, AV_LOG_ERROR, "invalid frame type\n");
+                }
                 break;
             default:
                 av_log(avctx, AV_LOG_ERROR, "invalid header\n");