35 10, 20, 34, 10, 20, 34,
64 #define READ_PAR_DATA(PAR, OFFSET, MASK, ERR_CONDITION, NB_BITS, MAX_DEPTH) \
77 static int read_ ## PAR ## _data(AVCodecContext *avctx, GetBitContext *gb, PSCommonContext *ps, \
78 int8_t (*PAR)[PS_MAX_NR_IIDICC], int table_idx, int e, int dt) \
80 int b, num = ps->nr_ ## PAR ## _par; \
81 VLC_TYPE (*vlc_table)[2] = vlc_ps[table_idx].table; \
83 int e_prev = e ? e - 1 : ps->num_env_old - 1; \
84 e_prev = FFMAX(e_prev, 0); \
85 for (b = 0; b < num; b++) { \
86 int val = PAR[e_prev][b] + get_vlc2(gb, vlc_table, NB_BITS, MAX_DEPTH) - OFFSET; \
87 if (MASK) val &= MASK; \
94 for (b = 0; b < num; b++) { \
95 val += get_vlc2(gb, vlc_table, NB_BITS, MAX_DEPTH) - OFFSET; \
96 if (MASK) val &= MASK; \
104 av_log(avctx, AV_LOG_ERROR, "illegal "#PAR"\n"); \
105 return AVERROR_INVALIDDATA; \
122 if (ps->enable_ipdopd) {
123 for (e = 0; e < ps->num_env; e++) {
176 for (e = 1; e <= ps->
num_env; e++) {
184 for (e = 1; e <= ps->
num_env; e++)
188 for (e = 0; e < ps->
num_env; e++) {
197 for (e = 0; e < ps->
num_env; e++) {
212 int ps_extension_id =
get_bits(gb, 2);
229 if (source >= 0 && source != ps->
num_env) {
277 if (bits_consumed <= bits_left) {
279 return bits_consumed;
281 av_log(avctx,
AV_LOG_ERROR,
"Expected to read %d PS bits actually read %d.\n", bits_left, bits_consumed);
292 #define PS_INIT_VLC_STATIC(num, nb_bits, size) \
293 INIT_VLC_STATIC(&vlc_ps[num], nb_bits, ps_tmp[num].table_size / ps_tmp[num].elem_size, \
294 ps_tmp[num].ps_bits, 1, 1, \
295 ps_tmp[num].ps_codes, ps_tmp[num].elem_size, ps_tmp[num].elem_size, \
298 #define PS_VLC_ROW(name) \
299 { name ## _codes, name ## _bits, sizeof(name ## _codes), sizeof(name ## _codes[0]) }
304 static const struct {
305 const void *ps_codes, *ps_bits;
306 const unsigned int table_size, elem_size;
#define PS_BASELINE
Operate in Baseline PS mode.
static const int huff_iid[]
#define PS_INIT_VLC_STATIC(num, nb_bits, size)
int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb_host, PSCommonContext *ps, int bits_left)
static const int8_t num_env_tab[2][4]
static const int8_t nr_iidicc_par_tab[]
av_cold void ff_ps_init_common(void)
static int ps_read_extension_data(GetBitContext *gb, PSCommonContext *ps, int ps_extension_id)
#define READ_PAR_DATA(PAR, OFFSET, MASK, ERR_CONDITION, NB_BITS, MAX_DEPTH)
static av_cold void ps_init_common(void)
static const int8_t nr_iidopd_par_tab[]
static const int8_t huff_offset[]
common internal and external API header
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
bitstream reader API header.
static void skip_bits_long(GetBitContext *s, int n)
Skips the specified number of bits.
static unsigned int get_bits1(GetBitContext *s)
static void skip_bits(GetBitContext *s, int n)
static int get_bits_count(const GetBitContext *s)
static void skip_bits1(GetBitContext *s)
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
const uint8_t ff_log2_tab[256]
static int ff_thread_once(char *control, void(*routine)(void))
static const uint8_t header[24]
main external API structure.
int8_t opd_par[PS_MAX_NUM_ENV][PS_MAX_NR_IIDICC]
Overall Phase Difference Parameters.
int8_t ipd_par[PS_MAX_NUM_ENV][PS_MAX_NR_IIDICC]
Inter-channel Phase Difference Parameters.
int8_t iid_par[PS_MAX_NUM_ENV][PS_MAX_NR_IIDICC]
Inter-channel Intensity Difference Parameters.
int border_position[PS_MAX_NUM_ENV+1]
int8_t icc_par[PS_MAX_NUM_ENV][PS_MAX_NR_IIDICC]
Inter-Channel Coherence Parameters.