FFmpeg
Loading...
Searching...
No Matches
aacps.h
Go to the documentation of this file.
1/*
2 * MPEG-4 Parametric Stereo definitions and declarations
3 * Copyright (c) 2010 Alex Converse <alex.converse@gmail.com>
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22#ifndef AVCODEC_AACPS_H
23#define AVCODEC_AACPS_H
24
25#include <stdint.h>
26
28
29#include "aacpsdsp.h"
30#include "get_bits.h"
31
32#define PS_MAX_NUM_ENV 5
33#define PS_MAX_NR_IIDICC 34
34#define PS_MAX_NR_IPDOPD 17
35#define PS_MAX_SSB 91
36#define PS_MAX_AP_BANDS 50
37#define PS_QMF_TIME_SLOTS 32
38#define PS_MAX_DELAY 14
39#define PS_AP_LINKS 3
40#define PS_MAX_AP_DELAY 5
41#define PS_BASELINE 0 ///< Operate in Baseline PS mode
42 ///< Baseline implies 10 or 20 stereo bands,
43 ///< mixing mode A, and no ipd/opd
44
45#define numQMFSlots 32 //numTimeSlots * RATE
46
47typedef struct PSCommonContext {
48 int start;
62 int8_t iid_par[PS_MAX_NUM_ENV][PS_MAX_NR_IIDICC]; ///< Inter-channel Intensity Difference Parameters
63 int8_t icc_par[PS_MAX_NUM_ENV][PS_MAX_NR_IIDICC]; ///< Inter-Channel Coherence Parameters
64 /* ipd/opd is iid/icc sized so that the same functions can handle both */
65 int8_t ipd_par[PS_MAX_NUM_ENV][PS_MAX_NR_IIDICC]; ///< Inter-channel Phase Difference Parameters
66 int8_t opd_par[PS_MAX_NUM_ENV][PS_MAX_NR_IIDICC]; ///< Overall Phase Difference Parameters
70
90
91extern const int8_t ff_k_to_i_20[];
92extern const int8_t ff_k_to_i_34[];
93
94void ff_ps_init_common(void);
95void AAC_RENAME(ff_ps_init)(void);
96
97static inline void AAC_RENAME(ff_ps_ctx_init)(PSContext *ps)
98{
99 AAC_RENAME(ff_psdsp_init)(&ps->dsp);
100}
101
102int ff_ps_read_data(void *logctx, GetBitContext *gb,
103 PSCommonContext *ps, int bits_left);
104int AAC_RENAME(ff_ps_apply)(PSContext *ps, INTFLOAT L[2][38][64], INTFLOAT R[2][38][64], int top);
105
106#endif /* AVCODEC_AACPS_H */
#define AAC_RENAME(x)
Definition aac_defines.h:99
av_cold void AAC_RENAME ff_ps_init(void)
Definition aacps.c:740
int AAC_RENAME ff_ps_apply(PSContext *ps, INTFLOAT L[2][38][64], INTFLOAT R[2][38][64], int top)
Definition aacps.c:719
#define PS_MAX_NR_IIDICC
Definition aacps.h:33
#define PS_AP_LINKS
Definition aacps.h:39
int ff_ps_read_data(void *logctx, GetBitContext *gb, PSCommonContext *ps, int bits_left)
void ff_ps_init_common(void)
#define PS_MAX_DELAY
Definition aacps.h:38
#define PS_MAX_SSB
Definition aacps.h:35
const int8_t ff_k_to_i_34[]
Table 8.49.
Definition aacpsdata.c:107
#define PS_QMF_TIME_SLOTS
Definition aacps.h:37
#define PS_MAX_AP_DELAY
Definition aacps.h:40
const int8_t ff_k_to_i_20[]
Table 8.48.
Definition aacpsdata.c:100
#define PS_MAX_AP_BANDS
Definition aacps.h:36
static void AAC_RENAME ff_ps_ctx_init(PSContext *ps)
Definition aacps.h:97
#define PS_MAX_NUM_ENV
Definition aacps.h:32
void AAC_RENAME ff_psdsp_init(PSDSPContext *s)
#define L(x)
Definition vpx_arith.h:36
#define bits_left
Definition bitstream.h:116
#define INTFLOAT
bitstream reader API header.
#define R
Definition huffyuv.h:44
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
int enable_ipdopd
Definition aacps.h:60
int nr_iid_par
Definition aacps.h:51
int8_t opd_par[PS_MAX_NUM_ENV][PS_MAX_NR_IIDICC]
Overall Phase Difference Parameters.
Definition aacps.h:66
int nr_icc_par
Definition aacps.h:55
int enable_icc
Definition aacps.h:53
int8_t ipd_par[PS_MAX_NUM_ENV][PS_MAX_NR_IIDICC]
Inter-channel Phase Difference Parameters.
Definition aacps.h:65
int frame_class
Definition aacps.h:57
int is34bands
Definition aacps.h:67
int enable_ext
Definition aacps.h:56
int enable_iid
Definition aacps.h:49
int nr_ipdopd_par
Definition aacps.h:52
int is34bands_old
Definition aacps.h:68
int8_t iid_par[PS_MAX_NUM_ENV][PS_MAX_NR_IIDICC]
Inter-channel Intensity Difference Parameters.
Definition aacps.h:62
int iid_quant
Definition aacps.h:50
int num_env_old
Definition aacps.h:58
int border_position[PS_MAX_NUM_ENV+1]
Definition aacps.h:61
int8_t icc_par[PS_MAX_NUM_ENV][PS_MAX_NR_IIDICC]
Inter-Channel Coherence Parameters.
Definition aacps.h:63
INTFLOAT H11[2][PS_MAX_NUM_ENV+1][PS_MAX_NR_IIDICC]
Definition aacps.h:80
INTFLOAT Rbuf[91][32][2]
Definition aacps.h:85
INTFLOAT H22[2][PS_MAX_NUM_ENV+1][PS_MAX_NR_IIDICC]
Definition aacps.h:83
PSCommonContext common
Definition aacps.h:72
INTFLOAT H21[2][PS_MAX_NUM_ENV+1][PS_MAX_NR_IIDICC]
Definition aacps.h:82
INTFLOAT power_smooth[34]
Definition aacps.h:78
INTFLOAT peak_decay_diff_smooth[34]
Definition aacps.h:79
int8_t ipd_hist[PS_MAX_NR_IIDICC]
Definition aacps.h:87
PSDSPContext dsp
Definition aacps.h:88
INTFLOAT ap_delay[PS_MAX_AP_BANDS][PS_AP_LINKS][PS_QMF_TIME_SLOTS+PS_MAX_AP_DELAY][2]
Definition aacps.h:76
INTFLOAT Lbuf[91][32][2]
Definition aacps.h:84
INTFLOAT H12[2][PS_MAX_NUM_ENV+1][PS_MAX_NR_IIDICC]
Definition aacps.h:81
INTFLOAT peak_decay_nrg[34]
Definition aacps.h:77
INTFLOAT delay[PS_MAX_SSB][PS_QMF_TIME_SLOTS+PS_MAX_DELAY][2]
Definition aacps.h:75
INTFLOAT in_buf[5][44][2]
Definition aacps.h:74
int8_t opd_hist[PS_MAX_NR_IIDICC]
Definition aacps.h:86