[FFmpeg-cvslog] avcodec/dvbsubdec: DVB subtitles decoder: support of 5 bytes extradata format

mrlika git at videolan.org
Sun Feb 9 17:16:27 CET 2014


ffmpeg | branch: master | mrlika <andriy.lysnevych at gmail.com> | Mon Feb  3 14:11:05 2014 +0200| [36a62979537018a3c1572ede96dce6316b7daf5d] | committer: Michael Niedermayer

avcodec/dvbsubdec: DVB subtitles decoder: support of 5 bytes extradata format

Reviewed-by: Marton Balint <cus at passwd.hu>
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavcodec/dvbsubdec.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/libavcodec/dvbsubdec.c b/libavcodec/dvbsubdec.c
index 3863a44..551a1a2 100644
--- a/libavcodec/dvbsubdec.c
+++ b/libavcodec/dvbsubdec.c
@@ -367,11 +367,15 @@ static av_cold int dvbsub_init_decoder(AVCodecContext *avctx)
     int i, r, g, b, a = 0;
     DVBSubContext *ctx = avctx->priv_data;
 
-    if (!avctx->extradata || avctx->extradata_size != 4) {
-        av_log(avctx, AV_LOG_WARNING, "Invalid extradata, subtitle streams may be combined!\n");
+    if (!avctx->extradata || (avctx->extradata_size < 4) || ((avctx->extradata_size % 5 != 0) && (avctx->extradata_size != 4))) {
+        av_log(avctx, AV_LOG_WARNING, "Invalid DVB subtitles stream extradata!\n");
         ctx->composition_id = -1;
         ctx->ancillary_id   = -1;
     } else {
+        if (avctx->extradata_size > 5) {
+            av_log(avctx, AV_LOG_WARNING, "Decoding first DVB subtitles sub-stream\n");
+        }
+
         ctx->composition_id = AV_RB16(avctx->extradata);
         ctx->ancillary_id   = AV_RB16(avctx->extradata + 2);
     }



More information about the ffmpeg-cvslog mailing list