mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
channelmix: improve debug
This commit is contained in:
parent
c743f4936a
commit
3b507e062c
1 changed files with 46 additions and 34 deletions
|
|
@ -145,6 +145,8 @@ static int make_matrix(struct channelmix *mix)
|
||||||
float matrix[SPA_AUDIO_MAX_CHANNELS][SPA_AUDIO_MAX_CHANNELS] = {{ 0.0f }};
|
float matrix[SPA_AUDIO_MAX_CHANNELS][SPA_AUDIO_MAX_CHANNELS] = {{ 0.0f }};
|
||||||
uint64_t src_mask = mix->src_mask;
|
uint64_t src_mask = mix->src_mask;
|
||||||
uint64_t dst_mask = mix->dst_mask;
|
uint64_t dst_mask = mix->dst_mask;
|
||||||
|
uint32_t src_chan = mix->src_chan;
|
||||||
|
uint32_t dst_chan = mix->dst_chan;
|
||||||
uint64_t unassigned, keep;
|
uint64_t unassigned, keep;
|
||||||
uint32_t i, j, ic, jc, matrix_encoding = MATRIX_NORMAL;
|
uint32_t i, j, ic, jc, matrix_encoding = MATRIX_NORMAL;
|
||||||
float clev = SQRT1_2;
|
float clev = SQRT1_2;
|
||||||
|
|
@ -160,7 +162,7 @@ static int make_matrix(struct channelmix *mix)
|
||||||
/* move the MONO mask to FRONT so that the lower bits can be shifted
|
/* move the MONO mask to FRONT so that the lower bits can be shifted
|
||||||
* away. */
|
* away. */
|
||||||
if ((src_mask & (1Ull << SPA_AUDIO_CHANNEL_MONO)) != 0) {
|
if ((src_mask & (1Ull << SPA_AUDIO_CHANNEL_MONO)) != 0) {
|
||||||
if (mix->src_chan == 1)
|
if (src_chan == 1)
|
||||||
src_mask = 0;
|
src_mask = 0;
|
||||||
else
|
else
|
||||||
src_mask |= (1ULL << SPA_AUDIO_CHANNEL_FC);
|
src_mask |= (1ULL << SPA_AUDIO_CHANNEL_FC);
|
||||||
|
|
@ -174,19 +176,19 @@ static int make_matrix(struct channelmix *mix)
|
||||||
|
|
||||||
/* unknown channels or just 1 channel */
|
/* unknown channels or just 1 channel */
|
||||||
if (src_mask == 0 || dst_mask == 0) {
|
if (src_mask == 0 || dst_mask == 0) {
|
||||||
if (mix->src_chan == 1) {
|
if (src_chan == 1) {
|
||||||
/* one FC/MONO src goes everywhere */
|
/* one FC/MONO src goes everywhere */
|
||||||
spa_log_debug(mix->log, "distribute FC/MONO");
|
spa_log_debug(mix->log, "distribute FC/MONO (%f)", 1.0f);
|
||||||
for (i = 0; i < SPA_AUDIO_MAX_CHANNELS; i++)
|
for (i = 0; i < SPA_AUDIO_MAX_CHANNELS; i++)
|
||||||
matrix[i][0]= 1.0f;
|
matrix[i][0]= 1.0f;
|
||||||
} else if (mix->dst_chan == 1) {
|
} else if (dst_chan == 1) {
|
||||||
/* one FC/MONO dst get average of everything */
|
/* one FC/MONO dst get average of everything */
|
||||||
spa_log_debug(mix->log, "average FC/MONO");
|
spa_log_debug(mix->log, "average FC/MONO (%f)", 1.0f / src_chan);
|
||||||
for (i = 0; i < SPA_AUDIO_MAX_CHANNELS; i++)
|
for (i = 0; i < SPA_AUDIO_MAX_CHANNELS; i++)
|
||||||
matrix[0][i]= 1.0f / mix->src_chan;
|
matrix[0][i]= 1.0f / src_chan;
|
||||||
} else {
|
} else {
|
||||||
/* just pair channels */
|
/* just pair channels */
|
||||||
spa_log_debug(mix->log, "pairing channels");
|
spa_log_debug(mix->log, "pairing channels (%f)", 1.0f);
|
||||||
for (i = 0; i < SPA_AUDIO_MAX_CHANNELS; i++)
|
for (i = 0; i < SPA_AUDIO_MAX_CHANNELS; i++)
|
||||||
matrix[i][i]= 1.0f;
|
matrix[i][i]= 1.0f;
|
||||||
}
|
}
|
||||||
|
|
@ -200,7 +202,7 @@ static int make_matrix(struct channelmix *mix)
|
||||||
spa_log_debug(mix->log, "matching channels");
|
spa_log_debug(mix->log, "matching channels");
|
||||||
for (i = 0; i < SPA_AUDIO_MAX_CHANNELS; i++) {
|
for (i = 0; i < SPA_AUDIO_MAX_CHANNELS; i++) {
|
||||||
if ((src_mask & dst_mask & (1ULL << i))) {
|
if ((src_mask & dst_mask & (1ULL << i))) {
|
||||||
spa_log_debug(mix->log, "matched %u", i);
|
spa_log_debug(mix->log, "matched channel %u (%f)", i, 1.0f);
|
||||||
matrix[i][i]= 1.0f;
|
matrix[i][i]= 1.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -225,11 +227,12 @@ static int make_matrix(struct channelmix *mix)
|
||||||
|
|
||||||
if (unassigned & FRONT){
|
if (unassigned & FRONT){
|
||||||
if ((dst_mask & STEREO) == STEREO){
|
if ((dst_mask & STEREO) == STEREO){
|
||||||
spa_log_debug(mix->log, "assign FC to STEREO");
|
|
||||||
if(src_mask & STEREO) {
|
if(src_mask & STEREO) {
|
||||||
|
spa_log_debug(mix->log, "assign FC to STEREO (%f)", clev);
|
||||||
_MATRIX(FL,FC) += clev;
|
_MATRIX(FL,FC) += clev;
|
||||||
_MATRIX(FR,FC) += clev;
|
_MATRIX(FR,FC) += clev;
|
||||||
} else {
|
} else {
|
||||||
|
spa_log_debug(mix->log, "assign FC to STEREO (%f)", SQRT1_2);
|
||||||
_MATRIX(FL,FC) += SQRT1_2;
|
_MATRIX(FL,FC) += SQRT1_2;
|
||||||
_MATRIX(FR,FC) += SQRT1_2;
|
_MATRIX(FR,FC) += SQRT1_2;
|
||||||
}
|
}
|
||||||
|
|
@ -240,11 +243,13 @@ static int make_matrix(struct channelmix *mix)
|
||||||
|
|
||||||
if (unassigned & STEREO){
|
if (unassigned & STEREO){
|
||||||
if (dst_mask & FRONT) {
|
if (dst_mask & FRONT) {
|
||||||
spa_log_debug(mix->log, "assign STEREO to FC");
|
spa_log_debug(mix->log, "assign STEREO to FC (%f)", SQRT1_2);
|
||||||
_MATRIX(FC,FL) += SQRT1_2;
|
_MATRIX(FC,FL) += SQRT1_2;
|
||||||
_MATRIX(FC,FR) += SQRT1_2;
|
_MATRIX(FC,FR) += SQRT1_2;
|
||||||
if (src_mask & FRONT)
|
if (src_mask & FRONT) {
|
||||||
|
spa_log_debug(mix->log, "assign FC to FC (%f)", clev * SQRT2);
|
||||||
_MATRIX(FC,FC) = clev * SQRT2;
|
_MATRIX(FC,FC) = clev * SQRT2;
|
||||||
|
}
|
||||||
keep &= ~FRONT;
|
keep &= ~FRONT;
|
||||||
} else {
|
} else {
|
||||||
spa_log_warn(mix->log, "can't assign STEREO");
|
spa_log_warn(mix->log, "can't assign STEREO");
|
||||||
|
|
@ -253,11 +258,11 @@ static int make_matrix(struct channelmix *mix)
|
||||||
|
|
||||||
if (unassigned & _MASK(RC)) {
|
if (unassigned & _MASK(RC)) {
|
||||||
if (dst_mask & REAR){
|
if (dst_mask & REAR){
|
||||||
spa_log_debug(mix->log, "assign RC to RL+RR");
|
spa_log_debug(mix->log, "assign RC to RL+RR (%f)", SQRT1_2);
|
||||||
_MATRIX(RL,RC) += SQRT1_2;
|
_MATRIX(RL,RC) += SQRT1_2;
|
||||||
_MATRIX(RR,RC) += SQRT1_2;
|
_MATRIX(RR,RC) += SQRT1_2;
|
||||||
} else if (dst_mask & SIDE) {
|
} else if (dst_mask & SIDE) {
|
||||||
spa_log_debug(mix->log, "assign RC to SL+SR");
|
spa_log_debug(mix->log, "assign RC to SL+SR (%f)", SQRT1_2);
|
||||||
_MATRIX(SL,RC) += SQRT1_2;
|
_MATRIX(SL,RC) += SQRT1_2;
|
||||||
_MATRIX(SR,RC) += SQRT1_2;
|
_MATRIX(SR,RC) += SQRT1_2;
|
||||||
} else if(dst_mask & STEREO) {
|
} else if(dst_mask & STEREO) {
|
||||||
|
|
@ -276,7 +281,7 @@ static int make_matrix(struct channelmix *mix)
|
||||||
_MATRIX(FR,RC) += slev * SQRT1_2;
|
_MATRIX(FR,RC) += slev * SQRT1_2;
|
||||||
}
|
}
|
||||||
} else if (dst_mask & FRONT) {
|
} else if (dst_mask & FRONT) {
|
||||||
spa_log_debug(mix->log, "assign RC to FC");
|
spa_log_debug(mix->log, "assign RC to FC (%f)", slev * SQRT1_2);
|
||||||
_MATRIX(FC,RC) += slev * SQRT1_2;
|
_MATRIX(FC,RC) += slev * SQRT1_2;
|
||||||
} else {
|
} else {
|
||||||
spa_log_warn(mix->log, "can't assign RC");
|
spa_log_warn(mix->log, "can't assign RC");
|
||||||
|
|
@ -298,7 +303,7 @@ static int make_matrix(struct channelmix *mix)
|
||||||
_MATRIX(SR,RR) += 1.0f;
|
_MATRIX(SR,RR) += 1.0f;
|
||||||
}
|
}
|
||||||
} else if (dst_mask & STEREO) {
|
} else if (dst_mask & STEREO) {
|
||||||
spa_log_debug(mix->log, "assign RL+RR to FL+FR %f", slev);
|
spa_log_debug(mix->log, "assign RL+RR to FL+FR (%f)", slev);
|
||||||
if (matrix_encoding == MATRIX_DOLBY) {
|
if (matrix_encoding == MATRIX_DOLBY) {
|
||||||
_MATRIX(FL,RL) -= slev * SQRT1_2;
|
_MATRIX(FL,RL) -= slev * SQRT1_2;
|
||||||
_MATRIX(FL,RR) -= slev * SQRT1_2;
|
_MATRIX(FL,RR) -= slev * SQRT1_2;
|
||||||
|
|
@ -314,7 +319,8 @@ static int make_matrix(struct channelmix *mix)
|
||||||
_MATRIX(FR,RR) += slev;
|
_MATRIX(FR,RR) += slev;
|
||||||
}
|
}
|
||||||
} else if (dst_mask & FRONT) {
|
} else if (dst_mask & FRONT) {
|
||||||
spa_log_debug(mix->log, "assign RL+RR to FC");
|
spa_log_debug(mix->log, "assign RL+RR to FC (%f)",
|
||||||
|
slev * SQRT1_2);
|
||||||
_MATRIX(FC,RL)+= slev * SQRT1_2;
|
_MATRIX(FC,RL)+= slev * SQRT1_2;
|
||||||
_MATRIX(FC,RR)+= slev * SQRT1_2;
|
_MATRIX(FC,RR)+= slev * SQRT1_2;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -324,36 +330,41 @@ static int make_matrix(struct channelmix *mix)
|
||||||
|
|
||||||
if (unassigned & SIDE) {
|
if (unassigned & SIDE) {
|
||||||
if (dst_mask & REAR) {
|
if (dst_mask & REAR) {
|
||||||
spa_log_debug(mix->log, "assign SL+SR to RL+RR");
|
|
||||||
if (src_mask & _MASK(RL)) {
|
if (src_mask & _MASK(RL)) {
|
||||||
|
spa_log_debug(mix->log, "assign SL+SR to RL+RR (%f)", SQRT1_2);
|
||||||
_MATRIX(RL,SL) += SQRT1_2;
|
_MATRIX(RL,SL) += SQRT1_2;
|
||||||
_MATRIX(RR,SR) += SQRT1_2;
|
_MATRIX(RR,SR) += SQRT1_2;
|
||||||
} else {
|
} else {
|
||||||
|
spa_log_debug(mix->log, "assign SL+SR to RL+RR (%f)", 1.0f);
|
||||||
_MATRIX(RL,SL) += 1.0f;
|
_MATRIX(RL,SL) += 1.0f;
|
||||||
_MATRIX(RR,SR) += 1.0f;
|
_MATRIX(RR,SR) += 1.0f;
|
||||||
}
|
}
|
||||||
} else if (dst_mask & _MASK(RC)) {
|
} else if (dst_mask & _MASK(RC)) {
|
||||||
spa_log_debug(mix->log, "assign SL+SR to RC");
|
spa_log_debug(mix->log, "assign SL+SR to RC (%f)", SQRT1_2);
|
||||||
_MATRIX(RC,SL)+= SQRT1_2;
|
_MATRIX(RC,SL)+= SQRT1_2;
|
||||||
_MATRIX(RC,SR)+= SQRT1_2;
|
_MATRIX(RC,SR)+= SQRT1_2;
|
||||||
} else if (dst_mask & STEREO) {
|
} else if (dst_mask & STEREO) {
|
||||||
spa_log_debug(mix->log, "assign SL+SR to FL+FR");
|
|
||||||
if (matrix_encoding == MATRIX_DOLBY) {
|
if (matrix_encoding == MATRIX_DOLBY) {
|
||||||
|
spa_log_debug(mix->log, "assign SL+SR to FL+FR (%f)",
|
||||||
|
slev * SQRT1_2);
|
||||||
_MATRIX(FL,SL) -= slev * SQRT1_2;
|
_MATRIX(FL,SL) -= slev * SQRT1_2;
|
||||||
_MATRIX(FL,SR) -= slev * SQRT1_2;
|
_MATRIX(FL,SR) -= slev * SQRT1_2;
|
||||||
_MATRIX(FR,SL) += slev * SQRT1_2;
|
_MATRIX(FR,SL) += slev * SQRT1_2;
|
||||||
_MATRIX(FR,SR) += slev * SQRT1_2;
|
_MATRIX(FR,SR) += slev * SQRT1_2;
|
||||||
} else if (matrix_encoding == MATRIX_DPLII) {
|
} else if (matrix_encoding == MATRIX_DPLII) {
|
||||||
|
spa_log_debug(mix->log, "assign SL+SR to FL+FR (%f / %f)",
|
||||||
|
slev * SQRT3_2, slev * SQRT1_2);
|
||||||
_MATRIX(FL,SL) -= slev * SQRT3_2;
|
_MATRIX(FL,SL) -= slev * SQRT3_2;
|
||||||
_MATRIX(FL,SR) -= slev * SQRT1_2;
|
_MATRIX(FL,SR) -= slev * SQRT1_2;
|
||||||
_MATRIX(FR,SL) += slev * SQRT1_2;
|
_MATRIX(FR,SL) += slev * SQRT1_2;
|
||||||
_MATRIX(FR,SR) += slev * SQRT3_2;
|
_MATRIX(FR,SR) += slev * SQRT3_2;
|
||||||
} else {
|
} else {
|
||||||
|
spa_log_debug(mix->log, "assign SL+SR to FL+FR (%f)", slev);
|
||||||
_MATRIX(FL,SL) += slev;
|
_MATRIX(FL,SL) += slev;
|
||||||
_MATRIX(FR,SR) += slev;
|
_MATRIX(FR,SR) += slev;
|
||||||
}
|
}
|
||||||
} else if (dst_mask & FRONT) {
|
} else if (dst_mask & FRONT) {
|
||||||
spa_log_debug(mix->log, "assign SL+SR to FC");
|
spa_log_debug(mix->log, "assign SL+SR to FC (%f)", slev * SQRT1_2);
|
||||||
_MATRIX(FC,SL) += slev * SQRT1_2;
|
_MATRIX(FC,SL) += slev * SQRT1_2;
|
||||||
_MATRIX(FC,SR) += slev * SQRT1_2;
|
_MATRIX(FC,SR) += slev * SQRT1_2;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -363,11 +374,11 @@ static int make_matrix(struct channelmix *mix)
|
||||||
|
|
||||||
if (unassigned & _MASK(FLC)) {
|
if (unassigned & _MASK(FLC)) {
|
||||||
if (dst_mask & STEREO) {
|
if (dst_mask & STEREO) {
|
||||||
spa_log_debug(mix->log, "assign FLC+FRC to FL+FR");
|
spa_log_debug(mix->log, "assign FLC+FRC to FL+FR (%f)", 1.0f);
|
||||||
_MATRIX(FL,FLC)+= 1.0f;
|
_MATRIX(FL,FLC)+= 1.0f;
|
||||||
_MATRIX(FR,FRC)+= 1.0f;
|
_MATRIX(FR,FRC)+= 1.0f;
|
||||||
} else if(dst_mask & FRONT) {
|
} else if(dst_mask & FRONT) {
|
||||||
spa_log_debug(mix->log, "assign FLC+FRC to FC");
|
spa_log_debug(mix->log, "assign FLC+FRC to FC (%f)", SQRT1_2);
|
||||||
_MATRIX(FC,FLC)+= SQRT1_2;
|
_MATRIX(FC,FLC)+= SQRT1_2;
|
||||||
_MATRIX(FC,FRC)+= SQRT1_2;
|
_MATRIX(FC,FRC)+= SQRT1_2;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -377,10 +388,11 @@ static int make_matrix(struct channelmix *mix)
|
||||||
if (unassigned & _MASK(LFE) &&
|
if (unassigned & _MASK(LFE) &&
|
||||||
SPA_FLAG_IS_SET(mix->options, CHANNELMIX_OPTION_MIX_LFE)) {
|
SPA_FLAG_IS_SET(mix->options, CHANNELMIX_OPTION_MIX_LFE)) {
|
||||||
if (dst_mask & FRONT) {
|
if (dst_mask & FRONT) {
|
||||||
spa_log_debug(mix->log, "assign LFE to FC");
|
spa_log_debug(mix->log, "assign LFE to FC (%f)", llev);
|
||||||
_MATRIX(FC,LFE) += llev;
|
_MATRIX(FC,LFE) += llev;
|
||||||
} else if (dst_mask & STEREO) {
|
} else if (dst_mask & STEREO) {
|
||||||
spa_log_debug(mix->log, "assign LFE to FL+FR");
|
spa_log_debug(mix->log, "assign LFE to FL+FR (%f)",
|
||||||
|
llev * SQRT1_2);
|
||||||
_MATRIX(FL,LFE) += llev * SQRT1_2;
|
_MATRIX(FL,LFE) += llev * SQRT1_2;
|
||||||
_MATRIX(FR,LFE) += llev * SQRT1_2;
|
_MATRIX(FR,LFE) += llev * SQRT1_2;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -395,7 +407,7 @@ static int make_matrix(struct channelmix *mix)
|
||||||
|
|
||||||
if (unassigned & STEREO) {
|
if (unassigned & STEREO) {
|
||||||
if ((src_mask & FRONT) == FRONT) {
|
if ((src_mask & FRONT) == FRONT) {
|
||||||
spa_log_debug(mix->log, "produce STEREO from FC");
|
spa_log_debug(mix->log, "produce STEREO from FC (%f)", clev);
|
||||||
_MATRIX(FL,FC) += clev;
|
_MATRIX(FL,FC) += clev;
|
||||||
_MATRIX(FR,FC) += clev;
|
_MATRIX(FR,FC) += clev;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -404,7 +416,7 @@ static int make_matrix(struct channelmix *mix)
|
||||||
}
|
}
|
||||||
if (unassigned & FRONT) {
|
if (unassigned & FRONT) {
|
||||||
if ((src_mask & STEREO) == STEREO) {
|
if ((src_mask & STEREO) == STEREO) {
|
||||||
spa_log_debug(mix->log, "produce FC from STEREO");
|
spa_log_debug(mix->log, "produce FC from STEREO (%f)", clev);
|
||||||
_MATRIX(FC,FL) += clev;
|
_MATRIX(FC,FL) += clev;
|
||||||
_MATRIX(FC,FR) += clev;
|
_MATRIX(FC,FR) += clev;
|
||||||
filter_fc = true;
|
filter_fc = true;
|
||||||
|
|
@ -414,12 +426,12 @@ static int make_matrix(struct channelmix *mix)
|
||||||
}
|
}
|
||||||
if (unassigned & _MASK(LFE)) {
|
if (unassigned & _MASK(LFE)) {
|
||||||
if ((src_mask & STEREO) == STEREO) {
|
if ((src_mask & STEREO) == STEREO) {
|
||||||
spa_log_debug(mix->log, "produce LFE from STEREO");
|
spa_log_debug(mix->log, "produce LFE from STEREO (%f)", llev);
|
||||||
_MATRIX(LFE,FL) += llev;
|
_MATRIX(LFE,FL) += llev;
|
||||||
_MATRIX(LFE,FR) += llev;
|
_MATRIX(LFE,FR) += llev;
|
||||||
filter_lfe = true;
|
filter_lfe = true;
|
||||||
} else if ((src_mask & FRONT) == FRONT) {
|
} else if ((src_mask & FRONT) == FRONT) {
|
||||||
spa_log_debug(mix->log, "produce LFE from FC");
|
spa_log_debug(mix->log, "produce LFE from FC (%f)", llev);
|
||||||
_MATRIX(LFE,FC) += llev;
|
_MATRIX(LFE,FC) += llev;
|
||||||
filter_lfe = true;
|
filter_lfe = true;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -428,16 +440,16 @@ static int make_matrix(struct channelmix *mix)
|
||||||
}
|
}
|
||||||
if (unassigned & SIDE) {
|
if (unassigned & SIDE) {
|
||||||
if ((src_mask & REAR) == REAR) {
|
if ((src_mask & REAR) == REAR) {
|
||||||
spa_log_debug(mix->log, "produce SIDE from REAR");
|
spa_log_debug(mix->log, "produce SIDE from REAR (%f)", 1.0f);
|
||||||
_MATRIX(SL,RL) += 1.0f;
|
_MATRIX(SL,RL) += 1.0f;
|
||||||
_MATRIX(SR,RR) += 1.0f;
|
_MATRIX(SR,RR) += 1.0f;
|
||||||
} else if ((src_mask & STEREO) == STEREO) {
|
} else if ((src_mask & STEREO) == STEREO) {
|
||||||
spa_log_debug(mix->log, "produce SIDE from STEREO");
|
spa_log_debug(mix->log, "produce SIDE from STEREO (%f)", slev);
|
||||||
_MATRIX(SL,FL) += slev;
|
_MATRIX(SL,FL) += slev;
|
||||||
_MATRIX(SR,FR) += slev;
|
_MATRIX(SR,FR) += slev;
|
||||||
} else if ((src_mask & FRONT) == FRONT &&
|
} else if ((src_mask & FRONT) == FRONT &&
|
||||||
mix->upmix == CHANNELMIX_UPMIX_SIMPLE) {
|
mix->upmix == CHANNELMIX_UPMIX_SIMPLE) {
|
||||||
spa_log_debug(mix->log, "produce SIDE from FC");
|
spa_log_debug(mix->log, "produce SIDE from FC (%f)", clev);
|
||||||
_MATRIX(SL,FC) += clev;
|
_MATRIX(SL,FC) += clev;
|
||||||
_MATRIX(SR,FC) += clev;
|
_MATRIX(SR,FC) += clev;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -446,16 +458,16 @@ static int make_matrix(struct channelmix *mix)
|
||||||
}
|
}
|
||||||
if (unassigned & REAR) {
|
if (unassigned & REAR) {
|
||||||
if ((src_mask & SIDE) == SIDE) {
|
if ((src_mask & SIDE) == SIDE) {
|
||||||
spa_log_debug(mix->log, "produce REAR from SIDE");
|
spa_log_debug(mix->log, "produce REAR from SIDE (%f)", 1.0f);
|
||||||
_MATRIX(RL,SL) += 1.0f;
|
_MATRIX(RL,SL) += 1.0f;
|
||||||
_MATRIX(RR,SR) += 1.0f;
|
_MATRIX(RR,SR) += 1.0f;
|
||||||
} else if ((src_mask & STEREO) == STEREO) {
|
} else if ((src_mask & STEREO) == STEREO) {
|
||||||
spa_log_debug(mix->log, "produce REAR from STEREO");
|
spa_log_debug(mix->log, "produce REAR from STEREO (%f)", slev);
|
||||||
_MATRIX(RL,FL) += slev;
|
_MATRIX(RL,FL) += slev;
|
||||||
_MATRIX(RR,FR) += slev;
|
_MATRIX(RR,FR) += slev;
|
||||||
} else if ((src_mask & FRONT) == FRONT &&
|
} else if ((src_mask & FRONT) == FRONT &&
|
||||||
mix->upmix == CHANNELMIX_UPMIX_SIMPLE) {
|
mix->upmix == CHANNELMIX_UPMIX_SIMPLE) {
|
||||||
spa_log_debug(mix->log, "produce REAR from FC");
|
spa_log_debug(mix->log, "produce REAR from FC (%f)", clev);
|
||||||
_MATRIX(RL,FC) += clev;
|
_MATRIX(RL,FC) += clev;
|
||||||
_MATRIX(RR,FC) += clev;
|
_MATRIX(RR,FC) += clev;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue