mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Remove a NAL unit's trailing zero bytes even when dst_length is 1.
Consider the following byte sequence 00 00 01 0a 00 00 00 01 09 ... ^ ^ A B decode_nal() determines dst_length to be 1 (i. e. the byte between label A and B above). However, this byte is a trailing zero byte as the spec says the the current NAL unit is terminated by a byte sequence 00 00 00. The current code used a loop to decrement dst_length accordingly. But the loop doesn't start as the loop condition checks for dst_length > 1, which should read dst_length > 0. patch by Reinhard Nissl, rnissl gmx de Originally committed as revision 8689 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
ff82e429cb
commit
6ac9696e77
@ -8147,7 +8147,7 @@ static int decode_nal_units(H264Context *h, uint8_t *buf, int buf_size){
|
|||||||
if (ptr==NULL || dst_length < 0){
|
if (ptr==NULL || dst_length < 0){
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
while(ptr[dst_length - 1] == 0 && dst_length > 1)
|
while(ptr[dst_length - 1] == 0 && dst_length > 0)
|
||||||
dst_length--;
|
dst_length--;
|
||||||
bit_length= 8*dst_length - decode_rbsp_trailing(h, ptr + dst_length - 1);
|
bit_length= 8*dst_length - decode_rbsp_trailing(h, ptr + dst_length - 1);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user