00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "dsputil.h"
00020
00021 #ifndef BIT_DEPTH
00022 #define BIT_DEPTH 8
00023 #endif
00024
00025 #ifdef AVCODEC_H264_HIGH_DEPTH_H
00026 # undef pixel
00027 # undef pixel2
00028 # undef pixel4
00029 # undef dctcoef
00030 # undef INIT_CLIP
00031 # undef no_rnd_avg_pixel4
00032 # undef rnd_avg_pixel4
00033 # undef AV_RN2P
00034 # undef AV_RN4P
00035 # undef AV_RN4PA
00036 # undef AV_WN2P
00037 # undef AV_WN4P
00038 # undef AV_WN4PA
00039 # undef CLIP
00040 # undef FUNC
00041 # undef FUNCC
00042 # undef av_clip_pixel
00043 # undef PIXEL_SPLAT_X4
00044 #else
00045 # define AVCODEC_H264_HIGH_DEPTH_H
00046 # define CLIP_PIXEL(depth)\
00047 static inline uint16_t av_clip_pixel_ ## depth (int p)\
00048 {\
00049 const int pixel_max = (1 << depth)-1;\
00050 return (p & ~pixel_max) ? (-p)>>31 & pixel_max : p;\
00051 }
00052
00053 CLIP_PIXEL( 9)
00054 CLIP_PIXEL(10)
00055 #endif
00056
00057 #if BIT_DEPTH > 8
00058 # define pixel uint16_t
00059 # define pixel2 uint32_t
00060 # define pixel4 uint64_t
00061 # define dctcoef int32_t
00062
00063 # define INIT_CLIP
00064 # define no_rnd_avg_pixel4 no_rnd_avg64
00065 # define rnd_avg_pixel4 rnd_avg64
00066 # define AV_RN2P AV_RN32
00067 # define AV_RN4P AV_RN64
00068 # define AV_RN4PA AV_RN64A
00069 # define AV_WN2P AV_WN32
00070 # define AV_WN4P AV_WN64
00071 # define AV_WN4PA AV_WN64A
00072 # define PIXEL_SPLAT_X4(x) ((x)*0x0001000100010001ULL)
00073 #else
00074 # define pixel uint8_t
00075 # define pixel2 uint16_t
00076 # define pixel4 uint32_t
00077 # define dctcoef int16_t
00078
00079 # define INIT_CLIP uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;
00080 # define no_rnd_avg_pixel4 no_rnd_avg32
00081 # define rnd_avg_pixel4 rnd_avg32
00082 # define AV_RN2P AV_RN16
00083 # define AV_RN4P AV_RN32
00084 # define AV_RN4PA AV_RN32A
00085 # define AV_WN2P AV_WN16
00086 # define AV_WN4P AV_WN32
00087 # define AV_WN4PA AV_WN32A
00088 # define PIXEL_SPLAT_X4(x) ((x)*0x01010101U)
00089 #endif
00090
00091 #if BIT_DEPTH == 8
00092 # define av_clip_pixel(a) av_clip_uint8(a)
00093 # define CLIP(a) cm[a]
00094 # define FUNC(a) a ## _8
00095 # define FUNCC(a) a ## _8_c
00096 #elif BIT_DEPTH == 9
00097 # define av_clip_pixel(a) av_clip_pixel_9(a)
00098 # define CLIP(a) av_clip_pixel_9(a)
00099 # define FUNC(a) a ## _9
00100 # define FUNCC(a) a ## _9_c
00101 #elif BIT_DEPTH == 10
00102 # define av_clip_pixel(a) av_clip_pixel_10(a)
00103 # define CLIP(a) av_clip_pixel_10(a)
00104 # define FUNC(a) a ## _10
00105 # define FUNCC(a) a ## _10_c
00106 #endif