23 #ifndef AVCODEC_PCM_TABLEGEN_H
24 #define AVCODEC_PCM_TABLEGEN_H
27 #include "config_components.h"
32 #define SIGN_BIT (0x80)
33 #define QUANT_MASK (0xf)
36 #define SEG_MASK (0x70)
40 #define VIDC_SIGN_BIT (1)
41 #define VIDC_QUANT_MASK (0x1E)
42 #define VIDC_QUANT_SHIFT (1)
43 #define VIDC_SEG_SHIFT (5)
44 #define VIDC_SEG_MASK (0xE0)
46 #if CONFIG_PCM_ALAW_DECODER || CONFIG_PCM_ALAW_ENCODER
48 static av_cold int alaw2linear(
unsigned char a_val)
57 if(seg) t= (t + t + 1 + 32) << (seg + 2);
58 else t= (t + t + 1 ) << 3;
64 #if CONFIG_PCM_MULAW_DECODER || CONFIG_PCM_MULAW_ENCODER
65 static av_cold int ulaw2linear(
unsigned char u_val)
83 #if CONFIG_PCM_VIDC_DECODER || CONFIG_PCM_VIDC_ENCODER
84 static av_cold int vidc2linear(
unsigned char u_val)
99 #if CONFIG_HARDCODED_TABLES
100 #define pcm_alaw_tableinit()
101 #define pcm_ulaw_tableinit()
102 #define pcm_vidc_tableinit()
103 #include "libavcodec/pcm_tables.h"
106 #if CONFIG_PCM_ALAW_ENCODER || CONFIG_PCM_MULAW_ENCODER || \
107 CONFIG_PCM_VIDC_ENCODER
108 static av_cold void build_xlaw_table(uint8_t *linear_to_xlaw,
109 int (*xlaw2linear)(
unsigned char),
115 linear_to_xlaw[8192] =
mask;
117 v1 = xlaw2linear(
i ^
mask);
118 v2 = xlaw2linear((
i + 1) ^
mask);
119 v = (v1 + v2 + 4) >> 3;
121 linear_to_xlaw[8192 - j] = (
i ^ (
mask ^ 0x80));
122 linear_to_xlaw[8192 + j] = (
i ^
mask);
126 linear_to_xlaw[8192 - j] = (127 ^ (
mask ^ 0x80));
127 linear_to_xlaw[8192 + j] = (127 ^
mask);
129 linear_to_xlaw[0] = linear_to_xlaw[1];
133 #if CONFIG_PCM_ALAW_ENCODER
134 static uint8_t linear_to_alaw[16384];
135 static void pcm_alaw_tableinit(
void)
137 build_xlaw_table(linear_to_alaw, alaw2linear, 0xd5);
141 #if CONFIG_PCM_MULAW_ENCODER
142 static uint8_t linear_to_ulaw[16384];
143 static void pcm_ulaw_tableinit(
void)
145 build_xlaw_table(linear_to_ulaw, ulaw2linear, 0xff);
149 #if CONFIG_PCM_VIDC_ENCODER
150 static uint8_t linear_to_vidc[16384];
151 static void pcm_vidc_tableinit(
void)
153 build_xlaw_table(linear_to_vidc, vidc2linear, 0xff);