[FFmpeg-cvslog] lavc/flacdec: Add frame CRC calculation

James Almer git at videolan.org
Sat Mar 2 18:32:10 CET 2013


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Sat Feb 16 06:07:49 2013 -0300| [1d5b35cc07c72c3359042a2f13f879cfb2ef549b] | committer: Paul B Mahol

lavc/flacdec: Add frame CRC calculation

Fixes ticket #2266

Signed-off-by: James Almer <jamrial at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1d5b35cc07c72c3359042a2f13f879cfb2ef549b
---

 libavcodec/flacdec.c |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/libavcodec/flacdec.c b/libavcodec/flacdec.c
index f264d20..91a25f0 100644
--- a/libavcodec/flacdec.c
+++ b/libavcodec/flacdec.c
@@ -533,7 +533,15 @@ static int flac_decode_frame(AVCodecContext *avctx, void *data,
         av_log(s->avctx, AV_LOG_ERROR, "decode_frame() failed\n");
         return -1;
     }
-    bytes_read = (get_bits_count(&s->gb)+7)/8;
+    bytes_read = get_bits_count(&s->gb)/8;
+
+    if ((s->avctx->err_recognition & AV_EF_CRCCHECK) &&
+        av_crc(av_crc_get_table(AV_CRC_16_ANSI),
+               0, buf, bytes_read)) {
+        av_log(s->avctx, AV_LOG_ERROR, "CRC error at PTS %"PRId64"\n", avpkt->pts);
+        if (s->avctx->err_recognition & AV_EF_EXPLODE)
+            return AVERROR_INVALIDDATA;
+    }
 
     /* get output buffer */
     frame->nb_samples = s->blocksize;



More information about the ffmpeg-cvslog mailing list