Video decoders always consume full packets.
---
libavcodec/h264dec.c | 20 +++-----------------
1 file changed, 3 insertions(+), 17 deletions(-)
diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
index 6ce0287..a68a9ad 100644
--- a/libavcodec/h264dec.c
+++ b/libavcodec/h264dec.c
@@ -628,19 +628,6 @@ end:
return (ret < 0) ? ret : buf_size;
}
-/**
- * Return the number of bytes consumed for building the current frame.
- */
-static int get_consumed_bytes(int pos, int buf_size)
-{
- if (pos == 0)
- pos = 1; // avoid infinite loops (I doubt that is needed but...)
- if (pos + 10 > buf_size)
- pos = buf_size; // oops ;)
-
- return pos;
-}
-
static int h264_decode_frame(AVCodecContext *avctx, void *data,
int *got_frame, AVPacket *avpkt)
{
@@ -648,7 +635,6 @@ static int h264_decode_frame(AVCodecContext *avctx, void
*data,
int buf_size = avpkt->size;
H264Context *h = avctx->priv_data;
AVFrame *pict = data;
- int buf_index = 0;
int ret;
const uint8_t *new_extradata;
int new_extradata_size;
@@ -681,8 +667,8 @@ static int h264_decode_frame(AVCodecContext *avctx, void
*data,
return ret;
}
- buf_index = decode_nal_units(h, buf, buf_size);
- if (buf_index < 0)
+ ret = decode_nal_units(h, buf, buf_size);
+ if (ret < 0)
return AVERROR_INVALIDDATA;
if (!(avctx->flags2 & AV_CODEC_FLAG2_CHUNKS) && !h->cur_pic_ptr) {
@@ -706,7 +692,7 @@ static int h264_decode_frame(AVCodecContext *avctx, void
*data,
assert(pict->buf[0] || !*got_frame);
- return get_consumed_bytes(buf_index, buf_size);
+ return buf_size;
}
#define OFFSET(x) offsetof(H264Context, x)
--
2.0.0
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel