diff options
author | Reinhard Nissl <rnissl@gmx.de> | 2007-04-09 14:10:07 +0000 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2007-04-09 14:10:07 +0000 |
commit | ad1ea1f1552d3fff4a6a77ced099305e4378ad84 (patch) | |
tree | 93ed7a5a9166f0b5dd264f18cf205c726d0919fd /libavcodec/h264.c | |
parent | 6ac9696e774d0fd0905bf08415cc8c58ef1cb3e7 (diff) | |
download | ffmpeg-ad1ea1f1552d3fff4a6a77ced099305e4378ad84.tar.gz |
When dst_length == 0 bit_length has to be 0, too, but the current code still
calls decode_rbsp_trailing() and therefore bit_length might get negative.
Although the remaining code is able to handle a negative bit_length, avoid
the calculation at all by setting bit_length to 0 for dst_length == 0.
patch by Reinhard Nissl, rnissl gmx de
Originally committed as revision 8690 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/h264.c')
-rw-r--r-- | libavcodec/h264.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 8675572b80..4fcdb75bce 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -8149,7 +8149,7 @@ static int decode_nal_units(H264Context *h, uint8_t *buf, int buf_size){ } while(ptr[dst_length - 1] == 0 && dst_length > 0) dst_length--; - bit_length= 8*dst_length - decode_rbsp_trailing(h, ptr + dst_length - 1); + bit_length= !dst_length ? 0 : (8*dst_length - decode_rbsp_trailing(h, ptr + dst_length - 1)); if(s->avctx->debug&FF_DEBUG_STARTCODE){ av_log(h->s.avctx, AV_LOG_DEBUG, "NAL %d at %d/%d length %d\n", h->nal_unit_type, buf_index, buf_size, dst_length); |