mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	channelmix: small cleanups
Fix indent Rename DUAL/QUAD to REAR and SIDE and use it for checking availability of stereo pairs.
This commit is contained in:
		
							parent
							
								
									4d21b5f8bd
								
							
						
					
					
						commit
						c7309f0248
					
				
					 1 changed files with 29 additions and 25 deletions
				
			
		| 
						 | 
					@ -155,8 +155,8 @@ static const struct channelmix_info *find_channelmix_info(uint32_t src_chan, uin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define _MASK(ch)	(1ULL << SPA_AUDIO_CHANNEL_ ## ch)
 | 
					#define _MASK(ch)	(1ULL << SPA_AUDIO_CHANNEL_ ## ch)
 | 
				
			||||||
#define STEREO	(_MASK(FL)|_MASK(FR))
 | 
					#define STEREO	(_MASK(FL)|_MASK(FR))
 | 
				
			||||||
#define DUAL_STEREO (_MASK(RL)|_MASK(RR))
 | 
					#define REAR	(_MASK(RL)|_MASK(RR))
 | 
				
			||||||
#define QUAD_STEREO (_MASK(SL)|_MASK(SR))
 | 
					#define SIDE	(_MASK(SL)|_MASK(SR))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int make_matrix(struct channelmix *mix)
 | 
					static int make_matrix(struct channelmix *mix)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -203,7 +203,7 @@ static int make_matrix(struct channelmix *mix)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	unassigned = src_mask & ~dst_mask;
 | 
						unassigned = src_mask & ~dst_mask;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	spa_log_debug(mix->log, "unassigned %08" PRIx64, unassigned);
 | 
						spa_log_debug(mix->log, "unassigned downmix %08" PRIx64, unassigned);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (unassigned & _MASK(FC)){
 | 
						if (unassigned & _MASK(FC)){
 | 
				
			||||||
		if ((dst_mask & STEREO) == STEREO){
 | 
							if ((dst_mask & STEREO) == STEREO){
 | 
				
			||||||
| 
						 | 
					@ -220,15 +220,19 @@ static int make_matrix(struct channelmix *mix)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (mix->src_chan <= 3 && (src_mask & STEREO) == STEREO && (dst_mask & DUAL_STEREO) == DUAL_STEREO) {
 | 
						if (mix->src_chan <= 3 && (src_mask & STEREO) == STEREO && (dst_mask & REAR) == REAR) {
 | 
				
			||||||
		spa_log_debug(mix->log, "copy STEREO to REAR");
 | 
							spa_log_debug(mix->log, "copy STEREO to REAR");
 | 
				
			||||||
        if ((src_mask & _MASK(RL)) == 0) matrix[RL][FL] = 1.0f;
 | 
							if ((src_mask & _MASK(RL)) == 0)
 | 
				
			||||||
        if ((src_mask & _MASK(RR)) == 0) matrix[RR][FR] = 1.0f;
 | 
								matrix[RL][FL] = 1.0f;
 | 
				
			||||||
 | 
							if ((src_mask & _MASK(RR)) == 0)
 | 
				
			||||||
 | 
								matrix[RR][FR] = 1.0f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ((dst_mask & QUAD_STEREO) == QUAD_STEREO)  {
 | 
						        if ((dst_mask & SIDE) == SIDE)  {
 | 
				
			||||||
			spa_log_debug(mix->log, "copy STEREO to SIDES");
 | 
								spa_log_debug(mix->log, "copy STEREO to SIDES");
 | 
				
			||||||
            if ((src_mask & _MASK(SL)) == 0) matrix[SL][FL] = 1.0f;
 | 
								if ((src_mask & _MASK(SL)) == 0)
 | 
				
			||||||
            if ((src_mask & _MASK(SR)) == 0) matrix[SR][FR] = 1.0f;
 | 
									matrix[SL][FL] = 1.0f;
 | 
				
			||||||
 | 
								if ((src_mask & _MASK(SR)) == 0)
 | 
				
			||||||
 | 
									matrix[SR][FR] = 1.0f;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -245,15 +249,15 @@ static int make_matrix(struct channelmix *mix)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (unassigned & _MASK(RC)) {
 | 
						if (unassigned & _MASK(RC)) {
 | 
				
			||||||
		if (dst_mask & _MASK(RL)){
 | 
							if (dst_mask & REAR){
 | 
				
			||||||
			spa_log_debug(mix->log, "assign RC to RL+RR");
 | 
								spa_log_debug(mix->log, "assign RC to RL+RR");
 | 
				
			||||||
			matrix[RL][RC] += SQRT1_2;
 | 
								matrix[RL][RC] += SQRT1_2;
 | 
				
			||||||
			matrix[RR][RC] += SQRT1_2;
 | 
								matrix[RR][RC] += SQRT1_2;
 | 
				
			||||||
		} else if (dst_mask & _MASK(SL)) {
 | 
							} 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");
 | 
				
			||||||
			matrix[SL][RC] += SQRT1_2;
 | 
								matrix[SL][RC] += SQRT1_2;
 | 
				
			||||||
			matrix[SR][RC] += SQRT1_2;
 | 
								matrix[SR][RC] += SQRT1_2;
 | 
				
			||||||
		} else if(dst_mask & _MASK(FL)) {
 | 
							} else if(dst_mask & STEREO) {
 | 
				
			||||||
			spa_log_debug(mix->log, "assign RC to FL+FR");
 | 
								spa_log_debug(mix->log, "assign RC to FL+FR");
 | 
				
			||||||
			if (matrix_encoding == MATRIX_DOLBY ||
 | 
								if (matrix_encoding == MATRIX_DOLBY ||
 | 
				
			||||||
			    matrix_encoding == MATRIX_DPLII) {
 | 
								    matrix_encoding == MATRIX_DPLII) {
 | 
				
			||||||
| 
						 | 
					@ -276,21 +280,21 @@ static int make_matrix(struct channelmix *mix)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (unassigned & _MASK(RL)) {
 | 
						if (unassigned & REAR) {
 | 
				
			||||||
		if (dst_mask & _MASK(RC)) {
 | 
							if (dst_mask & _MASK(RC)) {
 | 
				
			||||||
			spa_log_debug(mix->log, "assign RL+RR to RC");
 | 
								spa_log_debug(mix->log, "assign RL+RR to RC");
 | 
				
			||||||
			matrix[RC][RL] += SQRT1_2;
 | 
								matrix[RC][RL] += SQRT1_2;
 | 
				
			||||||
			matrix[RC][RR] += SQRT1_2;
 | 
								matrix[RC][RR] += SQRT1_2;
 | 
				
			||||||
		} else if (dst_mask & _MASK(SL)) {
 | 
							} else if (dst_mask & SIDE) {
 | 
				
			||||||
			spa_log_debug(mix->log, "assign RL+RR to SL+SR");
 | 
								spa_log_debug(mix->log, "assign RL+RR to SL+SR");
 | 
				
			||||||
			if (src_mask & _MASK(SL)) {
 | 
								if (src_mask & SIDE) {
 | 
				
			||||||
				matrix[SL][RL] += SQRT1_2;
 | 
									matrix[SL][RL] += SQRT1_2;
 | 
				
			||||||
				matrix[SR][RR] += SQRT1_2;
 | 
									matrix[SR][RR] += SQRT1_2;
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				matrix[SL][RL] += 1.0f;
 | 
									matrix[SL][RL] += 1.0f;
 | 
				
			||||||
				matrix[SR][RR] += 1.0f;
 | 
									matrix[SR][RR] += 1.0f;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		} else if (dst_mask & _MASK(FL)) {
 | 
							} 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;
 | 
				
			||||||
| 
						 | 
					@ -315,8 +319,8 @@ static int make_matrix(struct channelmix *mix)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (unassigned & _MASK(SL)) {
 | 
						if (unassigned & SIDE) {
 | 
				
			||||||
		if (dst_mask & _MASK(RL)) {
 | 
							if (dst_mask & REAR) {
 | 
				
			||||||
			spa_log_debug(mix->log, "assign SL+SR to RL+RR");
 | 
								spa_log_debug(mix->log, "assign SL+SR to RL+RR");
 | 
				
			||||||
			if (src_mask & _MASK(RL)) {
 | 
								if (src_mask & _MASK(RL)) {
 | 
				
			||||||
				matrix[RL][SL] += SQRT1_2;
 | 
									matrix[RL][SL] += SQRT1_2;
 | 
				
			||||||
| 
						 | 
					@ -329,7 +333,7 @@ static int make_matrix(struct channelmix *mix)
 | 
				
			||||||
			spa_log_debug(mix->log, "assign SL+SR to RC");
 | 
								spa_log_debug(mix->log, "assign SL+SR to RC");
 | 
				
			||||||
			matrix[RC][SL]+= SQRT1_2;
 | 
								matrix[RC][SL]+= SQRT1_2;
 | 
				
			||||||
			matrix[RC][SR]+= SQRT1_2;
 | 
								matrix[RC][SR]+= SQRT1_2;
 | 
				
			||||||
		} else if (dst_mask & _MASK(FL)) {
 | 
							} else if (dst_mask & STEREO) {
 | 
				
			||||||
			spa_log_debug(mix->log, "assign SL+SR to FL+FR");
 | 
								spa_log_debug(mix->log, "assign SL+SR to FL+FR");
 | 
				
			||||||
			if (matrix_encoding == MATRIX_DOLBY) {
 | 
								if (matrix_encoding == MATRIX_DOLBY) {
 | 
				
			||||||
				matrix[FL][SL] -= slev * SQRT1_2;
 | 
									matrix[FL][SL] -= slev * SQRT1_2;
 | 
				
			||||||
| 
						 | 
					@ -355,7 +359,7 @@ static int make_matrix(struct channelmix *mix)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (unassigned & _MASK(FLC)) {
 | 
						if (unassigned & _MASK(FLC)) {
 | 
				
			||||||
		if (dst_mask & _MASK(FL)) {
 | 
							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");
 | 
				
			||||||
			matrix[FL][FLC]+= 1.0f;
 | 
								matrix[FL][FLC]+= 1.0f;
 | 
				
			||||||
			matrix[FR][FRC]+= 1.0f;
 | 
								matrix[FR][FRC]+= 1.0f;
 | 
				
			||||||
| 
						 | 
					@ -372,7 +376,7 @@ static int make_matrix(struct channelmix *mix)
 | 
				
			||||||
		if (dst_mask & _MASK(FC)) {
 | 
							if (dst_mask & _MASK(FC)) {
 | 
				
			||||||
			spa_log_debug(mix->log, "assign LFE to FC");
 | 
								spa_log_debug(mix->log, "assign LFE to FC");
 | 
				
			||||||
			matrix[FC][LFE] += llev;
 | 
								matrix[FC][LFE] += llev;
 | 
				
			||||||
		} else if (dst_mask & _MASK(FL)) {
 | 
							} 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");
 | 
				
			||||||
			matrix[FL][LFE] += llev * SQRT1_2;
 | 
								matrix[FL][LFE] += llev * SQRT1_2;
 | 
				
			||||||
			matrix[FR][LFE] += llev * SQRT1_2;
 | 
								matrix[FR][LFE] += llev * SQRT1_2;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue