channelmix: add more MONO mappings

Also just warn when we can't assign a channel
This commit is contained in:
Wim Taymans 2018-12-11 16:53:53 +01:00
parent 97f7ad31a4
commit 4606d46621

View file

@ -203,7 +203,7 @@ static int make_matrix(struct impl *this,
if (unassigned & _MASK(FC)){ if (unassigned & _MASK(FC)){
if (dst_mask & _MASK(MONO)) { if (dst_mask & _MASK(MONO)) {
matrix[M][FC] += 1.0f; matrix[M][FC] += clev;
} }
else if ((dst_mask & STEREO) == STEREO){ else if ((dst_mask & STEREO) == STEREO){
if(src_mask & STEREO) { if(src_mask & STEREO) {
@ -214,8 +214,7 @@ static int make_matrix(struct impl *this,
matrix[FR][FC] += SQRT1_2; matrix[FR][FC] += SQRT1_2;
} }
} else { } else {
spa_log_error(this->log, "can't assign FC"); spa_log_warn(this->log, "can't assign FC");
return -ENOTSUP;
} }
} }
@ -230,8 +229,7 @@ static int make_matrix(struct impl *this,
if (src_mask & _MASK(FC)) if (src_mask & _MASK(FC))
matrix[FC][FC] = clev * SQRT2; matrix[FC][FC] = clev * SQRT2;
} else { } else {
spa_log_error(this->log, "can't assign STEREO"); spa_log_warn(this->log, "can't assign STEREO");
return -ENOTSUP;
} }
} }
@ -258,9 +256,10 @@ static int make_matrix(struct impl *this,
} }
} else if (dst_mask & _MASK(FC)) { } else if (dst_mask & _MASK(FC)) {
matrix[FC][RC] += slev * SQRT1_2; matrix[FC][RC] += slev * SQRT1_2;
} else if (dst_mask & _MASK(MONO)) {
matrix[M][RC] += slev * SQRT1_2;
} else { } else {
spa_log_error(this->log, "can't assign RC"); spa_log_warn(this->log, "can't assign RC");
return -ENOTSUP;
} }
} }
@ -294,9 +293,11 @@ static int make_matrix(struct impl *this,
} else if (dst_mask & _MASK(FC)) { } else if (dst_mask & _MASK(FC)) {
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 if (dst_mask & _MASK(MONO)) {
matrix[M][RL]+= slev * SQRT1_2;
matrix[M][RR]+= slev * SQRT1_2;
} else { } else {
spa_log_error(this->log, "can't assign RL"); spa_log_warn(this->log, "can't assign RL");
return -ENOTSUP;
} }
} }
@ -330,9 +331,11 @@ static int make_matrix(struct impl *this,
} else if (dst_mask & _MASK(FC)) { } else if (dst_mask & _MASK(FC)) {
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 if (dst_mask & _MASK(MONO)) {
matrix[M][SL] += slev * SQRT1_2;
matrix[M][SR] += slev * SQRT1_2;
} else { } else {
spa_log_error(this->log, "can't assign SL"); spa_log_warn(this->log, "can't assign SL");
return -ENOTSUP;
} }
} }
@ -344,8 +347,7 @@ static int make_matrix(struct impl *this,
matrix[FC][FLC]+= SQRT1_2; matrix[FC][FLC]+= SQRT1_2;
matrix[FC][FRC]+= SQRT1_2; matrix[FC][FRC]+= SQRT1_2;
} else { } else {
spa_log_error(this->log, "can't assign FLC"); spa_log_warn(this->log, "can't assign FLC");
return -ENOTSUP;
} }
} }
if (unassigned & _MASK(LFE)) { if (unassigned & _MASK(LFE)) {
@ -357,8 +359,7 @@ static int make_matrix(struct impl *this,
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 {
spa_log_error(this->log, "can't assign LFE"); spa_log_warn(this->log, "can't assign LFE");
return -ENOTSUP;
} }
} }