mirror of
https://github.com/alsa-project/alsa-tools.git
synced 2025-10-29 05:40:25 -04: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
|
|
@ -252,6 +252,22 @@ downmix_3f_0r_to_2ch(bsi_t* bsi, stream_samples_t samples,sint_16 *s16_samples)
|
|||
}
|
||||
}
|
||||
|
||||
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
|
||||
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);
|
||||
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:
|
||||
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);
|
||||
exit(1);
|
||||
}
|
||||
downmix_2f_0r_to_2ch(bsi,samples,s16_samples);
|
||||
break;
|
||||
|
||||
// 1/0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue