[FFmpeg-cvslog] dca: handle errors from dca_decode_block()

Justin Ruggles git at videolan.org
Sun Oct 30 02:04:17 CEST 2011


ffmpeg | branch: master | Justin Ruggles <justin.ruggles at gmail.com> | Thu Oct 27 11:45:50 2011 -0400| [272fcc32bb0d3b552390d15213201756fdf27d74] | committer: Justin Ruggles

dca: handle errors from dca_decode_block()

Return error if core block decoding fails.
Do not enable XCh if XCh extension block decoding fails.

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

 libavcodec/dca.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/libavcodec/dca.c b/libavcodec/dca.c
index deb7245..7f7bcf9 100644
--- a/libavcodec/dca.c
+++ b/libavcodec/dca.c
@@ -1668,7 +1668,10 @@ static int dca_decode_frame(AVCodecContext * avctx,
     s->profile = FF_PROFILE_DTS;
 
     for (i = 0; i < (s->sample_blocks / 8); i++) {
-        dca_decode_block(s, 0, i);
+        if ((ret = dca_decode_block(s, 0, i))) {
+            av_log(avctx, AV_LOG_ERROR, "error decoding block\n");
+            return ret;
+        }
     }
 
     /* record number of core channels incase less than max channels are requested */
@@ -1724,7 +1727,10 @@ static int dca_decode_frame(AVCodecContext * avctx,
             dca_parse_audio_coding_header(s, s->xch_base_channel);
 
             for (i = 0; i < (s->sample_blocks / 8); i++) {
-                dca_decode_block(s, s->xch_base_channel, i);
+                if ((ret = dca_decode_block(s, s->xch_base_channel, i))) {
+                    av_log(avctx, AV_LOG_ERROR, "error decoding XCh extension\n");
+                    continue;
+                }
             }
 
             s->xch_present = 1;



More information about the ffmpeg-cvslog mailing list