Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: DSDIFF Decoder (Read 142960 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

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.

DSDIFF Decoder

Reply #26
Thanks .  i add foo_dsp_resampler.dll ,now **.dll can play now. thanks again.

DSDIFF Decoder

Reply #27
.

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


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.

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...

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.

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.

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)?

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.

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).

DSDIFF Decoder

Reply #36
Quote
let the flac encoder dither down to 16 bit


Not possible: flac doesn't alter its input.

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.

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?

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.



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.

DSDIFF Decoder

Reply #42
it appears this plugin applies 6db gain or this assumption is incorrect? respecfully requesting to make that optional if possible?

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.

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.

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, ...

DSDIFF Decoder

Reply #46
Excellent, thanks.

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

DSDIFF Decoder

Reply #48
Quote
it shows up "1"


This means that you use foo_input_sacd, not foo_input_dsdiff.

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