diff options
Diffstat (limited to 'src/pulsecore/sndfile-util.c')
-rw-r--r-- | src/pulsecore/sndfile-util.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/pulsecore/sndfile-util.c b/src/pulsecore/sndfile-util.c index 9d15a868..292eb6e8 100644 --- a/src/pulsecore/sndfile-util.c +++ b/src/pulsecore/sndfile-util.c @@ -51,6 +51,9 @@ int pa_sndfile_read_sample_spec(SNDFILE *sf, pa_sample_spec *ss) { break; case SF_FORMAT_PCM_24: + ss->format = PA_SAMPLE_S24NE; + break; + case SF_FORMAT_PCM_32: ss->format = PA_SAMPLE_S32NE; break; @@ -106,10 +109,14 @@ int pa_sndfile_write_sample_spec(SF_INFO *sfi, pa_sample_spec *ss) { case PA_SAMPLE_S24LE: case PA_SAMPLE_S24BE: + ss->format = PA_SAMPLE_S24NE; + sfi->format |= SF_FORMAT_PCM_24; + break; + case PA_SAMPLE_S24_32LE: case PA_SAMPLE_S24_32BE: - ss->format = PA_SAMPLE_S32NE; - sfi->format |= SF_FORMAT_PCM_24; + ss->format = PA_SAMPLE_S24_32NE; + sfi->format |= SF_FORMAT_PCM_32; break; case PA_SAMPLE_S32LE: @@ -297,8 +304,7 @@ int pa_sndfile_write_channel_map(SNDFILE *sf, pa_channel_map *cm) { channels[c] = table[cm->map[c]]; } - if (!sf_command(sf, SFC_SET_CHANNEL_MAP_INFO, - channels, sizeof(channels[0]) * cm->channels)) { + if (!sf_command(sf, SFC_SET_CHANNEL_MAP_INFO, channels, sizeof(channels[0]) * cm->channels)) { pa_xfree(channels); return -1; } @@ -362,6 +368,7 @@ pa_sndfile_readf_t pa_sndfile_readf_function(const pa_sample_spec *ss) { return (pa_sndfile_readf_t) sf_readf_short; case PA_SAMPLE_S32NE: + case PA_SAMPLE_S24_32NE: return (pa_sndfile_readf_t) sf_readf_int; case PA_SAMPLE_FLOAT32NE: @@ -384,6 +391,7 @@ pa_sndfile_writef_t pa_sndfile_writef_function(const pa_sample_spec *ss) { return (pa_sndfile_writef_t) sf_writef_short; case PA_SAMPLE_S32NE: + case PA_SAMPLE_S24_32NE: return (pa_sndfile_writef_t) sf_writef_int; case PA_SAMPLE_FLOAT32NE: |