[FFmpeg-devel] [PATCH] CrystalHD: Fix usage of h264 parser.
Philip Langdale
philipl at overt.org
Thu Apr 14 07:19:18 CEST 2011
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>
---
libavcodec/crystalhd.c | 14 +++++++++-----
1 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/libavcodec/crystalhd.c b/libavcodec/crystalhd.c
index b6e67cb..dc232fa 100644
--- a/libavcodec/crystalhd.c
+++ b/libavcodec/crystalhd.c
@@ -796,13 +796,17 @@ static int decode(AVCodecContext *avctx, void *data, int *data_size, AVPacket *a
if (priv->parser) {
uint8_t *pout;
- int psize = len;
+ int psize;
+ int consumed = 0;
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 (consumed < len) {
+ int offset;
+ offset = av_parser_parse2(priv->parser, avctx, &pout, &psize,
+ avpkt->data, len, avctx->pkt->pts,
+ avctx->pkt->dts, consumed);
+ consumed += offset;
+ }
av_log(avctx, AV_LOG_VERBOSE,
"CrystalHD: parser picture type %d\n",
h->s.picture_structure);
--
1.7.4.1
More information about the ffmpeg-devel
mailing list