Skip to main content

Topic: DSDIFF Decoder (Read 105203 times) previous topic - next topic

0 Members and 2 Guests are viewing this topic.
  • kode54
  • [*][*][*][*][*]
  • Administrator
DSDIFF Decoder
Reply #25
You must install either the standard DSP array component, or the SoX resampler component. That, or put up with 352800Hz output somehow.

  • 000811zhf
  • [*]
DSDIFF Decoder
Reply #26
Thanks .  i add foo_dsp_resampler.dll ,now **.dll can play now. thanks again.

  • oynu
  • [*]
DSDIFF Decoder
Reply #27
.
  • Last Edit: 06 May, 2011, 09:50:25 PM by oynu

  • oynu
  • [*]
DSDIFF Decoder
Reply #28
Thanks for great plugin! Any chance fixing these bugs?

Files here

1) In attached files channel order should be FL-FR-FC-LFE-RL-RR instead of FC-LFE-RL-RR-SL-SR

2) sample dsd.dff encoded to sample dst.dff using reference encoder
then both files converted to wav using this plugin
resulting wavs match when converted at 44 kHz and differ by 1 when at 96 kHz
Quote
23234:   4F   4E
  23300:   F5   F4
  23378:   DF   DE
  24011:   0A   0B
  24224:   EC   ED
  24623:   2A   29
  24629:   4A   49
  24896:   EF   F0


  • kode54
  • [*][*][*][*][*]
  • Administrator
DSDIFF Decoder
Reply #29
1) Upon inspection of a proper DSDIFF specification, I see that MLFT and MRGT are "multi-channel" left and right. So, identical to the SLFT and SRGT in behavior, except that they just had to make separate channel flag names for surround files. Fixed, thank you.

2) I set the maximum output sample rate to 96000Hz, then ran a bit compare. The only difference found between the two files is that the DSD is .004 longer than the DST. Also, I only implemented DST support based on a crappy reference decoder that will probably never achieve real time until 10GHz machines come along, so it's probably not too useful for every day use. Maybe the problem is your resampler component? I only have the standard DSP component installed, so just the polyphase resampler.

  • vincefalks
  • [*]
DSDIFF Decoder
Reply #30
1) Upon inspection of a proper DSDIFF specification, I see that MLFT and MRGT are "multi-channel" left and right. So, identical to the SLFT and SRGT in behavior, except that they just had to make separate channel flag names for surround files. Fixed, thank you.

2) I set the maximum output sample rate to 96000Hz, then ran a bit compare. The only difference found between the two files is that the DSD is .004 longer than the DST. Also, I only implemented DST support based on a *****y reference decoder that will probably never achieve real time until 10GHz machines come along, so it's probably not too useful for every day use. Maybe the problem is your resampler component? I only have the standard DSP component installed, so just the polyphase resampler.

hey kode54, appreciate you updating this.

Maybe a better open-source/GNU-licence DST decoder is coming (or is already here). check if it's already there, or will be: http://code.google.com/p/sacd-ripper/updates/list. it's at least in the to-do list. the guy is active and will make it happen.

hrm, actually, maybe since this is only file conversion that he's dealing with, this guy will just use the reference decoder. still worth checking the updates to see what he ends up using, or even writing himself.

maybe just email him to see what his plans are...he will likely answer...
  • Last Edit: 19 May, 2011, 03:04:16 PM by vincefalks

  • vincefalks
  • [*]
DSDIFF Decoder
Reply #31
hey kode54, appreciate you updating this.

Maybe a better open-source/GNU-licence DST decoder is coming (or is already here). check if it's already there, or will be: http://code.google.com/p/sacd-ripper/updates/list. it's at least in the to-do list. the guy is active and will make it happen.

hrm, actually, maybe since this is only file conversion that he's dealing with, this guy will just use the reference decoder. still worth checking the updates to see what he ends up using, or even writing himself.

maybe just email him to see what his plans are...he will likely answer...
update: he's writing his own DST decoder, and since it's under GNU and he's a nice guy, I'm sure he's fine for it to be put into the foobar player.

