Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * This file is part of FFmpeg.
  3.  *
  4.  * FFmpeg is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU Lesser General Public
  6.  * License as published by the Free Software Foundation; either
  7.  * version 2.1 of the License, or (at your option) any later version.
  8.  *
  9.  * FFmpeg is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.  * Lesser General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU Lesser General Public
  15.  * License along with FFmpeg; if not, write to the Free Software
  16.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  17.  */
  18.  
  19. #include "config.h"
  20. #include "libavutil/attributes.h"
  21. #include "h264chroma.h"
  22.  
  23. #define BIT_DEPTH 8
  24. #include "h264chroma_template.c"
  25. #undef BIT_DEPTH
  26.  
  27. #define BIT_DEPTH 16
  28. #include "h264chroma_template.c"
  29. #undef BIT_DEPTH
  30.  
  31. #define SET_CHROMA(depth)                                                   \
  32.     c->put_h264_chroma_pixels_tab[0] = put_h264_chroma_mc8_ ## depth ## _c; \
  33.     c->put_h264_chroma_pixels_tab[1] = put_h264_chroma_mc4_ ## depth ## _c; \
  34.     c->put_h264_chroma_pixels_tab[2] = put_h264_chroma_mc2_ ## depth ## _c; \
  35.     c->put_h264_chroma_pixels_tab[3] = put_h264_chroma_mc1_ ## depth ## _c; \
  36.     c->avg_h264_chroma_pixels_tab[0] = avg_h264_chroma_mc8_ ## depth ## _c; \
  37.     c->avg_h264_chroma_pixels_tab[1] = avg_h264_chroma_mc4_ ## depth ## _c; \
  38.     c->avg_h264_chroma_pixels_tab[2] = avg_h264_chroma_mc2_ ## depth ## _c; \
  39.     c->avg_h264_chroma_pixels_tab[3] = avg_h264_chroma_mc1_ ## depth ## _c; \
  40.  
  41. av_cold void ff_h264chroma_init(H264ChromaContext *c, int bit_depth)
  42. {
  43.     if (bit_depth > 8 && bit_depth <= 16) {
  44.         SET_CHROMA(16);
  45.     } else {
  46.         SET_CHROMA(8);
  47.     }
  48.  
  49.     if (ARCH_ARM)
  50.         ff_h264chroma_init_arm(c, bit_depth);
  51.     if (ARCH_PPC)
  52.         ff_h264chroma_init_ppc(c, bit_depth);
  53.     if (ARCH_X86)
  54.         ff_h264chroma_init_x86(c, bit_depth);
  55. }
  56.