Fixes Ticket3923
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 033a5334badd8af48f13c6fd1e6827f8e3f2c2f3)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
... | ... |
@@ -634,7 +634,7 @@ const uint8_t *ff_h264_decode_nal(H264Context *h, const uint8_t *src, |
634 | 634 |
|
635 | 635 |
#define STARTCODE_TEST \ |
636 | 636 |
if (i + 2 < length && src[i + 1] == 0 && src[i + 2] <= 3) { \ |
637 |
- if (src[i + 2] != 3) { \ |
|
637 |
+ if (src[i + 2] != 3 && src[i + 2] != 0) { \ |
|
638 | 638 |
/* startcode, so we must be past the end */ \ |
639 | 639 |
length = i; \ |
640 | 640 |
} \ |
... | ... |
@@ -707,7 +707,7 @@ const uint8_t *ff_h264_decode_nal(H264Context *h, const uint8_t *src, |
707 | 707 |
if (src[si + 2] > 3) { |
708 | 708 |
dst[di++] = src[si++]; |
709 | 709 |
dst[di++] = src[si++]; |
710 |
- } else if (src[si] == 0 && src[si + 1] == 0) { |
|
710 |
+ } else if (src[si] == 0 && src[si + 1] == 0 && src[si + 2] != 0) { |
|
711 | 711 |
if (src[si + 2] == 3) { // escape |
712 | 712 |
dst[di++] = 0; |
713 | 713 |
dst[di++] = 0; |