diff --git a/libavcodec/dca.c b/libavcodec/dca.c
index e3f87b9..0bf05e6 100644
--- a/libavcodec/dca.c
+++ b/libavcodec/dca.c
@@ -134,97 +134,113 @@ static const uint64_t dca_core_channel_layout[] = {
AV_CH_LAYOUT_STEREO,
///< 2, L + R (stereo)
AV_CH_LAYOUT_STEREO,
///< 2, (L+R) + (L-R) (sum-difference)
AV_CH_LAYOUT_STEREO,
///< 2, LT +RT (left and right total)
- AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER,
///< 3, C+L+R
- AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER,
///< 3, L+R+S
- AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER|AV_CH_BACK_CENTER,
///< 4, C + L + R+ S
- AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT,
///< 4, L + R +SL+ SR
- AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT,
///< 5, C + L + R+ SL+SR
-
AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER,
///< 6, CL + CR + L + R + SL + SR
-
AV_CH_LAYOUT_STEREO|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_FRONT_CENTER|AV_CH_BACK_CENTER,
///< 6, C + L + R+ LR + RR + OV
-
AV_CH_FRONT_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_BACK_CENTER|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT,
///< 6, CF+ CR+LF+ RF+LR + RR
-
AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER|AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT,
///< 7, CL + C + CR + L + R + SL + SR
-
AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER|AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT,
///< 8, CL + CR + L + R + SL1 + SL2+ SR1 + SR2
-
AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER|AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_BACK_CENTER|AV_CH_SIDE_RIGHT,
///< 8, CL + C+ CR + L + R + SL + S+ SR
+ AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER,
///< 3, C+L+R
+ AV_CH_LAYOUT_STEREO | AV_CH_BACK_CENTER,
///< 3, L+R+S
+ AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER | AV_CH_BACK_CENTER,
///< 4, C + L + R+ S
+ AV_CH_LAYOUT_STEREO | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT,
///< 4, L + R +SL+ SR
+
+ AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER | AV_CH_SIDE_LEFT
+ | AV_CH_SIDE_RIGHT, ///< 5, C + L + R+ SL+SR
+
+ AV_CH_LAYOUT_STEREO | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT
+ | AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER, //<
6, CL + CR + L + R + SL + SR
+
+ AV_CH_LAYOUT_STEREO | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT
+ | AV_CH_FRONT_CENTER | AV_CH_BACK_CENTER, ///< 6, C + L + R+ LR +
RR + OV
+
+ AV_CH_FRONT_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER |
AV_CH_FRONT_LEFT_OF_CENTER
+ | AV_CH_BACK_CENTER | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT, ///< 6,
CF+ CR+LF+ RF+LR + RR
+
+ AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_CENTER |
AV_CH_FRONT_RIGHT_OF_CENTER
+ | AV_CH_LAYOUT_STEREO | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT, ///<
7, CL + C + CR + L + R + SL + SR
+
+ AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER |
AV_CH_LAYOUT_STEREO
+ | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT | AV_CH_BACK_LEFT
+ | AV_CH_BACK_RIGHT, ///< 8, CL + CR + L + R + SL1 + SL2+ SR1 + SR2
+
+ AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_CENTER |
AV_CH_FRONT_RIGHT_OF_CENTER
+ | AV_CH_LAYOUT_STEREO | AV_CH_SIDE_LEFT | AV_CH_BACK_CENTER
+ | AV_CH_SIDE_RIGHT, ///< 8, CL + C+ CR + L + R + SL + S+ SR
};
static const int8_t dca_lfe_index[] = {
- 1,2,2,2,2,3,2,3,2,3,2,3,1,3,2,3
+ 1, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 1, 3, 2, 3
};
static const int8_t dca_channel_reorder_lfe[][9] = {
- { 0, -1, -1, -1, -1, -1, -1, -1, -1},
- { 0, 1, -1, -1, -1, -1, -1, -1, -1},
- { 0, 1, -1, -1, -1, -1, -1, -1, -1},
- { 0, 1, -1, -1, -1, -1, -1, -1, -1},
- { 0, 1, -1, -1, -1, -1, -1, -1, -1},
- { 2, 0, 1, -1, -1, -1, -1, -1, -1},
- { 0, 1, 3, -1, -1, -1, -1, -1, -1},
- { 2, 0, 1, 4, -1, -1, -1, -1, -1},
- { 0, 1, 3, 4, -1, -1, -1, -1, -1},
- { 2, 0, 1, 4, 5, -1, -1, -1, -1},
- { 3, 4, 0, 1, 5, 6, -1, -1, -1},
- { 2, 0, 1, 4, 5, 6, -1, -1, -1},
- { 0, 6, 4, 5, 2, 3, -1, -1, -1},
- { 4, 2, 5, 0, 1, 6, 7, -1, -1},
- { 5, 6, 0, 1, 7, 3, 8, 4, -1},
- { 4, 2, 5, 0, 1, 6, 8, 7, -1},
+ { 0, -1, -1, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, -1, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, -1, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, -1, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, -1, -1, -1, -1, -1, -1, -1 },
+ { 2, 0, 1, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, 3, -1, -1, -1, -1, -1, -1 },
+ { 2, 0, 1, 4, -1, -1, -1, -1, -1 },
+ { 0, 1, 3, 4, -1, -1, -1, -1, -1 },
+ { 2, 0, 1, 4, 5, -1, -1, -1, -1 },
+ { 3, 4, 0, 1, 5, 6, -1, -1, -1 },
+ { 2, 0, 1, 4, 5, 6, -1, -1, -1 },
+ { 0, 6, 4, 5, 2, 3, -1, -1, -1 },
+ { 4, 2, 5, 0, 1, 6, 7, -1, -1 },
+ { 5, 6, 0, 1, 7, 3, 8, 4, -1 },
+ { 4, 2, 5, 0, 1, 6, 8, 7, -1 },
};
static const int8_t dca_channel_reorder_lfe_xch[][9] = {
- { 0, 2, -1, -1, -1, -1, -1, -1, -1},
- { 0, 1, 3, -1, -1, -1, -1, -1, -1},
- { 0, 1, 3, -1, -1, -1, -1, -1, -1},
- { 0, 1, 3, -1, -1, -1, -1, -1, -1},
- { 0, 1, 3, -1, -1, -1, -1, -1, -1},
- { 2, 0, 1, 4, -1, -1, -1, -1, -1},
- { 0, 1, 3, 4, -1, -1, -1, -1, -1},
- { 2, 0, 1, 4, 5, -1, -1, -1, -1},
- { 0, 1, 4, 5, 3, -1, -1, -1, -1},
- { 2, 0, 1, 5, 6, 4, -1, -1, -1},
- { 3, 4, 0, 1, 6, 7, 5, -1, -1},
- { 2, 0, 1, 4, 5, 6, 7, -1, -1},
- { 0, 6, 4, 5, 2, 3, 7, -1, -1},
- { 4, 2, 5, 0, 1, 7, 8, 6, -1},
- { 5, 6, 0, 1, 8, 3, 9, 4, 7},
- { 4, 2, 5, 0, 1, 6, 9, 8, 7},
+ { 0, 2, -1, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, 3, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, 3, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, 3, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, 3, -1, -1, -1, -1, -1, -1 },
+ { 2, 0, 1, 4, -1, -1, -1, -1, -1 },
+ { 0, 1, 3, 4, -1, -1, -1, -1, -1 },
+ { 2, 0, 1, 4, 5, -1, -1, -1, -1 },
+ { 0, 1, 4, 5, 3, -1, -1, -1, -1 },
+ { 2, 0, 1, 5, 6, 4, -1, -1, -1 },
+ { 3, 4, 0, 1, 6, 7, 5, -1, -1 },
+ { 2, 0, 1, 4, 5, 6, 7, -1, -1 },
+ { 0, 6, 4, 5, 2, 3, 7, -1, -1 },
+ { 4, 2, 5, 0, 1, 7, 8, 6, -1 },
+ { 5, 6, 0, 1, 8, 3, 9, 4, 7 },
+ { 4, 2, 5, 0, 1, 6, 9, 8, 7 },
};
static const int8_t dca_channel_reorder_nolfe[][9] = {
- { 0, -1, -1, -1, -1, -1, -1, -1, -1},
- { 0, 1, -1, -1, -1, -1, -1, -1, -1},
- { 0, 1, -1, -1, -1, -1, -1, -1, -1},
- { 0, 1, -1, -1, -1, -1, -1, -1, -1},
- { 0, 1, -1, -1, -1, -1, -1, -1, -1},
- { 2, 0, 1, -1, -1, -1, -1, -1, -1},
- { 0, 1, 2, -1, -1, -1, -1, -1, -1},
- { 2, 0, 1, 3, -1, -1, -1, -1, -1},
- { 0, 1, 2, 3, -1, -1, -1, -1, -1},
- { 2, 0, 1, 3, 4, -1, -1, -1, -1},
- { 2, 3, 0, 1, 4, 5, -1, -1, -1},
- { 2, 0, 1, 3, 4, 5, -1, -1, -1},
- { 0, 5, 3, 4, 1, 2, -1, -1, -1},
- { 3, 2, 4, 0, 1, 5, 6, -1, -1},
- { 4, 5, 0, 1, 6, 2, 7, 3, -1},
- { 3, 2, 4, 0, 1, 5, 7, 6, -1},
+ { 0, -1, -1, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, -1, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, -1, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, -1, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, -1, -1, -1, -1, -1, -1, -1 },
+ { 2, 0, 1, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, 2, -1, -1, -1, -1, -1, -1 },
+ { 2, 0, 1, 3, -1, -1, -1, -1, -1 },
+ { 0, 1, 2, 3, -1, -1, -1, -1, -1 },
+ { 2, 0, 1, 3, 4, -1, -1, -1, -1 },
+ { 2, 3, 0, 1, 4, 5, -1, -1, -1 },
+ { 2, 0, 1, 3, 4, 5, -1, -1, -1 },
+ { 0, 5, 3, 4, 1, 2, -1, -1, -1 },
+ { 3, 2, 4, 0, 1, 5, 6, -1, -1 },
+ { 4, 5, 0, 1, 6, 2, 7, 3, -1 },
+ { 3, 2, 4, 0, 1, 5, 7, 6, -1 },
};
static const int8_t dca_channel_reorder_nolfe_xch[][9] = {
- { 0, 1, -1, -1, -1, -1, -1, -1, -1},
- { 0, 1, 2, -1, -1, -1, -1, -1, -1},
- { 0, 1, 2, -1, -1, -1, -1, -1, -1},
- { 0, 1, 2, -1, -1, -1, -1, -1, -1},
- { 0, 1, 2, -1, -1, -1, -1, -1, -1},
- { 2, 0, 1, 3, -1, -1, -1, -1, -1},
- { 0, 1, 2, 3, -1, -1, -1, -1, -1},
- { 2, 0, 1, 3, 4, -1, -1, -1, -1},
- { 0, 1, 3, 4, 2, -1, -1, -1, -1},
- { 2, 0, 1, 4, 5, 3, -1, -1, -1},
- { 2, 3, 0, 1, 5, 6, 4, -1, -1},
- { 2, 0, 1, 3, 4, 5, 6, -1, -1},
- { 0, 5, 3, 4, 1, 2, 6, -1, -1},
- { 3, 2, 4, 0, 1, 6, 7, 5, -1},
- { 4, 5, 0, 1, 7, 2, 8, 3, 6},
- { 3, 2, 4, 0, 1, 5, 8, 7, 6},
+ { 0, 1, -1, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, 2, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, 2, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, 2, -1, -1, -1, -1, -1, -1 },
+ { 0, 1, 2, -1, -1, -1, -1, -1, -1 },
+ { 2, 0, 1, 3, -1, -1, -1, -1, -1 },
+ { 0, 1, 2, 3, -1, -1, -1, -1, -1 },
+ { 2, 0, 1, 3, 4, -1, -1, -1, -1 },
+ { 0, 1, 3, 4, 2, -1, -1, -1, -1 },
+ { 2, 0, 1, 4, 5, 3, -1, -1, -1 },
+ { 2, 3, 0, 1, 5, 6, 4, -1, -1 },
+ { 2, 0, 1, 3, 4, 5, 6, -1, -1 },
+ { 0, 5, 3, 4, 1, 2, 6, -1, -1 },
+ { 3, 2, 4, 0, 1, 6, 7, 5, -1 },
+ { 4, 5, 0, 1, 7, 2, 8, 3, 6 },
+ { 3, 2, 4, 0, 1, 5, 8, 7, 6 },
};
#define DCA_DOLBY 101 /* FIXME */
@@ -335,13 +351,13 @@ typedef struct {
float scale_bias; ///< output scale
DECLARE_ALIGNED(32, float,
subband_samples)[DCA_BLOCKS_MAX][DCA_PRIM_CHANNELS_MAX][DCA_SUBBANDS][8];
- DECLARE_ALIGNED(32, float, samples)[(DCA_PRIM_CHANNELS_MAX+1)*256];
- const float *samples_chanptr[DCA_PRIM_CHANNELS_MAX+1];
+ DECLARE_ALIGNED(32, float, samples)[(DCA_PRIM_CHANNELS_MAX + 1) * 256];
+ const float *samples_chanptr[DCA_PRIM_CHANNELS_MAX + 1];
uint8_t dca_buffer[DCA_MAX_FRAME_SIZE + DCA_MAX_EXSS_HEADER_SIZE +
DCA_BUFFER_PADDING_SIZE];
int dca_buffer_size; ///< how much data is in the dca_buffer
- const int8_t* channel_order_tab; ///< channel
reordering table, lfe and non lfe
+ const int8_t *channel_order_tab; ///< channel
reordering table, lfe and non lfe
GetBitContext gb;
/* Current position in DCA frame */
int current_subframe;
@@ -416,13 +432,14 @@ static av_cold void dca_init_vlcs(void)
}
for (i = 0; i < 10; i++)
- for (j = 0; j < 7; j++){
+ for (j = 0; j < 7; j++) {
if (!bitalloc_codes[i][j]) break;
- dca_smpl_bitalloc[i+1].offset = bitalloc_offsets[i];
- dca_smpl_bitalloc[i+1].wrap = 1 + (j > 4);
- dca_smpl_bitalloc[i+1].vlc[j].table = &dca_table[dca_vlc_offs[c]];
- dca_smpl_bitalloc[i+1].vlc[j].table_allocated = dca_vlc_offs[c +
1] - dca_vlc_offs[c];
- init_vlc(&dca_smpl_bitalloc[i+1].vlc[j], bitalloc_maxbits[i][j],
+ dca_smpl_bitalloc[i + 1].offset = bitalloc_offsets[i];
+ dca_smpl_bitalloc[i + 1].wrap = 1 + (j > 4);
+ dca_smpl_bitalloc[i + 1].vlc[j].table =
&dca_table[dca_vlc_offs[c]];
+ dca_smpl_bitalloc[i + 1].vlc[j].table_allocated = dca_vlc_offs[c +
1]
+ -
dca_vlc_offs[c];
+ init_vlc(&dca_smpl_bitalloc[i + 1].vlc[j], bitalloc_maxbits[i][j],
bitalloc_sizes[i],
bitalloc_bits[i][j], 1, 1,
bitalloc_codes[i][j], 2, 2, INIT_VLC_USE_NEW_STATIC);
@@ -433,11 +450,11 @@ static av_cold void dca_init_vlcs(void)
static inline void get_array(GetBitContext *gb, int *dst, int len, int bits)
{
- while(len--)
+ while (len--)
*dst++ = get_bits(gb, bits);
}
-static int dca_parse_audio_coding_header(DCAContext * s, int base_channel)
+static int dca_parse_audio_coding_header(DCAContext *s, int base_channel)
{
int i, j;
static const float adj_table[4] = { 1.0, 1.1250, 1.2500, 1.4375 };
@@ -494,13 +511,19 @@ static int dca_parse_audio_coding_header(DCAContext * s,
int base_channel)
#ifdef TRACE
av_log(s->avctx, AV_LOG_DEBUG, "subframes: %i\n", s->subframes);
av_log(s->avctx, AV_LOG_DEBUG, "prim channels: %i\n", s->prim_channels);
- for (i = base_channel; i < s->prim_channels; i++){
- av_log(s->avctx, AV_LOG_DEBUG, "subband activity: %i\n",
s->subband_activity[i]);
- av_log(s->avctx, AV_LOG_DEBUG, "vq start subband: %i\n",
s->vq_start_subband[i]);
- av_log(s->avctx, AV_LOG_DEBUG, "joint intensity: %i\n",
s->joint_intensity[i]);
- av_log(s->avctx, AV_LOG_DEBUG, "transient mode codebook: %i\n",
s->transient_huffman[i]);
- av_log(s->avctx, AV_LOG_DEBUG, "scale factor codebook: %i\n",
s->scalefactor_huffman[i]);
- av_log(s->avctx, AV_LOG_DEBUG, "bit allocation quantizer: %i\n",
s->bitalloc_huffman[i]);
+ for (i = base_channel; i < s->prim_channels; i++) {
+ av_log(s->avctx, AV_LOG_DEBUG, "subband activity: %i\n",
+ s->subband_activity[i]);
+ av_log(s->avctx, AV_LOG_DEBUG, "vq start subband: %i\n",
+ s->vq_start_subband[i]);
+ av_log(s->avctx, AV_LOG_DEBUG, "joint intensity: %i\n",
+ s->joint_intensity[i]);
+ av_log(s->avctx, AV_LOG_DEBUG, "transient mode codebook: %i\n",
+ s->transient_huffman[i]);
+ av_log(s->avctx, AV_LOG_DEBUG, "scale factor codebook: %i\n",
+ s->scalefactor_huffman[i]);
+ av_log(s->avctx, AV_LOG_DEBUG, "bit allocation quantizer: %i\n",
+ s->bitalloc_huffman[i]);
av_log(s->avctx, AV_LOG_DEBUG, "quant index huff:");
for (j = 0; j < 11; j++)
av_log(s->avctx, AV_LOG_DEBUG, " %i",
@@ -513,10 +536,10 @@ static int dca_parse_audio_coding_header(DCAContext * s,
int base_channel)
}
#endif
- return 0;
+ return 0;
}
-static int dca_parse_frame_header(DCAContext * s)
+static int dca_parse_frame_header(DCAContext *s)
{
init_get_bits(&s->gb, s->dca_buffer, s->dca_buffer_size * 8);
@@ -614,15 +637,15 @@ static int dca_parse_frame_header(DCAContext * s)
static inline int get_scale(GetBitContext *gb, int level, int value)
{
- if (level < 5) {
- /* huffman encoded */
- value += get_bitalloc(gb, &dca_scalefactor, level);
- } else if (level < 8)
- value = get_bits(gb, level + 1);
- return value;
+ if (level < 5) {
+ /* huffman encoded */
+ value += get_bitalloc(gb, &dca_scalefactor, level);
+ } else if (level < 8)
+ value = get_bits(gb, level + 1);
+ return value;
}
-static int dca_subframe_header(DCAContext * s, int base_channel, int
block_index)
+static int dca_subframe_header(DCAContext *s, int base_channel, int
block_index)
{
/* Primary audio coding side information */
int j, k;
@@ -693,7 +716,8 @@ static int dca_subframe_header(DCAContext * s, int
base_channel, int block_index
const uint32_t *scale_table;
int scale_sum;
- memset(s->scale_factor[j], 0, s->subband_activity[j] *
sizeof(s->scale_factor[0][0][0]) * 2);
+ memset(s->scale_factor[j], 0,
+ s->subband_activity[j] * sizeof(s->scale_factor[0][0][0]) * 2);
if (s->scalefactor_huffman[j] == 6)
scale_table = scale_factor_quant7;
@@ -792,7 +816,8 @@ static int dca_subframe_header(DCAContext * s, int
base_channel, int block_index
if (!base_channel && s->lfe) {
/* LFE samples */
int lfe_samples = 2 * s->lfe * (4 + block_index);
- int lfe_end_sample = 2 * s->lfe * (4 + block_index +
s->subsubframes[s->current_subframe]);
+ int lfe_end_sample = 2 * s->lfe * (4 + block_index
+ + s->subsubframes[s->current_subframe]);
float lfe_scale;
for (j = lfe_samples; j < lfe_end_sample; j++) {
@@ -822,12 +847,12 @@ static int dca_subframe_header(DCAContext * s, int
base_channel, int block_index
}
for (j = base_channel; j < s->prim_channels; j++) {
for (k = 0; k < s->subband_activity[j]; k++)
- av_log(s->avctx, AV_LOG_DEBUG,
- "prediction coefs: %f, %f, %f, %f\n",
- (float) adpcm_vb[s->prediction_vq[j][k]][0] / 8192,
- (float) adpcm_vb[s->prediction_vq[j][k]][1] / 8192,
- (float) adpcm_vb[s->prediction_vq[j][k]][2] / 8192,
- (float) adpcm_vb[s->prediction_vq[j][k]][3] / 8192);
+ av_log(s->avctx, AV_LOG_DEBUG,
+ "prediction coefs: %f, %f, %f, %f\n",
+ (float) adpcm_vb[s->prediction_vq[j][k]][0] / 8192,
+ (float) adpcm_vb[s->prediction_vq[j][k]][1] / 8192,
+ (float) adpcm_vb[s->prediction_vq[j][k]][2] / 8192,
+ (float) adpcm_vb[s->prediction_vq[j][k]][3] / 8192);
}
for (j = base_channel; j < s->prim_channels; j++) {
av_log(s->avctx, AV_LOG_DEBUG, "bitalloc index: ");
@@ -863,8 +888,10 @@ static int dca_subframe_header(DCAContext * s, int
base_channel, int block_index
if (!base_channel && s->prim_channels > 2 && s->downmix) {
av_log(s->avctx, AV_LOG_DEBUG, "Downmix coeffs:\n");
for (j = 0; j < s->prim_channels; j++) {
- av_log(s->avctx, AV_LOG_DEBUG, "Channel 0,%d = %f\n", j,
dca_downmix_coeffs[s->downmix_coef[j][0]]);
- av_log(s->avctx, AV_LOG_DEBUG, "Channel 1,%d = %f\n", j,
dca_downmix_coeffs[s->downmix_coef[j][1]]);
+ av_log(s->avctx, AV_LOG_DEBUG, "Channel 0,%d = %f\n", j,
+ dca_downmix_coeffs[s->downmix_coef[j][0]]);
+ av_log(s->avctx, AV_LOG_DEBUG, "Channel 1,%d = %f\n", j,
+ dca_downmix_coeffs[s->downmix_coef[j][1]]);
}
av_log(s->avctx, AV_LOG_DEBUG, "\n");
}
@@ -885,7 +912,7 @@ static int dca_subframe_header(DCAContext * s, int
base_channel, int block_index
return 0;
}
-static void qmf_32_subbands(DCAContext * s, int chans,
+static void qmf_32_subbands(DCAContext *s, int chans,
float samples_in[32][8], float *samples_out,
float scale)
{
@@ -895,7 +922,7 @@ static void qmf_32_subbands(DCAContext * s, int chans,
int sb_act = s->subband_activity[chans];
int subindex;
- scale *= sqrt(1/8.0);
+ scale *= sqrt(1 / 8.0);
/* Select filter */
if (!s->multirate_inter) /* Non-perfect reconstruction */
@@ -909,18 +936,17 @@ static void qmf_32_subbands(DCAContext * s, int chans,
/* Reconstructed channel sample index */
for (subindex = 0; subindex < 8; subindex++) {
/* Load in one sample from each subband and clear inactive subbands */
- for (i = 0; i < sb_act; i++){
+ for (i = 0; i < sb_act; i++) {
unsigned sign = (i - 1) & 2;
uint32_t v = AV_RN32A(&samples_in[i][subindex]) ^ sign << 30;
AV_WN32A(&s->raXin[i], v);
}
s->synth.synth_filter_float(&s->imdct,
- s->subband_fir_hist[chans],
&s->hist_index[chans],
- s->subband_fir_noidea[chans], prCoeff,
- samples_out, s->raXin, scale);
- samples_out+= 32;
-
+ s->subband_fir_hist[chans],
&s->hist_index[chans],
+ s->subband_fir_noidea[chans], prCoeff,
+ samples_out, s->raXin, scale);
+ samples_out += 32;
}
}
@@ -983,12 +1009,12 @@ static void dca_downmix(float *samples, int srcfmt,
int downmix_coef[DCA_PRIM_CHANNELS_MAX][2],
const int8_t *channel_mapping)
{
- int c,l,r,sl,sr,s;
+ int c, l, r, sl, sr, s;
int i;
float t, u, v;
float coef[DCA_PRIM_CHANNELS_MAX][2];
- for (i=0; i<DCA_PRIM_CHANNELS_MAX; i++) {
+ for (i = 0; i < DCA_PRIM_CHANNELS_MAX; i++) {
coef[i][0] = dca_downmix_coeffs[downmix_coef[i][0]];
coef[i][1] = dca_downmix_coeffs[downmix_coef[i][1]];
}
@@ -1007,11 +1033,11 @@ static void dca_downmix(float *samples, int srcfmt,
c = channel_mapping[0] * 256;
l = channel_mapping[1] * 256;
r = channel_mapping[2] * 256;
- DOWNMIX_TO_STEREO(MIX_FRONT3(samples, coef),);
+ DOWNMIX_TO_STEREO(MIX_FRONT3(samples, coef), );
break;
case DCA_2F1R:
s = channel_mapping[2] * 256;
- DOWNMIX_TO_STEREO(MIX_REAR1(samples, i + s, 2, coef),);
+ DOWNMIX_TO_STEREO(MIX_REAR1(samples, i + s, 2, coef), );
break;
case DCA_3F1R:
c = channel_mapping[0] * 256;
@@ -1024,12 +1050,12 @@ static void dca_downmix(float *samples, int srcfmt,
case DCA_2F2R:
sl = channel_mapping[2] * 256;
sr = channel_mapping[3] * 256;
- DOWNMIX_TO_STEREO(MIX_REAR2(samples, i + sl, i + sr, 2, coef),);
+ DOWNMIX_TO_STEREO(MIX_REAR2(samples, i + sl, i + sr, 2, coef), );
break;
case DCA_3F2R:
- c = channel_mapping[0] * 256;
- l = channel_mapping[1] * 256;
- r = channel_mapping[2] * 256;
+ c = channel_mapping[0] * 256;
+ l = channel_mapping[1] * 256;
+ r = channel_mapping[2] * 256;
sl = channel_mapping[3] * 256;
sr = channel_mapping[4] * 256;
DOWNMIX_TO_STEREO(MIX_FRONT3(samples, coef),
@@ -1049,7 +1075,7 @@ static int decode_blockcode(int code, int levels, int
*values)
for (i = 0; i < 4; i++) {
int div = FASTDIV(code, levels);
- values[i] = code - offset - div*levels;
+ values[i] = code - offset - div * levels;
code = div;
}
@@ -1076,7 +1102,7 @@ static inline void int8x8_fmul_int32(float *dst, const
int8_t *src, int scale)
}
#endif
-static int dca_subsubframe(DCAContext * s, int base_channel, int block_index)
+static int dca_subsubframe(DCAContext *s, int base_channel, int block_index)
{
int k, l;
int subsubframe = s->current_subsubframe;
@@ -1119,20 +1145,21 @@ static int dca_subsubframe(DCAContext * s, int
base_channel, int block_index)
/*
* Extract bits from the bit stream
*/
- if (!abits){
+ if (!abits) {
memset(subband_samples[k][l], 0, 8 *
sizeof(subband_samples[0][0][0]));
} else {
/* Deal with transients */
int sfi = s->transition_mode[k][l] && subsubframe >=
s->transition_mode[k][l];
- float rscale = quant_step_size * s->scale_factor[k][l][sfi] *
s->scalefactor_adj[k][sel];
+ float rscale = quant_step_size * s->scale_factor[k][l][sfi]
+ * s->scalefactor_adj[k][sel];
- if (abits >= 11 || !dca_smpl_bitalloc[abits].vlc[sel].table){
- if (abits <= 7){
+ if (abits >= 11 || !dca_smpl_bitalloc[abits].vlc[sel].table) {
+ if (abits <= 7) {
/* Block code */
int block_code1, block_code2, size, levels, err;
- size = abits_sizes[abits-1];
- levels = abits_levels[abits-1];
+ size = abits_sizes[abits - 1];
+ levels = abits_levels[abits - 1];
block_code1 = get_bits(&s->gb, size);
block_code2 = get_bits(&s->gb, size);
@@ -1155,7 +1182,7 @@ static int dca_subsubframe(DCAContext * s, int
base_channel, int block_index)
}
s->fmt_conv.int32_to_float_fmul_scalar(subband_samples[k][l],
- block, rscale, 8);
+ block, rscale, 8);
}
/*
@@ -1187,7 +1214,8 @@ static int dca_subsubframe(DCAContext * s, int
base_channel, int block_index)
int hfvq = s->high_freq_vq[k][l];
if (!s->debug_flag & 0x01) {
- av_log(s->avctx, AV_LOG_DEBUG, "Stream with high frequencies
VQ coding\n");
+ av_log(s->avctx, AV_LOG_DEBUG,
+ "Stream with high frequencies VQ coding\n");
s->debug_flag |= 0x01;
}
@@ -1212,12 +1240,12 @@ static int dca_subsubframe(DCAContext * s, int
base_channel, int block_index)
for (k = base_channel; k < s->prim_channels; k++)
for (l = 0; l < s->vq_start_subband[k]; l++)
memcpy(s->subband_samples_hist[k][l], &subband_samples[k][l][4],
- 4 * sizeof(subband_samples[0][0][0]));
+ 4 * sizeof(subband_samples[0][0][0]));
return 0;
}
-static int dca_filter_channels(DCAContext * s, int block_index)
+static int dca_filter_channels(DCAContext *s, int block_index)
{
float (*subband_samples)[DCA_SUBBANDS][8] =
s->subband_samples[block_index];
int k;
@@ -1226,8 +1254,8 @@ static int dca_filter_channels(DCAContext * s, int
block_index)
for (k = 0; k < s->prim_channels; k++) {
/* static float pcm_to_double[8] =
{32768.0, 32768.0, 524288.0, 524288.0, 0, 8388608.0, 8388608.0};*/
- qmf_32_subbands(s, k, subband_samples[k], &s->samples[256 *
s->channel_order_tab[k]],
- M_SQRT1_2*s->scale_bias
/*pcm_to_double[s->source_pcm_res] */ );
+ qmf_32_subbands(s, k, subband_samples[k], &s->samples[256 *
s->channel_order_tab[k]],
+ M_SQRT1_2 * s->scale_bias
/*pcm_to_double[s->source_pcm_res] */);
}
/* Down mixing */
@@ -1240,7 +1268,7 @@ static int dca_filter_channels(DCAContext * s, int
block_index)
lfe_interpolation_fir(s, s->lfe, 2 * s->lfe,
s->lfe_data + 2 * s->lfe * (block_index + 4),
&s->samples[256 * dca_lfe_index[s->amode]],
- (1.0/256.0)*s->scale_bias);
+ (1.0 / 256.0) * s->scale_bias);
/* Outputs 20bits pcm samples */
}
@@ -1248,7 +1276,7 @@ static int dca_filter_channels(DCAContext * s, int
block_index)
}
-static int dca_subframe_footer(DCAContext * s, int base_channel)
+static int dca_subframe_footer(DCAContext *s, int base_channel)
{
int aux_data_count = 0, i;
@@ -1280,7 +1308,7 @@ static int dca_subframe_footer(DCAContext * s, int
base_channel)
* @param s pointer to the DCAContext
*/
-static int dca_decode_block(DCAContext * s, int base_channel, int block_index)
+static int dca_decode_block(DCAContext *s, int base_channel, int block_index)
{
int ret;
@@ -1328,8 +1356,8 @@ static int dca_decode_block(DCAContext * s, int
base_channel, int block_index)
/**
* Convert bitstream to one representation based on sync marker
*/
-static int dca_convert_bitstream(const uint8_t * src, int src_size, uint8_t *
dst,
- int max_size)
+static int dca_convert_bitstream(const uint8_t *src, int src_size, uint8_t
*dst,
+ int max_size)
{
uint32_t mrk;
int i, tmp;
@@ -1337,7 +1365,7 @@ static int dca_convert_bitstream(const uint8_t * src, int
src_size, uint8_t * ds
uint16_t *sdst = (uint16_t *) dst;
PutBitContext pb;
- if ((unsigned)src_size > (unsigned)max_size) {
+ if ((unsigned) src_size > (unsigned) max_size) {
// av_log(NULL, AV_LOG_ERROR, "Input frame size larger than
DCA_MAX_FRAME_SIZE!\n");
// return -1;
src_size = max_size;
@@ -1349,13 +1377,13 @@ static int dca_convert_bitstream(const uint8_t * src,
int src_size, uint8_t * ds
memcpy(dst, src, src_size);
return src_size;
case DCA_MARKER_RAW_LE:
- for (i = 0; i < (src_size + 1) >> 1; i++)
+ for (i = 0; i < (src_size + 1) > > 1; i++)
*sdst++ = av_bswap16(*ssrc++);
return src_size;
case DCA_MARKER_14B_BE:
case DCA_MARKER_14B_LE:
init_put_bits(&pb, dst, max_size);
- for (i = 0; i < (src_size + 1) >> 1; i++, src += 2) {
+ for (i = 0; i < (src_size + 1) > > 1; i++, src += 2) {
tmp = ((mrk == DCA_MARKER_14B_BE) ? AV_RB16(src) : AV_RL16(src)) &
0x3FFF;
put_bits(&pb, 14, tmp);
}
@@ -1373,17 +1401,17 @@ static int dca_exss_mask2count(int mask)
{
/* count bits that mean speaker pairs twice */
return av_popcount(mask)
- + av_popcount(mask & (
- DCA_EXSS_CENTER_LEFT_RIGHT
- | DCA_EXSS_FRONT_LEFT_RIGHT
- | DCA_EXSS_FRONT_HIGH_LEFT_RIGHT
- | DCA_EXSS_WIDE_LEFT_RIGHT
- | DCA_EXSS_SIDE_LEFT_RIGHT
- | DCA_EXSS_SIDE_HIGH_LEFT_RIGHT
- | DCA_EXSS_SIDE_REAR_LEFT_RIGHT
- | DCA_EXSS_REAR_LEFT_RIGHT
- | DCA_EXSS_REAR_HIGH_LEFT_RIGHT
- ));
+ + av_popcount(mask & (
+ DCA_EXSS_CENTER_LEFT_RIGHT
+ | DCA_EXSS_FRONT_LEFT_RIGHT
+ | DCA_EXSS_FRONT_HIGH_LEFT_RIGHT
+ | DCA_EXSS_WIDE_LEFT_RIGHT
+ | DCA_EXSS_SIDE_LEFT_RIGHT
+ | DCA_EXSS_SIDE_HIGH_LEFT_RIGHT
+ | DCA_EXSS_SIDE_REAR_LEFT_RIGHT
+ | DCA_EXSS_REAR_LEFT_RIGHT
+ | DCA_EXSS_REAR_HIGH_LEFT_RIGHT
+ ));
}
/**
@@ -1425,9 +1453,9 @@ static int dca_exss_parse_asset_header(DCAContext *s)
if (s->static_fields) {
if (get_bits1(&s->gb))
- skip_bits(&s->gb, 4); // asset type descriptor
+ skip_bits(&s->gb, 4); // asset type descriptor
if (get_bits1(&s->gb))
- skip_bits_long(&s->gb, 24); // language descriptor
+ skip_bits_long(&s->gb, 24); // language descriptor
if (get_bits1(&s->gb)) {
/* How can one fit 1024 bytes of text here if the maximum value
@@ -1475,7 +1503,6 @@ static int dca_exss_parse_asset_header(DCAContext *s)
skip_bits_long(&s->gb, num_dec_ch * 5); // remap codes
}
}
-
} else {
skip_bits(&s->gb, 3); // representation type
}
@@ -1483,28 +1510,28 @@ static int dca_exss_parse_asset_header(DCAContext *s)
drc_code_present = get_bits1(&s->gb);
if (drc_code_present)
- get_bits(&s->gb, 8); // drc code
+ get_bits(&s->gb, 8); // drc code
if (get_bits1(&s->gb))
- skip_bits(&s->gb, 5); // dialog normalization code
+ skip_bits(&s->gb, 5); // dialog normalization code
if (drc_code_present && embedded_stereo)
- get_bits(&s->gb, 8); // drc stereo code
+ get_bits(&s->gb, 8); // drc stereo code
if (s->mix_metadata && get_bits1(&s->gb)) {
skip_bits(&s->gb, 1); // external mix
skip_bits(&s->gb, 6); // post mix gain code
if (get_bits(&s->gb, 2) != 3) // mixer drc code
- skip_bits(&s->gb, 3); // drc limit
+ skip_bits(&s->gb, 3); // drc limit
else
- skip_bits(&s->gb, 8); // custom drc code
+ skip_bits(&s->gb, 8); // custom drc code
if (get_bits1(&s->gb)) // channel specific scaling
for (i = 0; i < s->num_mix_configs; i++)
- skip_bits_long(&s->gb, s->mix_config_num_ch[i] * 6); // scale
codes
+ skip_bits_long(&s->gb, s->mix_config_num_ch[i] * 6); // scale
codes
else
- skip_bits_long(&s->gb, s->num_mix_configs * 6); // scale codes
+ skip_bits_long(&s->gb, s->num_mix_configs * 6); // scale codes
for (i = 0; i < s->num_mix_configs; i++) {
if (get_bits_left(&s->gb) < 0)
@@ -1521,7 +1548,7 @@ static int dca_exss_parse_asset_header(DCAContext *s)
case 0: extensions_mask = get_bits(&s->gb, 12); break;
case 1: extensions_mask = DCA_EXT_EXSS_XLL; break;
case 2: extensions_mask = DCA_EXT_EXSS_LBR; break;
- case 3: extensions_mask = 0; /* aux coding */ break;
+ case 3: extensions_mask = 0; /* aux coding */ break;
}
/* not parsed further, we were only interested in the extensions mask */
@@ -1578,7 +1605,7 @@ static void dca_exss_parse_header(DCAContext *s)
skip_bits(&s->gb, 3); // frame duration code
if (get_bits1(&s->gb))
- skip_bits_long(&s->gb, 36); // timestamp
+ skip_bits_long(&s->gb, 36); // timestamp
/* a single stream can contain multiple audio assets that can be
* combined to form multiple audio presentations */
@@ -1603,7 +1630,7 @@ static void dca_exss_parse_header(DCAContext *s)
for (i = 0; i < num_audiop; i++)
for (j = 0; j <= ss_index; j++)
if (active_ss_mask[i] & (1 << j))
- skip_bits(&s->gb, 8); // active asset mask
+ skip_bits(&s->gb, 8); // active asset mask
s->mix_metadata = get_bits1(&s->gb);
if (s->mix_metadata) {
@@ -1621,7 +1648,7 @@ static void dca_exss_parse_header(DCAContext *s)
}
for (i = 0; i < num_assets; i++)
- skip_bits_long(&s->gb, 16 + 4 * blownup); // asset size
+ skip_bits_long(&s->gb, 16 + 4 * blownup); // asset size
for (i = 0; i < num_assets; i++) {
if (dca_exss_parse_asset_header(s))
@@ -1693,7 +1720,6 @@ static int dca_decode_frame(AVCodecContext *avctx, void
*data,
/* only scan for extensions if ext_descr was unknown or indicated a
* supported XCh extension */
if (s->core_ext_mask < 0 || s->core_ext_mask & DCA_EXT_XCH) {
-
/* if ext_descr was unknown, clear s->core_ext_mask so that the
* extensions scan can fill it up */
s->core_ext_mask = FFMAX(s->core_ext_mask, 0);
@@ -1701,72 +1727,72 @@ static int dca_decode_frame(AVCodecContext *avctx, void
*data,
/* extensions start at 32-bit boundaries into bitstream */
skip_bits_long(&s->gb, (-get_bits_count(&s->gb)) & 31);
- while(core_ss_end - get_bits_count(&s->gb) >= 32) {
- uint32_t bits = get_bits_long(&s->gb, 32);
+ while (core_ss_end - get_bits_count(&s->gb) >= 32) {
+ uint32_t bits = get_bits_long(&s->gb, 32);
- switch(bits) {
- case 0x5a5a5a5a: {
- int ext_amode, xch_fsize;
+ switch (bits) {
+ case 0x5a5a5a5a: {
+ int ext_amode, xch_fsize;
- s->xch_base_channel = s->prim_channels;
+ s->xch_base_channel = s->prim_channels;
- /* validate sync word using XCHFSIZE field */
- xch_fsize = show_bits(&s->gb, 10);
- if((s->frame_size != (get_bits_count(&s->gb) >> 3) - 4 +
xch_fsize) &&
- (s->frame_size != (get_bits_count(&s->gb) >> 3) - 4 + xch_fsize
+ 1))
- continue;
+ /* validate sync word using XCHFSIZE field */
+ xch_fsize = show_bits(&s->gb, 10);
+ if ((s->frame_size != (get_bits_count(&s->gb) >> 3) - 4 +
xch_fsize) &&
+ (s->frame_size != (get_bits_count(&s->gb) >> 3) - 4 +
xch_fsize + 1))
+ continue;
- /* skip length-to-end-of-frame field for the moment */
- skip_bits(&s->gb, 10);
+ /* skip length-to-end-of-frame field for the moment */
+ skip_bits(&s->gb, 10);
- s->core_ext_mask |= DCA_EXT_XCH;
+ s->core_ext_mask |= DCA_EXT_XCH;
- /* extension amode should == 1, number of channels in extension */
- /* AFAIK XCh is not used for more channels */
- if ((ext_amode = get_bits(&s->gb, 4)) != 1) {
- av_log(avctx, AV_LOG_ERROR, "XCh extension amode %d not"
- " supported!\n",ext_amode);
- continue;
- }
+ /* extension amode should == 1, number of channels in
extension */
+ /* AFAIK XCh is not used for more channels */
+ if ((ext_amode = get_bits(&s->gb, 4)) != 1) {
+ av_log(avctx, AV_LOG_ERROR, "XCh extension amode %d not"
+ " supported!\n", ext_amode);
+ continue;
+ }
- /* much like core primary audio coding header */
- dca_parse_audio_coding_header(s, s->xch_base_channel);
+ /* much like core primary audio coding header */
+ dca_parse_audio_coding_header(s, s->xch_base_channel);
- for (i = 0; i < (s->sample_blocks / 8); i++) {
- if ((ret = dca_decode_block(s, s->xch_base_channel, i))) {
- av_log(avctx, AV_LOG_ERROR, "error decoding XCh
extension\n");
- continue;
+ for (i = 0; i < (s->sample_blocks / 8); i++) {
+ if ((ret = dca_decode_block(s, s->xch_base_channel, i))) {
+ av_log(avctx, AV_LOG_ERROR, "error decoding XCh
extension\n");
+ continue;
+ }
}
+
+ s->xch_present = 1;
+ break;
}
+ case 0x47004a03:
+ /* XXCh: extended channels */
+ /* usually found either in core or HD part in DTS-HD HRA
streams,
+ * but not in DTS-ES which contains XCh extensions instead */
+ s->core_ext_mask |= DCA_EXT_XXCH;
+ break;
+
+ case 0x1d95f262: {
+ int fsize96 = show_bits(&s->gb, 12) + 1;
+ if (s->frame_size != (get_bits_count(&s->gb) >> 3) - 4 +
fsize96)
+ continue;
- s->xch_present = 1;
- break;
- }
- case 0x47004a03:
- /* XXCh: extended channels */
- /* usually found either in core or HD part in DTS-HD HRA streams,
- * but not in DTS-ES which contains XCh extensions instead */
- s->core_ext_mask |= DCA_EXT_XXCH;
- break;
-
- case 0x1d95f262: {
- int fsize96 = show_bits(&s->gb, 12) + 1;
- if (s->frame_size != (get_bits_count(&s->gb) >> 3) - 4 + fsize96)
- continue;
-
- av_log(avctx, AV_LOG_DEBUG, "X96 extension found at %d bits\n",
get_bits_count(&s->gb));
- skip_bits(&s->gb, 12);
- av_log(avctx, AV_LOG_DEBUG, "FSIZE96 = %d bytes\n", fsize96);
- av_log(avctx, AV_LOG_DEBUG, "REVNO = %d\n", get_bits(&s->gb, 4));
-
- s->core_ext_mask |= DCA_EXT_X96;
- break;
- }
- }
+ av_log(avctx, AV_LOG_DEBUG, "X96 extension found at %d bits\n",
+ get_bits_count(&s->gb));
+ skip_bits(&s->gb, 12);
+ av_log(avctx, AV_LOG_DEBUG, "FSIZE96 = %d bytes\n", fsize96);
+ av_log(avctx, AV_LOG_DEBUG, "REVNO = %d\n", get_bits(&s->gb,
4));
- skip_bits_long(&s->gb, (-get_bits_count(&s->gb)) & 31);
- }
+ s->core_ext_mask |= DCA_EXT_X96;
+ break;
+ }
+ }
+ skip_bits_long(&s->gb, (-get_bits_count(&s->gb)) & 31);
+ }
} else {
/* no supported extensions, skip the rest of the core substream */
skip_bits_long(&s->gb, core_ss_end - get_bits_count(&s->gb));
@@ -1786,7 +1812,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void
*data,
channels = s->prim_channels + !!s->lfe;
- if (s->amode<16) {
+ if (s->amode < 16) {
avctx->channel_layout = dca_core_channel_layout[s->amode];
if (s->xch_present && (!avctx->request_channels ||
@@ -1818,7 +1844,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void
*data,
avctx->channel_layout = AV_CH_LAYOUT_STEREO;
}
} else {
- av_log(avctx, AV_LOG_ERROR, "Non standard configuration %d
!\n",s->amode);
+ av_log(avctx, AV_LOG_ERROR, "Non standard configuration %d !\n",
s->amode);
return AVERROR_INVALIDDATA;
}
@@ -1844,8 +1870,8 @@ static int dca_decode_frame(AVCodecContext *avctx, void
*data,
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
return ret;
}
- samples_flt = (float *)s->frame.data[0];
- samples_s16 = (int16_t *)s->frame.data[0];
+ samples_flt = (float *) s->frame.data[0];
+ samples_s16 = (int16_t *) s->frame.data[0];
/* filter to get final output */
for (i = 0; i < (s->sample_blocks / 8); i++) {
@@ -1853,10 +1879,10 @@ static int dca_decode_frame(AVCodecContext *avctx, void
*data,
/* If this was marked as a DTS-ES stream we need to subtract back- */
/* channel from SL & SR to remove matrixed back-channel signal */
- if((s->source_pcm_res & 1) && s->xch_present) {
- float* back_chan = s->samples +
s->channel_order_tab[s->xch_base_channel] * 256;
- float* lt_chan = s->samples +
s->channel_order_tab[s->xch_base_channel - 2] * 256;
- float* rt_chan = s->samples +
s->channel_order_tab[s->xch_base_channel - 1] * 256;
+ if ((s->source_pcm_res & 1) && s->xch_present) {
+ float *back_chan = s->samples +
s->channel_order_tab[s->xch_base_channel] * 256;
+ float *lt_chan = s->samples +
s->channel_order_tab[s->xch_base_channel - 2] * 256;
+ float *rt_chan = s->samples +
s->channel_order_tab[s->xch_base_channel - 1] * 256;
s->dsp.vector_fmac_scalar(lt_chan, back_chan, -M_SQRT1_2, 256);
s->dsp.vector_fmac_scalar(rt_chan, back_chan, -M_SQRT1_2, 256);
}
@@ -1879,8 +1905,8 @@ static int dca_decode_frame(AVCodecContext *avctx, void
*data,
s->lfe_data[i] = s->lfe_data[i + lfe_samples];
}
- *got_frame_ptr = 1;
- *(AVFrame *)data = s->frame;
+ *got_frame_ptr = 1;
+ *(AVFrame *) data = s->frame;
return buf_size;
}
@@ -1893,7 +1919,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void
*data,
* @param avctx pointer to the AVCodecContext
*/
-static av_cold int dca_decode_init(AVCodecContext * avctx)
+static av_cold int dca_decode_init(AVCodecContext *avctx)
{
DCAContext *s = avctx->priv_data;
int i;
@@ -1907,7 +1933,7 @@ static av_cold int dca_decode_init(AVCodecContext * avctx)
ff_dcadsp_init(&s->dcadsp);
ff_fmt_convert_init(&s->fmt_conv, avctx);
- for (i = 0; i < DCA_PRIM_CHANNELS_MAX+1; i++)
+ for (i = 0; i < DCA_PRIM_CHANNELS_MAX + 1; i++)
s->samples_chanptr[i] = s->samples + i * 256;
if (avctx->request_sample_fmt == AV_SAMPLE_FMT_FLT) {
@@ -1930,7 +1956,7 @@ static av_cold int dca_decode_init(AVCodecContext * avctx)
return 0;
}
-static av_cold int dca_decode_end(AVCodecContext * avctx)
+static av_cold int dca_decode_end(AVCodecContext *avctx)
{
DCAContext *s = avctx->priv_data;
ff_mdct_end(&s->imdct);
@@ -1947,17 +1973,18 @@ static const AVProfile profiles[] = {
};
AVCodec ff_dca_decoder = {
- .name = "dca",
- .type = AVMEDIA_TYPE_AUDIO,
- .id = CODEC_ID_DTS,
- .priv_data_size = sizeof(DCAContext),
- .init = dca_decode_init,
- .decode = dca_decode_frame,
- .close = dca_decode_end,
- .long_name = NULL_IF_CONFIG_SMALL("DCA (DTS Coherent Acoustics)"),
- .capabilities = CODEC_CAP_CHANNEL_CONF | CODEC_CAP_DR1,
- .sample_fmts = (const enum AVSampleFormat[]) {
- AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE
- },
- .profiles = NULL_IF_CONFIG_SMALL(profiles),
+ .name = "dca",
+ .type = AVMEDIA_TYPE_AUDIO,
+ .id = CODEC_ID_DTS,
+ .priv_data_size = sizeof(DCAContext),
+ .init = dca_decode_init,
+ .decode = dca_decode_frame,
+ .close = dca_decode_end,
+ .long_name = NULL_IF_CONFIG_SMALL("DCA (DTS Coherent Acoustics)"),
+ .capabilities = CODEC_CAP_CHANNEL_CONF | CODEC_CAP_DR1,
+ .sample_fmts = (const enum AVSampleFormat[]) {
+ AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16,
+ AV_SAMPLE_FMT_NONE
+ },
+ .profiles = NULL_IF_CONFIG_SMALL(profiles),
};
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel