mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	core-format: Add pa_format_info_get_channel_map()
This commit is contained in:
		
							parent
							
								
									066dd942aa
								
							
						
					
					
						commit
						3a5a0f6652
					
				
					 3 changed files with 29 additions and 12 deletions
				
			
		| 
						 | 
					@ -218,7 +218,6 @@ pa_format_info* pa_format_info_from_sample_spec(pa_sample_spec *ss, pa_channel_m
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* For PCM streams */
 | 
					/* For PCM streams */
 | 
				
			||||||
int pa_format_info_to_sample_spec(pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map) {
 | 
					int pa_format_info_to_sample_spec(pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map) {
 | 
				
			||||||
    char *m = NULL;
 | 
					 | 
				
			||||||
    int ret = -PA_ERR_INVALID;
 | 
					    int ret = -PA_ERR_INVALID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_assert(f);
 | 
					    pa_assert(f);
 | 
				
			||||||
| 
						 | 
					@ -233,21 +232,12 @@ int pa_format_info_to_sample_spec(pa_format_info *f, pa_sample_spec *ss, pa_chan
 | 
				
			||||||
        goto out;
 | 
					        goto out;
 | 
				
			||||||
    if (pa_format_info_get_channels(f, &ss->channels) < 0)
 | 
					    if (pa_format_info_get_channels(f, &ss->channels) < 0)
 | 
				
			||||||
        goto out;
 | 
					        goto out;
 | 
				
			||||||
 | 
					    if (map && pa_format_info_get_channel_map(f, map) < 0)
 | 
				
			||||||
    if (map) {
 | 
					 | 
				
			||||||
        pa_channel_map_init(map);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (pa_format_info_get_prop_string(f, PA_PROP_FORMAT_CHANNEL_MAP, &m) == 0)
 | 
					 | 
				
			||||||
            if (pa_channel_map_parse(map, m) == NULL)
 | 
					 | 
				
			||||||
        goto out;
 | 
					        goto out;
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ret = 0;
 | 
					    ret = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
out:
 | 
					out:
 | 
				
			||||||
    if (m)
 | 
					 | 
				
			||||||
        pa_xfree(m);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return ret;
 | 
					    return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -95,6 +95,28 @@ int pa_format_info_get_channels(pa_format_info *f, uint8_t *channels) {
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int pa_format_info_get_channel_map(pa_format_info *f, pa_channel_map *map) {
 | 
				
			||||||
 | 
					    int r;
 | 
				
			||||||
 | 
					    char *map_str;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pa_assert(f);
 | 
				
			||||||
 | 
					    pa_assert(map);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    r = pa_format_info_get_prop_string(f, PA_PROP_FORMAT_CHANNEL_MAP, &map_str);
 | 
				
			||||||
 | 
					    if (r < 0)
 | 
				
			||||||
 | 
					        return r;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    map = pa_channel_map_parse(map, map_str);
 | 
				
			||||||
 | 
					    pa_xfree(map_str);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!map) {
 | 
				
			||||||
 | 
					        pa_log_debug("Failed to parse channel map.");
 | 
				
			||||||
 | 
					        return -PA_ERR_INVALID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int pa_format_info_to_sample_spec_fake(pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map) {
 | 
					int pa_format_info_to_sample_spec_fake(pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map) {
 | 
				
			||||||
    int rate;
 | 
					    int rate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,6 +37,11 @@ int pa_format_info_get_rate(pa_format_info *f, uint32_t *rate);
 | 
				
			||||||
 * -PA_ERR_NOENTITY. */
 | 
					 * -PA_ERR_NOENTITY. */
 | 
				
			||||||
int pa_format_info_get_channels(pa_format_info *f, uint8_t *channels);
 | 
					int pa_format_info_get_channels(pa_format_info *f, uint8_t *channels);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Gets the channel map stored in the format info. Returns a negative error
 | 
				
			||||||
 | 
					 * code on failure. If the channel map property is not set at all, returns
 | 
				
			||||||
 | 
					 * -PA_ERR_NOENTITY. */
 | 
				
			||||||
 | 
					int pa_format_info_get_channel_map(pa_format_info *f, pa_channel_map *map);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* For compressed formats. Converts the format info into a sample spec and a
 | 
					/* For compressed formats. Converts the format info into a sample spec and a
 | 
				
			||||||
 * channel map that an ALSA device can use as its configuration parameters when
 | 
					 * channel map that an ALSA device can use as its configuration parameters when
 | 
				
			||||||
 * playing back the compressed data. That is, the returned sample spec doesn't
 | 
					 * playing back the compressed data. That is, the returned sample spec doesn't
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue