[SCM] libav/experimental: fix phase flag processing for the case when coupling coordinates are reused for the right channel, but new for the left channel
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Sun Jun 30 16:11:24 UTC 2013
The following commit has been merged in the experimental branch:
commit b02fbf7536c0f6ed505335e05a65f123adec1ac8
Author: Justin Ruggles <justin.ruggles at gmail.com>
Date: Sun Jan 6 20:15:24 2008 +0000
fix phase flag processing for the case when coupling coordinates are reused
for the right channel, but new for the left channel
Originally committed as revision 11436 to svn://svn.ffmpeg.org/ffmpeg/trunk
diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c
index 76cf1ad..438cc65 100644
--- a/libavcodec/ac3dec.c
+++ b/libavcodec/ac3dec.c
@@ -133,6 +133,7 @@ typedef struct {
int cpl_in_use; ///< coupling in use
int channel_in_cpl[AC3_MAX_CHANNELS]; ///< channel in coupling
int phase_flags_in_use; ///< phase flags in use
+ int phase_flags[18]; ///< phase flags
int cpl_band_struct[18]; ///< coupling band structure
int rematrixing_strategy; ///< rematrixing strategy
int num_rematrixing_bands; ///< number of rematrixing bands
@@ -470,8 +471,11 @@ static void uncouple_channels(AC3DecodeContext *s)
subbnd++;
for(j=0; j<12; j++) {
for(ch=1; ch<=s->fbw_channels; ch++) {
- if(s->channel_in_cpl[ch])
+ if(s->channel_in_cpl[ch]) {
s->transform_coeffs[ch][i] = s->transform_coeffs[CPL_CH][i] * s->cpl_coords[ch][bnd] * 8.0f;
+ if (ch == 2 && s->phase_flags[bnd])
+ s->transform_coeffs[ch][i] = -s->transform_coeffs[ch][i];
+ }
}
i++;
}
@@ -866,10 +870,9 @@ static int ac3_parse_audio_block(AC3DecodeContext *s, int blk)
}
}
/* phase flags */
- if (channel_mode == AC3_CHMODE_STEREO && s->phase_flags_in_use && cpl_coords_exist) {
+ if (channel_mode == AC3_CHMODE_STEREO && cpl_coords_exist) {
for (bnd = 0; bnd < s->num_cpl_bands; bnd++) {
- if (get_bits1(gbc))
- s->cpl_coords[2][bnd] = -s->cpl_coords[2][bnd];
+ s->phase_flags[bnd] = s->phase_flags_in_use? get_bits1(gbc) : 0;
}
}
}
--
Libav/FFmpeg packaging
More information about the pkg-multimedia-commits
mailing list