diff h264.c @ 4829:e3161603a048 libavcodec

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
author diego
date Mon, 09 Apr 2007 13:39:35 +0000
parents 58f1856608f6
children 5a523aee7379
line wrap: on
line diff
--- a/h264.c	Mon Apr 09 12:55:07 2007 +0000
+++ b/h264.c	Mon Apr 09 13:39:35 2007 +0000
@@ -8147,7 +8147,7 @@
         if (ptr==NULL || dst_length < 0){
             return -1;
         }
-        while(ptr[dst_length - 1] == 0 && dst_length > 1)
+        while(ptr[dst_length - 1] == 0 && dst_length > 0)
             dst_length--;
         bit_length= 8*dst_length - decode_rbsp_trailing(h, ptr + dst_length - 1);