• Constantin Fuerst's avatar
    output/oss: enable DoP · 955502f8
    Constantin Fuerst authored
    Explanation
    
    This adds support for DOP using the PcmExport function if the macro
    ENABLE_DSD is defined. If enabled within the config-file using "dop",
    the boolean dop_setting will be true. If DSD input is encountered and
    the setting is on, it is checked whether the oss-device supports the
    required samplerate. If that is the case, dop_active is set to true
    and conversion of the input is prevented. If the sample rate is not
    supported, conversion to S32 is requested. When playing back, the
    PcmExport is used to pack the incoming stream into PCM.  Reasoning
    
    This is required for OSs without the required driver support for
    native DSD playback that also have no ALSA. Mainly *BSD users are the
    target audience for this functionality, as ALSA here is only a proxy
    without full functionality.  Requirements
    
        DAC that supports the DOP standard
        Building with OSS, DSD and S32-Format
    
    Supported Formats / Required PCM Formats
    
    DSF, DFF and WavPack-DSD will work.
    
    DSD64, 1 Channel -> S24:176.4kHz (untested, lack of time / missing samples)
    DSD64, 2 Channel -> S24:352.8kHz
    DSD64, 4 Channel -> S24:705.6kHz (untested, lmissing equipment)
    DSD128, 1 Channel -> S24:352.8kHz (untested, lack of time / missing samples)
    DSD128, 2 Channel -> S24:705.6kHz
    DSD256, 1 Channel -> S24:705.6kHz (untested, lack of time / missing samples)
    Changes
    
        inclusion of required files
        adding new domain for logging
        adding dop_satisfied private function
        adding required member variables for storing dop state and for dop-packing
        adding dop boolean parameter to many functions that are required to act a little differently when dop is active
    
    Testing
    
    This has been tested to work with a Sabaj Da2 on FreeBSD, where the
    red status indicator LED clearly shows that DSD playback is taking
    place, instead of purple for "hi-res" which is seen when converting.
    Issues
    
    I have not tested this with S24 and right now AFMT_S32_NE is
    required. If not defined, ENABLE_DSD will be undef'ed. This will be
    addressed in a bit, however no DAC which supports DOP but not 32Bit is
    known to me. Also, AFMT_S32_NE is not defined when building on FreeBSD
    which is why this is just blatantly defined in the file at the moment.
    Additionally, the new dop-option is not added into any documentation
    whatsoever.
    955502f8
Name
Last commit
Last update
..
plugins Loading commit data...
Client.hxx Loading commit data...
Control.cxx Loading commit data...
Control.hxx Loading commit data...
Defaults.cxx Loading commit data...
Defaults.hxx Loading commit data...
Domain.cxx Loading commit data...
Domain.hxx Loading commit data...
Error.hxx Loading commit data...
Filtered.cxx Loading commit data...
Filtered.hxx Loading commit data...
Finish.cxx Loading commit data...
Init.cxx Loading commit data...
Interface.cxx Loading commit data...
Interface.hxx Loading commit data...
MultipleOutputs.cxx Loading commit data...
MultipleOutputs.hxx Loading commit data...
OutputAPI.hxx Loading commit data...
OutputCommand.cxx Loading commit data...
OutputCommand.hxx Loading commit data...
OutputPlugin.cxx Loading commit data...
OutputPlugin.hxx Loading commit data...
Print.cxx Loading commit data...
Print.hxx Loading commit data...
Registry.cxx Loading commit data...
Registry.hxx Loading commit data...
SharedPipeConsumer.cxx Loading commit data...
SharedPipeConsumer.hxx Loading commit data...
Source.cxx Loading commit data...
Source.hxx Loading commit data...
State.cxx Loading commit data...
State.hxx Loading commit data...
Thread.cxx Loading commit data...
Timer.cxx Loading commit data...
Timer.hxx Loading commit data...
meson.build Loading commit data...