]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/h264dsp.c
ppc: Centralize compiler-specific altivec.h #include handling in one place
[ffmpeg] / libavcodec / h264dsp.c
index a5b1591482333c98e3ec1ebfe6df617199b72d73..684566ba01cbb9a35f6b0a858a78ad106000992b 100644 (file)
@@ -21,7 +21,7 @@
 
 /**
  * @file
- * H.264 / AVC / MPEG4 part10 DSP functions.
+ * H.264 / AVC / MPEG-4 part10 DSP functions.
  * @author Michael Niedermayer <michaelni@gmx.at>
  */
 
@@ -31,6 +31,7 @@
 #include "avcodec.h"
 #include "h264dsp.h"
 #include "h264idct.h"
+#include "startcode.h"
 #include "libavutil/common.h"
 
 #define BIT_DEPTH 8
 #include "h264addpx_template.c"
 #undef BIT_DEPTH
 
-static int h264_find_start_code_candidate_c(const uint8_t *buf, int size)
-{
-    int i = 0;
-#if HAVE_FAST_UNALIGNED
-    /* we check i < size instead of i + 3 / 7 because it is
-     * simpler and there must be FF_INPUT_BUFFER_PADDING_SIZE
-     * bytes at the end.
-     */
-#if HAVE_FAST_64BIT
-    while (i < size &&
-            !((~*(const uint64_t *)(buf + i) &
-                    (*(const uint64_t *)(buf + i) - 0x0101010101010101ULL)) &
-                    0x8080808080808080ULL))
-        i += 8;
-#else
-    while (i < size &&
-            !((~*(const uint32_t *)(buf + i) &
-                    (*(const uint32_t *)(buf + i) - 0x01010101U)) &
-                    0x80808080U))
-        i += 4;
-#endif
-#endif
-    for (; i < size; i++)
-        if (!buf[i])
-            break;
-    return i;
-}
-
 av_cold void ff_h264dsp_init(H264DSPContext *c, const int bit_depth,
                              const int chroma_format_idc)
 {
@@ -161,7 +134,7 @@ av_cold void ff_h264dsp_init(H264DSPContext *c, const int bit_depth,
         H264_DSP(8);
         break;
     }
-    c->h264_find_start_code_candidate = h264_find_start_code_candidate_c;
+    c->startcode_find_candidate = ff_startcode_find_candidate_c;
 
     if (ARCH_AARCH64) ff_h264dsp_init_aarch64(c, bit_depth, chroma_format_idc);
     if (ARCH_ARM) ff_h264dsp_init_arm(c, bit_depth, chroma_format_idc);