From 8d0cc8ca97678f4ca87948ebabcbaab5a4f4c1f6 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Mon, 21 Mar 2016 15:38:31 +0100 Subject: h264_parser: switch to h2645_parse for NAL unescaping Remove now unused ff_h264_decode_nal(). --- libavcodec/h264.c | 106 ------------------------------------------------------ 1 file changed, 106 deletions(-) (limited to 'libavcodec/h264.c') diff --git a/libavcodec/h264.c b/libavcodec/h264.c index acda35b94f..da7f88f66c 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -116,112 +116,6 @@ void ff_h264_draw_horiz_band(const H264Context *h, H264SliceContext *sl, } } -const uint8_t *ff_h264_decode_nal(H264Context *h, H264SliceContext *sl, - const uint8_t *src, - int *dst_length, int *consumed, int length) -{ - int i, si, di; - uint8_t *dst; - - // src[0]&0x80; // forbidden bit - h->nal_ref_idc = src[0] >> 5; - h->nal_unit_type = src[0] & 0x1F; - - src++; - length--; - -#define STARTCODE_TEST \ - if (i + 2 < length && src[i + 1] == 0 && src[i + 2] <= 3) { \ - if (src[i + 2] != 3) { \ - /* startcode, so we must be past the end */ \ - length = i; \ - } \ - break; \ - } - -#if HAVE_FAST_UNALIGNED -#define FIND_FIRST_ZERO \ - if (i > 0 && !src[i]) \ - i--; \ - while (src[i]) \ - i++ - -#if HAVE_FAST_64BIT - for (i = 0; i + 1 < length; i += 9) { - if (!((~AV_RN64A(src + i) & - (AV_RN64A(src + i) - 0x0100010001000101ULL)) & - 0x8000800080008080ULL)) - continue; - FIND_FIRST_ZERO; - STARTCODE_TEST; - i -= 7; - } -#else - for (i = 0; i + 1 < length; i += 5) { - if (!((~AV_RN32A(src + i) & - (AV_RN32A(src + i) - 0x01000101U)) & - 0x80008080U)) - continue; - FIND_FIRST_ZERO; - STARTCODE_TEST; - i -= 3; - } -#endif -#else - for (i = 0; i + 1 < length; i += 2) { - if (src[i]) - continue; - if (i > 0 && src[i - 1] == 0) - i--; - STARTCODE_TEST; - } -#endif - - if (i >= length - 1) { // no escaped 0 - *dst_length = length; - *consumed = length + 1; // +1 for the header - return src; - } - - av_fast_malloc(&sl->rbsp_buffer, &sl->rbsp_buffer_size, - length + AV_INPUT_BUFFER_PADDING_SIZE); - dst = sl->rbsp_buffer; - - if (!dst) - return NULL; - - memcpy(dst, src, i); - si = di = i; - while (si + 2 < length) { - // remove escapes (very rare 1:2^22) - if (src[si + 2] > 3) { - dst[di++] = src[si++]; - dst[di++] = src[si++]; - } else if (src[si] == 0 && src[si + 1] == 0) { - if (src[si + 2] == 3) { // escape - dst[di++] = 0; - dst[di++] = 0; - si += 3; - continue; - } else // next start code - goto nsc; - } - - dst[di++] = src[si++]; - } - while (si < length) - dst[di++] = src[si++]; - -nsc: - memset(dst + di, 0, AV_INPUT_BUFFER_PADDING_SIZE); - - *dst_length = di; - *consumed = si + 1; // +1 for the header - /* FIXME store exact number of bits in the getbitcontext - * (it is needed for decoding) */ - return dst; -} - void ff_h264_free_tables(H264Context *h) { int i; -- cgit v1.2.3