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

support for DSD files #9

Closed
Zanfib opened this issue Aug 13, 2018 · 4 comments
Closed

support for DSD files #9

Zanfib opened this issue Aug 13, 2018 · 4 comments

Comments

@Zanfib
Copy link

Zanfib commented Aug 13, 2018

Hi,
Strawberry is a great idea to have a good HQ music player but I can't find a way to play DSD files, it's a miss in gstreamer/vlc backends or a missing filter in the app ?
Thanks !

@jonaski
Copy link
Member

jonaski commented Aug 13, 2018

Actually the limitation is both in taglib and the engines. Strawberry only recognize files that taglib can read as audio, and taglib does not support DSD yet. There is a PR for it here: taglib/taglib#740
As for the engine, neither gstreamer or vlc support it, but I'm unsure about xine.
In the long run I plan to have ALSA directly as an option for engine, and support open lossless formats like FLAC/WavPack, then it might also be possible to also add support for DSD. I think deadbeef is doing it.

This is how far I got when trying to play DSD with xine, I modified the code to bypass taglib.

Invalid return value 0 for stream protocol
Invalid return value 0 for stream protocol
[dsf @ 0x3085240] Estimating duration from bitrate, this may be inaccurate
Input #0, dsf, from 'file:///home/jonas/Downloads/2L-139_stereo_DSF_2822k_1b_01.dsf':
  Metadata:
    encoded_by      : Merging Technologies Album Publishing
    comment         : Generated by Merging Technologies Album Publishing
                    : Label Code: 2L
    title           : Chromatic Fantasia and Fugue in D minor, BWV 903: Fantasia
    artist          : Christian Grøvlen
    album_artist    : Christian Grøvlen
    composer        : Johann Sebastian Bach
    album           : BACH - Inside Polyphony
    track           : 1/30
    disc            : 1
    TSRC            : NOMPP1707010
                    : 7041888523024
    publisher       : 2L
    date            : 2017
    genre           : Classical
  Duration: 00:06:55.09, bitrate: 5644 kb/s
    Stream #0:0: Audio: dsd_lsbf_planar, 352800 Hz, stereo, fltp, 5644 kb/s
    Stream #0:1: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 1200x1200, 90k tbr, 90k tbn, 90k tbc
    Metadata:
      comment         : Cover (front)
__logging_message__17:29:08.833 WARN  unknown                          "There is no audio channel!"

@jonaski
Copy link
Member

jonaski commented Aug 13, 2018

Looks like DSF is already coming to gstreamer in version 1.15.1
https://bugzilla.gnome.org/show_bug.cgi?id=721186
So this might not be so far off, gstreamer is released pretty frequently.

I already have taglib builtin so I can possible just add the PR to it.

As for xine, I think it might just read the metadata, and not actually have codec to play it, but there is so little info on xine.

@Zanfib
Copy link
Author

Zanfib commented Aug 16, 2018

Thanks for the comments, I've see the support is coming soon in gstreamer, a good news !
Soon in Strawberry ! ;)

@jonaski
Copy link
Member

jonaski commented Sep 2, 2018

I've added support for DSF and DSDIFF now, updated the builtin taglib to support it and added them as accepted filetypes and made the tagreader read them.
I installed gstreamer from git, you need gstreamer, gstreamer-plugins-base and gst-libav, I also installed gst-plugins-good.
I have tested playing some of the files from: https://www.oppodigital.com/hra/dsd-by-davidelias.aspx
It works great, except gstreamer makes the artwork embedded in the file appear in a large outside window (actually maybe it is kinda cool). There is probably a way to disable it.
Reading embedded artwork needs to be implemented too, it does not work
But atleast it works for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants