mirror of
https://github.com/alsa-project/alsa-tools.git
synced 2026-02-24 01:40:12 -05:00
support for dynamic 2.0/5.1 AC3 changes - bug#3441
This commit is contained in:
parent
d6d0775e8c
commit
93de415cfe
1 changed files with 26 additions and 4 deletions
|
|
@ -251,7 +251,23 @@ downmix_3f_0r_to_2ch(bsi_t* bsi, stream_samples_t samples,sint_16 *s16_samples)
|
||||||
s16_samples[j * 2 + 1] = (sint_16) (right_tmp * 32767.0f);
|
s16_samples[j * 2 + 1] = (sint_16) (right_tmp * 32767.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
downmix_2f_0r_to_6ch(bsi_t* bsi, stream_samples_t samples,sint_16 *s16_samples)
|
||||||
|
{
|
||||||
|
uint_32 j;
|
||||||
|
float *left = 0, *right = 0;
|
||||||
|
|
||||||
|
left = samples[0];
|
||||||
|
right = samples[1];
|
||||||
|
|
||||||
|
for (j = 0; j < 256; j++)
|
||||||
|
{
|
||||||
|
s16_samples[j * 6 ] = (sint_16) (*left++ * 32767.0f);
|
||||||
|
s16_samples[j * 6 + 1] = (sint_16) (*right++ * 32767.0f);
|
||||||
|
} //FIXME enable output on surround channels, too.
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
downmix_2f_0r_to_2ch(bsi_t* bsi, stream_samples_t samples,sint_16 *s16_samples)
|
downmix_2f_0r_to_2ch(bsi_t* bsi, stream_samples_t samples,sint_16 *s16_samples)
|
||||||
{
|
{
|
||||||
|
|
@ -368,13 +384,19 @@ void downmix(bsi_t* bsi, stream_samples_t samples,sint_16 *s16_samples)
|
||||||
downmix_3f_0r_to_2ch(bsi,samples,s16_samples);
|
downmix_3f_0r_to_2ch(bsi,samples,s16_samples);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// 2/0
|
// 2/0 - 2f_0r_to_6ch not really, but allows -D pcm.surround51:1 with 2/0 and 3/2 input (VDR e.g.)
|
||||||
case 2:
|
case 2:
|
||||||
if (ac3_config.num_output_ch != 2) {
|
switch (ac3_config.num_output_ch) {
|
||||||
|
case 2:
|
||||||
|
downmix_2f_0r_to_2ch(bsi,samples,s16_samples);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
downmix_2f_0r_to_6ch(bsi,samples,s16_samples);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
fprintf(stderr,"unsupported 2/0 channels %d\n", ac3_config.num_output_ch);
|
fprintf(stderr,"unsupported 2/0 channels %d\n", ac3_config.num_output_ch);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
downmix_2f_0r_to_2ch(bsi,samples,s16_samples);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// 1/0
|
// 1/0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue