|
|
@ -248,7 +248,7 @@ const uint8_t *ff_h264_decode_nal(H264Context *h, const uint8_t *src, |
|
|
|
|
|
|
|
|
|
|
|
#define STARTCODE_TEST \ |
|
|
|
#define STARTCODE_TEST \ |
|
|
|
if (i + 2 < length && src[i + 1] == 0 && src[i + 2] <= 3) { \
|
|
|
|
if (i + 2 < length && src[i + 1] == 0 && src[i + 2] <= 3) { \
|
|
|
|
if (src[i + 2] != 3) { \
|
|
|
|
if (src[i + 2] != 3 && src[i + 2] != 0) { \
|
|
|
|
/* startcode, so we must be past the end */ \
|
|
|
|
/* startcode, so we must be past the end */ \
|
|
|
|
length = i; \
|
|
|
|
length = i; \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
@ -320,7 +320,7 @@ const uint8_t *ff_h264_decode_nal(H264Context *h, const uint8_t *src, |
|
|
|
if (src[si + 2] > 3) { |
|
|
|
if (src[si + 2] > 3) { |
|
|
|
dst[di++] = src[si++]; |
|
|
|
dst[di++] = src[si++]; |
|
|
|
dst[di++] = src[si++]; |
|
|
|
dst[di++] = src[si++]; |
|
|
|
} else if (src[si] == 0 && src[si + 1] == 0) { |
|
|
|
} else if (src[si] == 0 && src[si + 1] == 0 && src[si + 2] != 0) { |
|
|
|
if (src[si + 2] == 3) { // escape
|
|
|
|
if (src[si + 2] == 3) { // escape
|
|
|
|
dst[di++] = 0; |
|
|
|
dst[di++] = 0; |
|
|
|
dst[di++] = 0; |
|
|
|
dst[di++] = 0; |
|
|
|