Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No 32-bit playback with OSS on intel soundcard + forced resampling #257

Closed
dubbadubbadubbacha opened this issue Mar 23, 2018 · 5 comments
Closed
Assignees
Labels
waiting Waiting for more information from reporter

Comments

@dubbadubbadubbacha
Copy link

I can't get mpd to output at 32bit with OSS although my soundcard supports it. It also resamples music even though I don't compile it with resamplers. Is there a way to disable the internal resampling once and for all?

@MaxKellermann
Copy link
Member

But does your driver and the userspace API support it?
Don't write two distinct issues in one "issue". This is confusing.
What do you want MPD to do instead of resampling?
https://www.musicpd.org/help/

@MaxKellermann MaxKellermann added the waiting Waiting for more information from reporter label Mar 23, 2018
@dubbadubbadubbacha
Copy link
Author

HI. Yes my driver supports 32bit playback (16bit and 32bit) under OSS. I find no matter what I set the format to it always downsamples to 16bit 44,100 even though I set it explicitly to 96000:32:2. I would like to disable any and all resampling done in mpd if possible. I tried compiling without lsr and soxr but it still performs its own resampling.

@MaxKellermann
Copy link
Member

You didn't really answer my question, because you misunderstood how MPD works and what your problem is. MPD already behaves like you want it to behave: MPD will never resample unless necessary or explicitly configured. If MPD always switches back to 44.1/16, it means that your OSS driver refuses to play the given original format.
I'll reopen this issue as soon as you have delivered the missing data. That is, the data described in the "help" link and a proof that your OSS driver and its userspace API allows 96/32.

@dubbadubbadubbacha
Copy link
Author

mpd --version

`Music Player Daemon 0.20.18

Copyright (C) 2003-2007 Warren Dukes warren.dukes@gmail.com
Copyright 2008-2017 Max Kellermann max.kellermann@gmail.com
This is free software; see the source for copying conditions. There is NO
warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Database plugins:
simple proxy upnp

Storage plugins:
local smbclient nfs curl

Neighbor plugins:
smbclient upnp

Decoders plugins:
[mad] mp3 mp2
[vorbis] ogg oga
[oggflac] ogg oga
[flac] flac
[opus] opus ogg oga
[sndfile] wav aiff aif au snd paf iff svx sf voc w64 pvf xi htk caf sd2
[audiofile] wav au aiff aif
[dsdiff] dff
[dsf] dsf
[faad] aac
[wavpack] wv
[modplug] 669 amf ams dbm dfm dsm far it med mdl mod mtm mt2 okt s3m stm ult umx xm
[ffmpeg] 16sv 3g2 3gp 4xm 8svx aa3 aac ac3 adx afc aif aifc aiff al alaw amr anim apc ape asf atrac au aud avi avm2 avs bap bfi c93 cak cin cmv cpk daud dct divx dts dv dvd dxa eac3 film flac flc fli fll flx flv g726 gsm gxf iss m1v m2v m2t m2ts m4a m4b m4v mad mj2 mjpeg mjpg mka mkv mlp mm mmf mov mp+ mp1 mp2 mp3 mp4 mpc mpeg mpg mpga mpp mpu mve mvi mxf nc nsv nut nuv oga ogm ogv ogx oma ogg omg opus psp pva qcp qt r3d ra ram rl2 rm rmvb roq rpl rvc shn smk snd sol son spx str swf tak tgi tgq tgv thp ts tsp tta xa xvid uv uv2 vb vid vob voc vp6 vmd wav webm wma wmv wsaud wsvga wv wve
[gme] ay gbs gym hes kss nsf nsfe sap spc vgm vgz
[pcm]

Filters:
libsamplerate soxr

Tag plugins:
id3tag

Output plugins:
shout null fifo pipe alsa ao oss pulse jack httpd recorder

Encoder plugins:
null vorbis opus lame wave flac

Archive plugins:
[bz2] bz2
[zzip] zip

Input plugins:
file alsa archive curl ffmpeg smbclient nfs mms

Playlist plugins:
extm3u m3u pls xspf asx rss soundcloud flac cue embcue

Protocols:
file:// http:// https:// mms:// mmsh:// mmst:// mmsu:// gopher:// rtp:// rtsp:// rtmp:// rtmpt:// rtmps:// smb:// nfs:// alsa://

Other features:
avahi epoll icu inotify ipv6 systemd tcp un`

mpd.conf

`# An example configuration file for MPD.

Read the user manual for documentation: http://www.musicpd.org/doc/user/

Files and directories

This setting controls the top directory which MPD will search to discover the

available audio files and add them to the daemon's online database. This

setting defaults to the XDG directory, otherwise the music directory will be

be disabled and audio files will only be accepted over ipc socket (using

file:// protocol) or streaming files over an accepted protocol.

music_directory "/mnt/D/Music"

This setting sets the MPD internal playlist directory. The purpose of this

directory is storage for playlists created by MPD. The server will use

playlist files not created by the server but only if they are in the MPD

format. This setting defaults to playlist saving being disabled.

playlist_directory "~/.config/mpd/playlists"

This setting sets the location of the MPD database. This file is used to

load the database at server start up and store the database while the

server is not up. This setting defaults to disabled which will allow

MPD to accept files over ipc socket (using file:// protocol) or streaming

files over an accepted protocol.

db_file "~/.config/mpd/database"

These settings are the locations for the daemon log files for the daemon.

These logs are great for troubleshooting, depending on your log_level

settings.

The special value "syslog" makes MPD use the local syslog daemon. This

setting defaults to logging to syslog, otherwise logging is disabled.

log_file "~/.config/mpd/log"

This setting sets the location of the file which stores the process ID

for use of mpd --kill and some init scripts. This setting is disabled by

default and the pid file will not be stored.

pid_file "~/.config/mpd/pid"

This setting sets the location of the file which contains information about

most variables to get MPD back into the same general shape it was in before

it was brought down. This setting is disabled by default and the server

state will be reset on server start up.

state_file "~/.config/mpd/state"

The location of the sticker database. This is a database which

manages dynamic information attached to songs.

sticker_file "~/.config/mpd/sticker.sql"

###############################################################################

General music daemon options

This setting specifies the user that MPD will run as. MPD should never run as

root and you may use this setting to make MPD change its user ID after

initialization. This setting is disabled by default and MPD is run as the

current user.

#user "nobody"

This setting specifies the group that MPD will run as. If not specified

primary group of user specified with "user" setting will be used (if set).

This is useful if MPD needs to be a member of group such as "audio" to

have permission to use sound card.

#group "nogroup"

This setting sets the address for the daemon to listen on. Careful attention

should be paid if this is assigned to anything other then the default, any.

This setting can deny access to control of the daemon. Not effective if

systemd socket activiation is in use.

For network

#bind_to_address "any"

And for Unix Socket

#bind_to_address "~/.mpd/socket"

This setting is the TCP port that is desired for the daemon to get assigned

to.

#port "6600"

This setting controls the type of information which is logged. Available

setting arguments are "default", "secure" or "verbose". The "verbose" setting

argument is recommended for troubleshooting, though can quickly stretch

available resources on limited hardware storage.

log_level "verbose"

If you have a problem with your MP3s ending abruptly it is recommended that

you set this argument to "no" to attempt to fix the problem. If this solves

the problem, it is highly recommended to fix the MP3 files with vbrfix

(available from http://www.willwap.co.uk/Programs/vbrfix.php), at which

point gapless MP3 playback can be enabled.

#gapless_mp3_playback "yes"

Setting "restore_paused" to "yes" puts MPD into pause mode instead

of starting playback after startup.

#restore_paused "no"

This setting enables MPD to create playlists in a format usable by other

music players.

#save_absolute_paths_in_playlists "no"

This setting defines a list of tag types that will be extracted during the

audio file discovery process. The complete list of possible values can be

found in the user manual.

#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"

This setting enables automatic update of MPD's database when files in

music_directory are changed.

#auto_update "yes"

Limit the depth of the directories being watched, 0 means only watch

the music directory itself. There is no limit by default.

#auto_update_depth "3"

###############################################################################

Symbolic link behavior

If this setting is set to "yes", MPD will discover audio files by following

symbolic links outside of the configured music_directory.

#follow_outside_symlinks "yes"

If this setting is set to "yes", MPD will discover audio files by following

symbolic links inside of the configured music_directory.

#follow_inside_symlinks "yes"

###############################################################################

Zeroconf / Avahi Service Discovery

If this setting is set to "yes", service information will be published with

Zeroconf / Avahi.

#zeroconf_enabled "yes"

The argument to this setting will be the Zeroconf / Avahi unique name for

this MPD server on the network.

#zeroconf_name "Music Player"

###############################################################################

Permissions

If this setting is set, MPD will require password authorization. The password

setting can be specified multiple times for different password profiles.

#password "password@read,add,control,admin"

This setting specifies the permissions a user has who has not yet logged in.

#default_permissions "read,add,control,admin"

###############################################################################

Database

#database {

plugin "proxy"

host "other.mpd.host"

port "6600"

#}

Input

input {
plugin "curl"

proxy "proxy.isp.com:8080"

proxy_user "user"

proxy_password "password"

}

###############################################################################

Audio Output

MPD supports various audio output types, as well as playing through multiple

audio outputs at the same time, through multiple audio_output settings

blocks. Setting this block is optional, though the server will only attempt

autodetection for one sound card.

An example of an ALSA output:

#audio_output {

type "alsa"

name "My ALSA Device"

device "hw:0,0" # optional

mixer_type "hardware" # optional

mixer_device "default" # optional

mixer_control "PCM" # optional

mixer_index "0" # optional

#}

An example of an OSS output:

audio_output {
type "oss"
name "My OSS Device"
device "/dev/oss/oss_hdaudio0/pcm0" # optional
format "96000:32:2"

mixer_type "disabled" # optional

mixer_device "/dev/oss/oss_hdaudio0/pcm0" # optional

mixer_control "/dev/oss/oss_hdaudio0/pcm0" # optional

}

#audio_output_format "96000:32:2"
samplerate_converter "soxr very high"

An example of a shout output (for streaming to Icecast):

#audio_output {

type "shout"

encoder "vorbis" # optional

name "My Shout Stream"

host "localhost"

port "8000"

mount "/mpd.ogg"

password "hackme"

quality "5.0"

bitrate "128"

format "44100:16:1"

protocol "icecast2" # optional

user "source" # optional

description "My Stream Description" # optional

url "http://example.com" # optional

genre "jazz" # optional

public "no" # optional

timeout "2" # optional

mixer_type "software" # optional

#}

An example of a recorder output:

#audio_output {

type "recorder"

name "My recorder"

encoder "vorbis" # optional, vorbis or lame

path "/var/lib/mpd/recorder/mpd.ogg"

quality "5.0" # do not define if bitrate is defined

bitrate "128" # do not define if quality is defined

format "44100:16:1"

#}

An example of a httpd output (built-in HTTP streaming server):

#audio_output {

type "httpd"

name "My HTTP Stream"

encoder "vorbis" # optional, vorbis or lame

port "8000"

bind_to_address "0.0.0.0" # optional, IPv4 or IPv6

quality "5.0" # do not define if bitrate is defined

bitrate "128" # do not define if quality is defined

format "44100:16:1"

max_clients "0" # optional 0=no limit

#}

An example of a pulseaudio output (streaming to a remote pulseaudio server)

#audio_output {

type "pulse"

name "My Pulse Output"

server "remote_server" # optional

sink "remote_server_sink" # optional

#}

An example of a winmm output (Windows multimedia API).

#audio_output {

type "winmm"

name "My WinMM output"

device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional

or

device "0" # optional

mixer_type "hardware" # optional

#}

An example of an openal output.

#audio_output {

type "openal"

name "My OpenAL output"

device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional

#}

An example of an sndio output.

#audio_output {

type "sndio"

name "sndio output"

mixer_type "software"

#}

An example of an OS X output:

#audio_output {

type "osx"

name "My OS X Device"

device "Built-in Output" # optional

channel_map "-1,-1,0,1" # optional

#}

Example "pipe" output:

#audio_output {

type "pipe"

name "my pipe"

command "aplay -f cd 2>/dev/null"

Or if you're want to use AudioCompress

command "AudioCompress -m | aplay -f cd 2>/dev/null"

Or to send raw PCM stream through PCM:

command "nc example.org 8765"

format "44100:16:2"

#}

An example of a null output (for no audio output):

#audio_output {

type "null"

name "My Null Output"

mixer_type "none" # optional

#}

###############################################################################

Normalization automatic volume adjustments

This setting specifies the type of ReplayGain to use. This setting can have

the argument "off", "album", "track" or "auto". "auto" is a special mode that

chooses between "track" and "album" depending on the current state of

random playback. If random playback is enabled then "track" mode is used.

See http://www.replaygain.org for more details about ReplayGain.

This setting is off by default.

#replaygain "album"

This setting sets the pre-amp used for files that have ReplayGain tags. By

default this setting is disabled.

#replaygain_preamp "0"

This setting sets the pre-amp used for files that do NOT have ReplayGain tags.

By default this setting is disabled.

#replaygain_missing_preamp "0"

This setting enables or disables ReplayGain limiting.

MPD calculates actual amplification based on the ReplayGain tags

and replaygain_preamp / replaygain_missing_preamp setting.

If replaygain_limit is enabled MPD will never amplify audio signal

above its original level. If replaygain_limit is disabled such amplification

might occur. By default this setting is enabled.

#replaygain_limit "yes"

This setting enables on-the-fly normalization volume adjustment. This will

result in the volume of all playing audio to be adjusted so the output has

equal "loudness". This setting is disabled by default.

#volume_normalization "no"

###############################################################################

Character Encoding

If file or directory names do not display correctly for your locale then you

may need to modify this setting.

#filesystem_charset "UTF-8"

###############################################################################

audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
`

mpd log showing conversion from 96000:32:2 to 44100:16:2
Mar 23 04:49 : avahi: Initializing interface Mar 23 04:49 : avahi: Client changed to state 101 Mar 23 04:49 : avahi: Client is CONNECTING Mar 23 04:49 : state_file: Loading state file /home/jamie/.config/mpd/state Mar 23 04:49 : client: [0] opened from [::1]:57818 Mar 23 04:49 : client: [0] process command "status" Mar 23 04:49 : exception: Failed to read mixer for 'My OSS Device': failed to read OSS volume: Invalid argument Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "plchanges "0"" Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "outputs" Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "decoders" Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "outputs" Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "outputs" Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "idle" Mar 23 04:49 : client: [0] command returned 1 Mar 23 04:49 : client: [0] process command "playid "7"" Mar 23 04:49 : playlist: play 6:"Incoming/Curtis Mayfield - Super Fly (Soundtrack, Vinyl) [1972, FLAC]/07 - No Thing On Me.flac" Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : playlist: queue song 7:"Incoming/Curtis Mayfield - Super Fly (Soundtrack, Vinyl) [1972, FLAC]/08 - Think.flac" Mar 23 04:49 : client: [0] process command "idle" Mar 23 04:49 : client: [0] command returned 1 Mar 23 04:49 : decoder_thread: probing plugin flac Mar 23 04:49 : decoder: audio_format=96000:24:2, seekable=true Mar 23 04:49 : output: opened plugin=oss name="My OSS Device" audio_format=96000:16:2 Mar 23 04:49 : output: converting in=96000:24:2 -> f=96000:24:2 -> out=96000:16:2 Mar 23 04:49 : output: opened plugin=fifo name="my_fifo" audio_format=44100:16:2 Mar 23 04:49 : soxr: soxr engine 'cr64s' Mar 23 04:49 : soxr: samplerate conversion ratio to 0.46 Mar 23 04:49 : output: converting in=96000:24:2 -> f=96000:24:2 -> out=44100:16:2 Mar 23 04:49 : client: [0] process command "status" Mar 23 04:49 : exception: Failed to read mixer for 'My OSS Device': failed to read OSS volume: Invalid argument Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "status" Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "idle" Mar 23 04:49 : client: [0] command returned 1 Mar 23 04:49 : client: [0] process command "status" Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "idle" Mar 23 04:49 : client: [0] command returned 1 Mar 23 04:49 : client: [0] process command "status" Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "idle" Mar 23 04:49 : client: [0] command returned 1 Mar 23 04:49 : client: [0] process command "status" Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "idle" Mar 23 04:49 : client: [0] command returned 1 Mar 23 04:49 : client: [0] process command "status" Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "idle" Mar 23 04:49 : client: [0] command returned 1 Mar 23 04:49 : state_file: Saving state file /home/jamie/.config/mpd/state Mar 23 04:49 : client: [0] process command "status" Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "idle" Mar 23 04:49 : client: [0] command returned 1 Mar 23 04:49 : client: [0] process command "status" Mar 23 04:49 : client: [0] command returned 0 Mar 23 04:49 : client: [0] process command "idle" Mar 23 04:49 : client: [0] command returned 1 Mar 23 04:50 : client: [0] process command "status" Mar 23 04:50 : client: [0] command returned 0 Mar 23 04:50 : client: [0] process command "idle" Mar 23 04:50 : client: [0] command returned 1 Mar 23 04:50 : client: [0] process command "status" Mar 23 04:50 : client: [0] command returned 0 Mar 23 04:50 : client: [0] process command "idle" Mar 23 04:50 : client: [0] command returned 1 Mar 23 04:50 : client: [0] process command "status" Mar 23 04:50 : client: [0] command returned 0 Mar 23 04:50 : client: [0] process command "idle" Mar 23 04:50 : client: [0] command returned 1 Mar 23 04:50 : client: [0] process command "stop" Mar 23 04:50 : playlist: stop Mar 23 04:50 : player: played "Incoming/Curtis Mayfield - Super Fly (Soundtrack, Vinyl) [1972, FLAC]/07 - No Thing On Me.flac" Mar 23 04:50 : output: closed plugin=oss name="My OSS Device" Mar 23 04:50 : output: closed plugin=fifo name="my_fifo" Mar 23 04:50 : client: [0] command returned 0 Mar 23 04:50 : client: [0] process command "idle" Mar 23 04:50 : client: [0] command returned 1 Mar 23 04:50 : client: [0] process command "status" Mar 23 04:50 : client: [0] command returned 0 Mar 23 04:50 : client: [0] process command "idle" Mar 23 04:50 : client: [0] command returned 1 Mar 23 04:50 : state_file: Saving state file /home/jamie/.config/mpd/state Mar 23 04:54 : client: [0] closed

