mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	implement pa_channel_map_can_fade
This commit is contained in:
		
							parent
							
								
									f725b06f6f
								
							
						
					
					
						commit
						b979ab3948
					
				
					 3 changed files with 60 additions and 7 deletions
				
			
		| 
						 | 
					@ -10,6 +10,7 @@ pa_bytes_per_second;
 | 
				
			||||||
pa_bytes_snprint;
 | 
					pa_bytes_snprint;
 | 
				
			||||||
pa_bytes_to_usec;
 | 
					pa_bytes_to_usec;
 | 
				
			||||||
pa_channel_map_can_balance;
 | 
					pa_channel_map_can_balance;
 | 
				
			||||||
 | 
					pa_channel_map_can_fade;
 | 
				
			||||||
pa_channel_map_compatible;
 | 
					pa_channel_map_compatible;
 | 
				
			||||||
pa_channel_map_equal;
 | 
					pa_channel_map_equal;
 | 
				
			||||||
pa_channel_map_init;
 | 
					pa_channel_map_init;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -647,30 +647,77 @@ int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int pa_channel_map_can_balance(const pa_channel_map *map) {
 | 
					int pa_channel_map_can_balance(const pa_channel_map *map) {
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
 | 
					    pa_bool_t left = FALSE, right = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_assert(map);
 | 
					    pa_assert(map);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (c = 0; c < map->channels; c++)
 | 
					    for (c = 0; c < map->channels; c++) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        switch (map->map[c]) {
 | 
					        switch (map->map[c]) {
 | 
				
			||||||
            case PA_CHANNEL_POSITION_LEFT:
 | 
					            case PA_CHANNEL_POSITION_LEFT:
 | 
				
			||||||
            case PA_CHANNEL_POSITION_RIGHT:
 | 
					 | 
				
			||||||
            case PA_CHANNEL_POSITION_REAR_LEFT:
 | 
					            case PA_CHANNEL_POSITION_REAR_LEFT:
 | 
				
			||||||
            case PA_CHANNEL_POSITION_REAR_RIGHT:
 | 
					 | 
				
			||||||
            case PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER:
 | 
					            case PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER:
 | 
				
			||||||
            case PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER:
 | 
					 | 
				
			||||||
            case PA_CHANNEL_POSITION_SIDE_LEFT:
 | 
					            case PA_CHANNEL_POSITION_SIDE_LEFT:
 | 
				
			||||||
            case PA_CHANNEL_POSITION_SIDE_RIGHT:
 | 
					 | 
				
			||||||
            case PA_CHANNEL_POSITION_TOP_FRONT_LEFT:
 | 
					            case PA_CHANNEL_POSITION_TOP_FRONT_LEFT:
 | 
				
			||||||
            case PA_CHANNEL_POSITION_TOP_FRONT_RIGHT:
 | 
					 | 
				
			||||||
            case PA_CHANNEL_POSITION_TOP_REAR_LEFT:
 | 
					            case PA_CHANNEL_POSITION_TOP_REAR_LEFT:
 | 
				
			||||||
 | 
					                left = TRUE;
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_RIGHT:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_REAR_RIGHT:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_SIDE_RIGHT:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_TOP_FRONT_RIGHT:
 | 
				
			||||||
            case PA_CHANNEL_POSITION_TOP_REAR_RIGHT:
 | 
					            case PA_CHANNEL_POSITION_TOP_REAR_RIGHT:
 | 
				
			||||||
                return 1;
 | 
					                right = TRUE;
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            default:
 | 
					            default:
 | 
				
			||||||
                ;
 | 
					                ;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (left && right)
 | 
				
			||||||
 | 
					            return 1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int pa_channel_map_can_fade(const pa_channel_map *map) {
 | 
				
			||||||
 | 
					    unsigned c;
 | 
				
			||||||
 | 
					    pa_bool_t front = FALSE, rear = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (c = 0; c < map->channels; c++) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        switch (map->map[c]) {
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_FRONT_LEFT:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_FRONT_RIGHT:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_FRONT_CENTER:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_TOP_FRONT_LEFT:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_TOP_FRONT_RIGHT:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_TOP_FRONT_CENTER:
 | 
				
			||||||
 | 
					                front = TRUE;
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_REAR_LEFT:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_REAR_RIGHT:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_REAR_CENTER:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_TOP_REAR_LEFT:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_TOP_REAR_RIGHT:
 | 
				
			||||||
 | 
					            case PA_CHANNEL_POSITION_TOP_REAR_CENTER:
 | 
				
			||||||
 | 
					                rear = TRUE;
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            default:
 | 
				
			||||||
 | 
					                ;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (front && rear)
 | 
				
			||||||
 | 
					            return 1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -239,6 +239,11 @@ int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) PA
 | 
				
			||||||
 * available. \since 0.9.15 */
 | 
					 * available. \since 0.9.15 */
 | 
				
			||||||
int pa_channel_map_can_balance(const pa_channel_map *map) PA_GCC_PURE;
 | 
					int pa_channel_map_can_balance(const pa_channel_map *map) PA_GCC_PURE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Returns non-zero if it makes sense to apply a volume 'fade'
 | 
				
			||||||
 | 
					 * (i.e. 'balance' between front and rear) with this mapping, i.e. if
 | 
				
			||||||
 | 
					 * there are front/rear channels available. \since 0.9.15 */
 | 
				
			||||||
 | 
					int pa_channel_map_can_fade(const pa_channel_map *map) PA_GCC_PURE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Tries to find a well-known channel mapping name for this channel
 | 
					/** Tries to find a well-known channel mapping name for this channel
 | 
				
			||||||
 * mapping. I.e. "stereo", "surround-71" and so on. If the channel
 | 
					 * mapping. I.e. "stereo", "surround-71" and so on. If the channel
 | 
				
			||||||
 * mapping is unknown NULL will be returned. This name can be parsed
 | 
					 * mapping is unknown NULL will be returned. This name can be parsed
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue