decoder/pcm: support reverse byte order
This commit is contained in:
parent
26225307d3
commit
4c9782ee28
@ -31,21 +31,35 @@
|
||||
static void
|
||||
pcm_stream_decode(struct decoder *decoder, struct input_stream *is)
|
||||
{
|
||||
static const struct audio_format audio_format = {
|
||||
static const struct audio_format host_audio_format = {
|
||||
.sample_rate = 44100,
|
||||
.format = SAMPLE_FORMAT_S16,
|
||||
.channels = 2,
|
||||
};
|
||||
|
||||
static const struct audio_format reverse_audio_format = {
|
||||
.sample_rate = 44100,
|
||||
.format = SAMPLE_FORMAT_S16,
|
||||
.channels = 2,
|
||||
.reverse_endian = true,
|
||||
};
|
||||
|
||||
const struct audio_format *audio_format =
|
||||
(is->mime == NULL ||
|
||||
strcmp(is->mime, "audio/x-mpd-cdda-pcm-reverse") != 0)
|
||||
? &host_audio_format
|
||||
: &reverse_audio_format;
|
||||
|
||||
GError *error = NULL;
|
||||
enum decoder_command cmd;
|
||||
|
||||
double time_to_size = audio_format_time_to_size(&audio_format);
|
||||
double time_to_size = audio_format_time_to_size(audio_format);
|
||||
|
||||
float total_time = -1;
|
||||
if (is->size >= 0)
|
||||
total_time = is->size / time_to_size;
|
||||
|
||||
decoder_initialized(decoder, &audio_format, is->seekable, total_time);
|
||||
decoder_initialized(decoder, audio_format, is->seekable, total_time);
|
||||
|
||||
do {
|
||||
char buffer[4096];
|
||||
@ -80,6 +94,10 @@ pcm_stream_decode(struct decoder *decoder, struct input_stream *is)
|
||||
static const char *const pcm_mime_types[] = {
|
||||
/* for streams obtained by the cdio_paranoia input plugin */
|
||||
"audio/x-mpd-cdda-pcm",
|
||||
|
||||
/* same as above, but with reverse byte order */
|
||||
"audio/x-mpd-cdda-pcm-reverse",
|
||||
|
||||
NULL
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user