ossaudio: add endianness support for VoiceIn
Signed-off-by: Michael Walle <michael@walle.cc> Signed-off-by: malc <av1474@comtv.ru>
This commit is contained in:
parent
d43ffce140
commit
b6c9c9401c
|
@ -161,7 +161,7 @@ static int oss_write (SWVoiceOut *sw, void *buf, int len)
|
||||||
return audio_pcm_sw_write (sw, buf, len);
|
return audio_pcm_sw_write (sw, buf, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int aud_to_ossfmt (audfmt_e fmt)
|
static int aud_to_ossfmt (audfmt_e fmt, int endianness)
|
||||||
{
|
{
|
||||||
switch (fmt) {
|
switch (fmt) {
|
||||||
case AUD_FMT_S8:
|
case AUD_FMT_S8:
|
||||||
|
@ -171,10 +171,20 @@ static int aud_to_ossfmt (audfmt_e fmt)
|
||||||
return AFMT_U8;
|
return AFMT_U8;
|
||||||
|
|
||||||
case AUD_FMT_S16:
|
case AUD_FMT_S16:
|
||||||
return AFMT_S16_LE;
|
if (endianness) {
|
||||||
|
return AFMT_S16_BE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return AFMT_S16_LE;
|
||||||
|
}
|
||||||
|
|
||||||
case AUD_FMT_U16:
|
case AUD_FMT_U16:
|
||||||
return AFMT_U16_LE;
|
if (endianness) {
|
||||||
|
return AFMT_U16_BE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return AFMT_U16_LE;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
dolog ("Internal logic error: Bad audio format %d\n", fmt);
|
dolog ("Internal logic error: Bad audio format %d\n", fmt);
|
||||||
|
@ -516,7 +526,7 @@ static int oss_init_out (HWVoiceOut *hw, struct audsettings *as)
|
||||||
|
|
||||||
oss->fd = -1;
|
oss->fd = -1;
|
||||||
|
|
||||||
req.fmt = aud_to_ossfmt (as->fmt);
|
req.fmt = aud_to_ossfmt (as->fmt, as->endianness);
|
||||||
req.freq = as->freq;
|
req.freq = as->freq;
|
||||||
req.nchannels = as->nchannels;
|
req.nchannels = as->nchannels;
|
||||||
req.fragsize = conf.fragsize;
|
req.fragsize = conf.fragsize;
|
||||||
|
@ -682,7 +692,7 @@ static int oss_init_in (HWVoiceIn *hw, struct audsettings *as)
|
||||||
|
|
||||||
oss->fd = -1;
|
oss->fd = -1;
|
||||||
|
|
||||||
req.fmt = aud_to_ossfmt (as->fmt);
|
req.fmt = aud_to_ossfmt (as->fmt, as->endianness);
|
||||||
req.freq = as->freq;
|
req.freq = as->freq;
|
||||||
req.nchannels = as->nchannels;
|
req.nchannels = as->nchannels;
|
||||||
req.fragsize = conf.fragsize;
|
req.fragsize = conf.fragsize;
|
||||||
|
|
Loading…
Reference in a new issue