diff options
| author | Lennart Poettering <lennart@poettering.net> | 2009-05-25 23:49:47 +0200 | 
|---|---|---|
| committer | Lennart Poettering <lennart@poettering.net> | 2009-05-25 23:49:47 +0200 | 
| commit | 346a708c2c079e646ced407ea15b1475ae9129ad (patch) | |
| tree | 59165ee8221f69c8d873291ffcf3e889843dfaf8 /src | |
| parent | 3533599579b64d7124451bd60ea57c6f70dd9f35 (diff) | |
sample: introduce pa_sample_format_is_{le,be,ne,re}()
Diffstat (limited to 'src')
| -rw-r--r-- | src/map-file | 2 | ||||
| -rw-r--r-- | src/pulse/sample.c | 33 | ||||
| -rw-r--r-- | src/pulse/sample.h | 20 | 
3 files changed, 55 insertions, 0 deletions
diff --git a/src/map-file b/src/map-file index d0102ae0..c6a576ed 100644 --- a/src/map-file +++ b/src/map-file @@ -182,6 +182,8 @@ pa_proplist_to_string_sep;  pa_proplist_unset;  pa_proplist_unset_many;  pa_proplist_update; +pa_sample_format_is_be; +pa_sample_format_is_le;  pa_sample_format_to_string;  pa_sample_size;  pa_sample_size_of_format; diff --git a/src/pulse/sample.c b/src/pulse/sample.c index ed7b1b08..0f19f8eb 100644 --- a/src/pulse/sample.c +++ b/src/pulse/sample.c @@ -241,3 +241,36 @@ pa_sample_format_t pa_parse_sample_format(const char *format) {      return -1;  } + +int pa_sample_format_is_le(pa_sample_format_t f) { +    pa_assert(f >= PA_SAMPLE_U8); +    pa_assert(f < PA_SAMPLE_MAX); + +    switch (f) { +        case PA_SAMPLE_S16LE: +        case PA_SAMPLE_S24LE: +        case PA_SAMPLE_S32LE: +        case PA_SAMPLE_S24_32LE: +        case PA_SAMPLE_FLOAT32LE: +            return 1; + +        case PA_SAMPLE_S16BE: +        case PA_SAMPLE_S24BE: +        case PA_SAMPLE_S32BE: +        case PA_SAMPLE_S24_32BE: +        case PA_SAMPLE_FLOAT32BE: +            return 0; + +        default: +            return -1; +    } +} + +int pa_sample_format_is_be(pa_sample_format_t f) { +    int r; + +    if ((r = pa_sample_format_is_le(f)) < 0) +        return r; + +    return !r; +} diff --git a/src/pulse/sample.h b/src/pulse/sample.h index 138f13cf..53d7dea3 100644 --- a/src/pulse/sample.h +++ b/src/pulse/sample.h @@ -305,6 +305,26 @@ char* pa_sample_spec_snprint(char *s, size_t l, const pa_sample_spec *spec);  /** Pretty print a byte size value. (i.e. "2.5 MiB") */  char* pa_bytes_snprint(char *s, size_t l, unsigned v); +/** Return 1 when the specified format is little endian, return -1 + * when endianess does not apply to this format. \since 0.9.16 */ +int pa_sample_format_is_le(pa_sample_format_t f) PA_GCC_PURE; + +/** Return 1 when the specified format is big endian, return -1 when + * endianess does not apply to this format. \since 0.9.16 */ +int pa_sample_format_is_be(pa_sample_format_t f) PA_GCC_PURE; + +#ifdef WORDS_BIGENDIAN +#define pa_sample_format_is_ne(f) pa_sample_format_is_be(f) +#define pa_sample_format_is_re(f) pa_sample_format_is_le(f) +#else +/** Return 1 when the specified format is native endian, return -1 + * when endianess does not apply to this format. \since 0.9.16 */ +#define pa_sample_format_is_ne(f) pa_sample_format_is_le(f) +/** Return 1 when the specified format is reverse endian, return -1 + * when endianess does not apply to this format. \since 0.9.16 */ +#define pa_sample_format_is_re(f) pa_sample_format_is_be(f) +#endif +  PA_C_DECL_END  #endif  | 