I don't have time to ask (and report back), but I expect it would be much higher performance than the reference MPEG4 one (otherwise why would he write his own one). he wants good ripping speed.

so kode, just look out for it.

  • vincefalks
  • [*]
DSDIFF Decoder
Reply #32
update: he's writing his own DST decoder, and since it's under GNU and he's a nice guy, I'm sure he's fine for it to be put into the foobar player.

I don't have time to ask (and report back), but I expect it would be much higher performance than the reference MPEG4 one (otherwise why would he write his own one). he wants good ripping speed.

so kode, just look out for it.

since i can't edit my last post, posting a correction to this last report.

he's not writing his own decoder from scratch. he's harnessing the ps3's own decoding software. however. another one (for windows use) is being written up by the 'team' right now. based on other code from existing decoders, but changed significantly to improve it muchly. so it'll be its own decoder in its own right. all is rosey.

  • deathlord
  • [*]
DSDIFF Decoder
Reply #33
Hi kode54

Thanks a lot for this great plugin!

Quote
The configuration page supports any rate between 6KHz and 192KHz. And it output 32-bit floating point.


When I convert to flac, I get 16 bit files. Does this mean foo_dsp_resampler.dll outputs 16 bit in this case? Or is the conversion from 32 float to 16bit done in the flac encoder?

And what dithering mechanism is applied (if any)?

  • kode54
  • [*][*][*][*][*]
  • Administrator
DSDIFF Decoder
Reply #34
The converter is using the preset for lossy files, since conversion from DSD is a computationally lossy process. You'll need to specify 24 bits for lossy files in the converter setup dialog.
  • Last Edit: 13 June, 2011, 06:10:45 PM by kode54

  • deathlord
  • [*]
DSDIFF Decoder
Reply #35
The converter is using the preset for lossy files, since conversion from DSD is a computationally lossy process. You'll need to specify 24 bits for lossy files in the converter setup dialog.

Hm, I can specify the output  bitdeph in the converter setup explicitly. When I use a custom preset, I can also specify the encoders maximum input bitdepth.
What I do not quite understand is the following:
According to the documentation, the flac command line encoder does not support floating point (only integer up to 24 bit).
So I assume foobar will convert the input to a format the encoder understands based on the settings in the converter setup. Or does it just tell the component in the chain before the converstion (in this case foo_dsp_resampler) to produce a suitable output?
Interestingly, it also works if I set the maximum input bitdepth to 32 bit (in which case I expect the 32 bit float from foo_input_dsdiff to be converted to 32 bit int, which flax.exe should not support). Maybe the input is then just truncated.

In any event, I think it is probably best to limit input to 24 bit and then let the flac encoder dither down to 16 bit (I want 16 bit, not 24).

  • lvqcl
  • [*][*][*][*][*]
  • Developer
DSDIFF Decoder
Reply #36
Quote
let the flac encoder dither down to 16 bit


Not possible: flac doesn't alter its input.

  • kode54
  • [*][*][*][*][*]
  • Administrator
DSDIFF Decoder
Reply #37
When selecting a bit depth for the output format, I think the "auto" selection always assumes 16 bits for lossy files. I could be wrong, though.

  • deathlord
  • [*]
DSDIFF Decoder
Reply #38
When selecting a bit depth for the output format, I think the "auto" selection always assumes 16 bits for lossy files. I could be wrong, though.


Yes, I think you are right.

Quote
let the flac encoder dither down to 16 bit


Not possible: flac doesn't alter its input.


Well, it does accept up to 24 bit input and it does output what I tell it to, i.e. 16 or 24 bit.
So if flac.exe does not do anything, the conversion has to happen somwhere else.
Maybe foobar loads instances of some filter as needed?