ossinfo -v9 showing 16bit and 32bit capability for my intel HDA driver

`Version info: OSS 4.2 (b 2017/201702031111) (0x00040100)
Platform: Linux/x86_64 4.15.10-1-ck-haswell #1 SMP PREEMPT Thu Mar 15 20:55:22 EDT 2018 (JAMIE-LINUX)

Number of audio devices: 6
Number of audio engines: 6
Number of MIDI devices: 0
Number of mixer devices: 1

Device objects
0: osscore0 OSS core services
1: oss_hdaudio0 Intel HD Audio interrupts=272734 (272734)
HD Audio controller Intel HD Audio
Vendor ID 0x80868c20
Subvendor ID 0x1043119d
Codec 0: Unknown (0x10ec0282/0x1043119d)
2: oss_usb0 USB audio core services

MIDI devices (/dev/midi*)

Mixer devices
0: High Definition Audio 0x10ec028 (Mixer 0 of device object 1)
Device file /dev/oss/oss_hdaudio0/mix0, Legacy device /dev/mixer0
Priority: 10
Caps:
Device handle: PCI119d1043-0000:00:1b.0-mx01
Device priority: 10

Audio devices
HD Audio play pcm1 /dev/oss/oss_hdaudio0/pcm0 (device index 0)
Legacy device /dev/dsp0
Caps: TRIGGER MMAP
Modes: OUTPUT
Out engine 1: 0/HD Audio play pcm1
Available for use
Input formats (0x00001010):
AFMT_S16_LE - 16 bit signed little endian
AFMT_S32_LE - 32 bit signed little endian
Output formats (0x00001010):
AFMT_S16_LE - 16 bit signed little endian
AFMT_S32_LE - 32 bit signed little endian
Device handle: PCI119d1043-0000:00:1b.0-au01
Related mixer dev: 0
Sample rate source: 0
Preferred channel configuration: Not indicated
Supported number of channels (min - max): 2 - 8
Native sample rates (min - max): 44100 - 192000 (44100,48000,96000,192000)
HW Type: Not indicated.
Minimum latency: Not indicated

HD Audio play pcm2 /dev/oss/oss_hdaudio0/pcm1 (device index 1)
Legacy device /dev/dsp1
Caps: TRIGGER MMAP
Modes: OUTPUT
Out engine 1: 1/HD Audio play pcm2
Available for use
Input formats (0x00001010):
AFMT_S16_LE - 16 bit signed little endian
AFMT_S32_LE - 32 bit signed little endian
Output formats (0x00001010):
AFMT_S16_LE - 16 bit signed little endian
AFMT_S32_LE - 32 bit signed little endian
Device handle: PCI119d1043-0000:00:1b.0-au02
Related mixer dev: 0
Sample rate source: 0
Preferred channel configuration: Not indicated
Supported number of channels (min - max): 2 - 2
Native sample rates (min - max): 44100 - 192000 (44100,48000,96000,192000)
HW Type: Not indicated.
Minimum latency: Not indicated

HD Audio play spdifout1 /dev/oss/oss_hdaudio0/spdout0 (device index 2)
Legacy device /dev/dsp2
Caps: TRIGGER MMAP
Modes: OUTPUT
Out engine 1: 2/HD Audio play spdifout1
Available for use
Input formats (0x00001410):
AFMT_S16_LE - 16 bit signed little endian
AFMT_AC3 - AC3 (Dolby Digital) encoded audio
AFMT_S32_LE - 32 bit signed little endian
Output formats (0x00001410):
AFMT_S16_LE - 16 bit signed little endian
AFMT_AC3 - AC3 (Dolby Digital) encoded audio
AFMT_S32_LE - 32 bit signed little endian
Device handle: PCI119d1043-0000:00:1b.0-au03
Related mixer dev: 0
Sample rate source: 0
Preferred channel configuration: Not indicated
Supported number of channels (min - max): 2 - 2
Native sample rates (min - max): 44100 - 192000 (44100,48000,88200,96000,192000)
HW Type: Not indicated.
Minimum latency: Not indicated

HD Audio rec mix6 /dev/oss/oss_hdaudio0/pcmin0 (device index 3)
Legacy device /dev/dsp3
Caps: TRIGGER MMAP
Modes: INPUT
In engine 1: 3/HD Audio rec mix6
Available for use
Input formats (0x00001010):
AFMT_S16_LE - 16 bit signed little endian
AFMT_S32_LE - 32 bit signed little endian
Output formats (0x00001010):
AFMT_S16_LE - 16 bit signed little endian
AFMT_S32_LE - 32 bit signed little endian
Device handle: PCI119d1043-0000:00:1b.0-au04
Related mixer dev: 0
Sample rate source: 0
Preferred channel configuration: Not indicated
Supported number of channels (min - max): 2 - 2
Native sample rates (min - max): 44100 - 192000 (44100,48000,96000,192000)
HW Type: Not indicated.
Minimum latency: Not indicated

HD Audio rec mix5 /dev/oss/oss_hdaudio0/pcmin1 (device index 4)
Legacy device /dev/dsp4
Caps: TRIGGER MMAP
Modes: INPUT
In engine 1: 4/HD Audio rec mix5
Available for use
Input formats (0x00001010):
AFMT_S16_LE - 16 bit signed little endian
AFMT_S32_LE - 32 bit signed little endian
Output formats (0x00001010):
AFMT_S16_LE - 16 bit signed little endian
AFMT_S32_LE - 32 bit signed little endian
Device handle: PCI119d1043-0000:00:1b.0-au05
Related mixer dev: 0
Sample rate source: 0
Preferred channel configuration: Not indicated
Supported number of channels (min - max): 2 - 2
Native sample rates (min - max): 44100 - 192000 (44100,48000,96000,192000)
HW Type: Not indicated.
Minimum latency: Not indicated

HD Audio rec int-mic /dev/oss/oss_hdaudio0/pcmin2 (device index 5)
Legacy device /dev/dsp5
Caps: TRIGGER MMAP
Modes: INPUT
In engine 1: 5/HD Audio rec int-mic
Available for use
Input formats (0x00001010):
AFMT_S16_LE - 16 bit signed little endian
AFMT_S32_LE - 32 bit signed little endian
Output formats (0x00001010):
AFMT_S16_LE - 16 bit signed little endian
AFMT_S32_LE - 32 bit signed little endian
Device handle: PCI119d1043-0000:00:1b.0-au06
Related mixer dev: 0
Sample rate source: 0
Preferred channel configuration: Not indicated
Supported number of channels (min - max): 2 - 2
Native sample rates (min - max): 44100 - 192000 (44100,48000,96000,192000)
HW Type: Not indicated.
Minimum latency: Not indicated

Nodes
/dev/dsp -> /dev/oss/oss_hdaudio0/pcm0
/dev/dsp_in -> /dev/oss/oss_hdaudio0/pcm0
/dev/dsp_out -> /dev/oss/oss_hdaudio0/pcm0
/dev/dsp_ac3 -> /dev/oss/oss_hdaudio0/spdout0
/dev/dsp_mmap -> /dev/oss/oss_hdaudio0/pcm0
/dev/dsp_multich -> /dev/oss/oss_hdaudio0/pcm0
`

terminal output of deadbeef player showing 32bit conversion using a custom oss resampler (petrovs resampler) just to show it is possible.

`selected output plugin: OSS output plugin with fftrate
oss: exclusive mode is activated!
oss: device doesn't support 0 ch output
connecting button tray signals
oss: exclusive mode is activated!
Converter: fftrate (ver. 0.9)
Input : 96000 Hz, 2 ch (0003), 24i bits
Output : 96000 Hz, 2 ch (0003), 32i bits
Params.: delay = 43 ms, sync: ON, transform: 'None' - 'Planar'
Matrix :
FL FR
FL 1.000 -----
FR ----- 1.000

oss: exclusive mode is activated!
`

@MaxKellermann
Copy link
Member

MPD does not resample. This is the part where you're wrong.
Your paste shows that your driver does support S32, but it does not in any way indicate whether MPD was compiled with S32 supported by the API headers. (If you compiled MPD with standard Linux kernel headers, it will lack S32 support, because the vanilla OSS doesn't support that.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
waiting Waiting for more information from reporter
Projects
None yet
Development

No branches or pull requests

2 participants