[FFmpeg-cvslog] CrystalHD: Fix usage of h264 parser.

Philip Langdale git at videolan.org
Sat Apr 16 17:23:08 CEST 2011


ffmpeg | branch: master | Philip Langdale <philipl at overt.org> | Wed Apr 13 22:00:18 2011 -0700| [bd9430db691d519cf0ed3922007faa7c68a7c223] | committer: Philip Langdale

CrystalHD: Fix usage of h264 parser.

I was using the wrong value to track the position of the parser in the
stream. For an error-free stream, the size of the frame and number of
bytes consumed will be the same, but in an error situation they can
diverge.

Signed-off-by: Philip Langdale <philipl at overt.org>

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

 libavcodec/crystalhd.c |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/libavcodec/crystalhd.c b/libavcodec/crystalhd.c
index b6e67cb..9bbb6e8 100644
--- a/libavcodec/crystalhd.c
+++ b/libavcodec/crystalhd.c
@@ -796,13 +796,19 @@ static int decode(AVCodecContext *avctx, void *data, int *data_size, AVPacket *a
 
         if (priv->parser) {
             uint8_t *pout;
-            int psize = len;
+            int psize;
+            const uint8_t *in_data = avpkt->data;
+            int in_len = len;
             H264Context *h = priv->parser->priv_data;
 
-            while (psize)
-                ret = av_parser_parse2(priv->parser, avctx, &pout, &psize,
-                                       avpkt->data, len, avctx->pkt->pts,
-                                       avctx->pkt->dts, len - psize);
+            while (in_len) {
+                int index;
+                index = av_parser_parse2(priv->parser, avctx, &pout, &psize,
+                                         in_data, in_len, avctx->pkt->pts,
+                                         avctx->pkt->dts, 0);
+                in_data += index;
+                in_len -= index;
+            }
             av_log(avctx, AV_LOG_VERBOSE,
                    "CrystalHD: parser picture type %d\n",
                    h->s.picture_structure);



More information about the ffmpeg-cvslog mailing list