From 1404db3d47c77ef3a360feed4ae8932cc8e443a0 Mon Sep 17 00:00:00 2001 From: Arun Raghavan Date: Wed, 13 Apr 2011 15:37:25 +0530 Subject: format: Add some convenience API for setting properties Adds functions to set sample format, rate, channels and channel map on a format to make life easier for users of the API. --- src/map-file | 4 ++++ src/pulse/format.c | 26 +++++++++++++++++++++++--- src/pulse/format.h | 11 +++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/map-file b/src/map-file index a12f30d1..026ac10f 100644 --- a/src/map-file +++ b/src/map-file @@ -166,11 +166,15 @@ pa_format_info_free; pa_format_info_is_compatible; pa_format_info_is_pcm; pa_format_info_new; +pa_format_info_set_channel_map; +pa_format_info_set_channels; pa_format_info_set_prop_int; pa_format_info_set_prop_int_array; pa_format_info_set_prop_int_range; pa_format_info_set_prop_string; pa_format_info_set_prop_string_array; +pa_format_info_set_rate; +pa_format_info_set_sample_format; pa_format_info_snprint; pa_format_info_valid; pa_frame_size; diff --git a/src/pulse/format.c b/src/pulse/format.c index 1cb804ef..a1a0981b 100644 --- a/src/pulse/format.c +++ b/src/pulse/format.c @@ -155,9 +155,9 @@ pa_format_info* pa_format_info_from_sample_spec(pa_sample_spec *ss, pa_channel_m f = pa_format_info_new(); f->encoding = PA_ENCODING_PCM; - pa_format_info_set_prop_string(f, PA_PROP_FORMAT_SAMPLE_FORMAT, pa_sample_format_to_string(ss->format)); - pa_format_info_set_prop_int(f, PA_PROP_FORMAT_RATE, ss->rate); - pa_format_info_set_prop_int(f, PA_PROP_FORMAT_CHANNELS, ss->channels); + pa_format_info_set_sample_format(f, ss->format); + pa_format_info_set_rate(f, ss->rate); + pa_format_info_set_channels(f, ss->channels); if (map) { pa_channel_map_snprint(cm, sizeof(cm), map); @@ -231,6 +231,26 @@ pa_bool_t pa_format_info_to_sample_spec_fake(pa_format_info *f, pa_sample_spec * return TRUE; } +void pa_format_info_set_sample_format(pa_format_info *f, pa_sample_format_t sf) { + pa_format_info_set_prop_string(f, PA_PROP_FORMAT_SAMPLE_FORMAT, pa_sample_format_to_string(sf)); +} + +void pa_format_info_set_rate(pa_format_info *f, int rate) { + pa_format_info_set_prop_int(f, PA_PROP_FORMAT_RATE, rate); +} + +void pa_format_info_set_channels(pa_format_info *f, int channels) { + pa_format_info_set_prop_int(f, PA_PROP_FORMAT_CHANNELS, channels); +} + +void pa_format_info_set_channel_map(pa_format_info *f, const pa_channel_map *map) { + char map_str[PA_CHANNEL_MAP_SNPRINT_MAX]; + + pa_channel_map_snprint(map_str, sizeof(map_str), map); + + pa_format_info_set_prop_string(f, PA_PROP_FORMAT_CHANNEL_MAP, map_str); +} + pa_bool_t pa_format_info_get_prop_int(pa_format_info *f, const char *key, int *v) { const char *str; json_object *o; diff --git a/src/pulse/format.h b/src/pulse/format.h index 0498e68a..06e1fe62 100644 --- a/src/pulse/format.h +++ b/src/pulse/format.h @@ -26,6 +26,8 @@ #include #include +#include +#include PA_C_DECL_BEGIN @@ -113,6 +115,15 @@ void pa_format_info_set_prop_string(pa_format_info *f, const char *key, const ch /** Sets a property with a list of string values on the given format info */ void pa_format_info_set_prop_string_array(pa_format_info *f, const char *key, const char **values, int n_values); +/** Convenience method to set the sample format as a property on the given format */ +void pa_format_info_set_sample_format(pa_format_info *f, pa_sample_format_t sf); +/** Convenience method to set the sampling rate as a property on the given format */ +void pa_format_info_set_rate(pa_format_info *f, int rate); +/** Convenience method to set the number of channels as a property on the given format */ +void pa_format_info_set_channels(pa_format_info *f, int channels); +/** Convenience method to set the channel map as a property on the given format */ +void pa_format_info_set_channel_map(pa_format_info *f, const pa_channel_map *map); + PA_C_DECL_END #endif -- cgit