Example:
I want to convert DSDIFF to 16 bit flac.
I set the input for flac conversion to 24 bit and the output bitdepth to 16 bit, dither to "always".
Then foobar would convert the 32 bit floating point output from DSDIFF decoder to 24 bit int, pass that on to flac.exe which converts it to 24 bit flac, which foobar would then dither down to 16 bit.
Does this sound likely?

  • lvqcl
  • [*][*][*][*][*]
  • Developer
DSDIFF Decoder
Reply #39
Quote
Does this sound likely?


Definitely not. If max. output bitdepth for flac is 24 and output bitdepth is 16 bit, foobar2000 chooses the lower bit depth: 16 bit.

So foobar2000 converts 32-bit floating point to 16-bit integer (using dither) and sends output to flac.exe.


  • exa065
  • [*]
DSDIFF Decoder
Reply #40
kode54,
Would you be interested to explore the possibility to alter your plug-in for producing native DSD output for use with ASIO devices? See experiments for native DSD playback here: http://www.diyaudio.com/forums/digital-lin...tml#post2608599




  • Sandrine
  • [*][*][*][*]
DSDIFF Decoder
Reply #41
hey kode54, appreciate you updating this.

Maybe a better open-source/GNU-licence DST decoder is coming (or is already here). check if it's already there, or will be: http://code.google.com/p/sacd-ripper/updates/list. I don't have time to ask (and report back), but I expect it would be much higher performance than the reference MPEG4 one.

The performance for decoding DST encoded files is about the same: You'll need a Dual Core CPU for stereo playback, and a Quad Core CPU for multichannel playback.

The new foo_input_sacd uses this code. Since that component can now also decode DSDIFF, it would be interesting to know which plug-in produces a higher quality conversion. kode54's with foobar resampler and free choice of sample rate or max's component which is based on the Philips decoder and has the sample rate fixed at 88.1khz.

  • oynu
  • [*]
DSDIFF Decoder
Reply #42
it appears this plugin applies 6db gain or this assumption is incorrect? respecfully requesting to make that optional if possible?

  • kode54
  • [*][*][*][*][*]
  • Administrator
DSDIFF Decoder
Reply #43
This component does not apply any gain. It merely downsamples the stream as-is. The resulting sample data will be guaranteed to be at no higher than the configured sample rate, which defaults to 88200Hz. It will also be floating point, although there may be imperceptible noise in the resulting signal.

  • mudlord
  • [*][*][*][*][*]
  • Developer (Donating)
DSDIFF Decoder
Reply #44
Would it be possible to have a advanced setting to pick which resampler service to use?
I wouldn't mind using this for testing of the resampler in my DSP.

  • lvqcl
  • [*][*][*][*][*]
  • Developer
DSDIFF Decoder
Reply #45
Code: [Select]
class mudlord_resampler : public resampler_entry
{
public:
//...
    virtual float get_priority() { return 1; } // or something  > 0 and <= 1
};

should do what you want.

Added: so this resampler will have priority over built-in PPHS. Yet it is necessary to remove other resampler components such as SSRC, SoX, ...
  • Last Edit: 13 August, 2011, 07:32:00 AM by lvqcl

  • mudlord
  • [*][*][*][*][*]
  • Developer (Donating)
DSDIFF Decoder
Reply #46
Excellent, thanks.

  • ingosl
  • [*]
DSDIFF Decoder
Reply #47
Hi,

I just played a DSD (DSDIFF) file and tried to change the Tag information by opening the tag window.

But changes are not accepted - when I click on "Apply" and/or "OK" it shows up "1" even if I typed in something else.

All the best

ingosl
  • Last Edit: 17 August, 2011, 11:20:08 AM by db1989

  • lvqcl
  • [*][*][*][*][*]
  • Developer
DSDIFF Decoder
Reply #48
Quote
it shows up "1"


This means that you use foo_input_sacd, not foo_input_dsdiff.

  • ingosl
  • [*]
DSDIFF Decoder
Reply #49
Quote
it shows up "1"


This means that you use foo_input_sacd, not foo_input_dsdiff.



OK, and what do I have to do to change DSDIFF ID3 Tags correctly?

Best,

ingosl