sample: introduce pa_sample_format_is_{le,be,ne,re}()

This commit is contained in:
Lennart Poettering 2009-05-25 23:49:47 +02:00
parent 3533599579
commit 346a708c2c
3 changed files with 55 additions and 0 deletions

View file

@ -182,6 +182,8 @@ pa_proplist_to_string_sep;
pa_proplist_unset; pa_proplist_unset;
pa_proplist_unset_many; pa_proplist_unset_many;
pa_proplist_update; pa_proplist_update;
pa_sample_format_is_be;
pa_sample_format_is_le;
pa_sample_format_to_string; pa_sample_format_to_string;
pa_sample_size; pa_sample_size;
pa_sample_size_of_format; pa_sample_size_of_format;

View file

@ -241,3 +241,36 @@ pa_sample_format_t pa_parse_sample_format(const char *format) {
return -1; 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;
}

View file

@ -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") */ /** Pretty print a byte size value. (i.e. "2.5 MiB") */
char* pa_bytes_snprint(char *s, size_t l, unsigned v); 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 PA_C_DECL_END
#endif #endif