lintweaker / mpd-dsd-019

DSD specific patches for MPD 0.19
GNU General Public License v2.0
10 stars 4 forks source link

Job does not stop the player, with forward and pause! (Some solve DSD Click`s) #25

Closed norrest closed 7 years ago

norrest commented 8 years ago

In just a few months, I have never found a solution to this problem! Only by the example of squeeze-player! Forward and pause! It does not affect the DAC, and do not change its mode of operation! This means that in times of stop, pause and rewind - all that I had DAC, there were no problems at all! u can try download and try himself! https://www.daphile.com/#download

norrest commented 8 years ago

While not giving up! Think about "silence buffer" -// fill silence buffer with 10101100 which represents dop silence -// leave marker zero it will be updated at output, leave lsb zero -void dop_silence_frames(u32_t *ptr, frames_t frames) {

norrest commented 8 years ago

ask Daphile developer! How he create DoP/DSD support without clics/pops! And he tell:

You have to study DoP format specification. You also have to understand that you may not use zero bits for padding in the last frame of the stream (between tracks). If you handle DoP encoding track by track, then you must use such a padding that don't cause audible clicks. Search Internet for DSD silence patterns (eg. 0x69).

ALSO fow question how to do this, he says

Any competent developer should be able implement it as long as she/he understands to use "DSD silence pattern" (e.g. 0x69) instead of "zeros" for padding the incomplete DoP frames.

Additional Information I found some info in his patches

        if (d->sample_bytes && bytes >= (2 * d->sample_bytes)) {
            // byte(s) left fill frame with silence byte(s) and play
            int i;
            for (i = d->sample_bytes; i < bytes_per_frame; i++)
                *(iptrl + i) = *(iptrr + i) = 0x69;
             frames = 1;
         } else {
            // should not get here due to wrapping m/2 for dsd should never result in 0 as header len is always even
             LOG_INFO("frames got to zero");
             return DECODE_COMPLETE;
         }

// fill silence buffer with 10101100 which represents dsd silence void dsd_silence_frames(u32_t ptr, frames_t frames) { while (frames--) { ptr++ = 0x69696969; *ptr++ = 0x69696969; } }

https://bugs.musicpd.org/view.php?id=4550

NEVER GIVE UP!

norrest commented 8 years ago

Status resolved I install and patch Does not help - i so click`s (((