New DVD Player Plugin Fun (Very Alpha)!

Added by Jim Turner 5 months ago

I've hacked up a new Input plugin for Audacious that can play DVDs (including most menus somewhat) using libdvdread, libdvdnav, SDL2, and potentially libdvdcss (under Linux/Unix). I'm not suggesting inclusion in Audacious plugins as it has a lot of rough edges, but submitting my first working version here for anyone else interested in playing around with it as a stand-alone plugin and / or who wants to contribute to improving it / addressing the "rough edges". These are issues that I am having difficulty finding solutions for in libdvdnav/read documentation and code examples. This is nowhere near production-quality code, but more of a fun "lessee if i can do this" sortta project! Overall I'm somewhat happy with the results so far, despite the remaining issues. :D

1) Some menus display with artifacts despite my best efforts to flush buffers and force all frames to display.

2) The audio stream on rare situations does not always play in the desired language.

3) Seeking via the timing slider seems to work well, but the displayed time is not meaningful due to the way DVD chapters continue playing after the selected chapter completes. This needs a lot more thought on how to best handle.

4) When "playing" a "menu" that has no audio stream, the Audacious [Stop play] button will not stop play of the menu, requiring the user to click the [x] button in the upper right corner of the video window to stop play. This is a limitation of Audacious (because Audacious is an AUDIO player)! Fixing will require either adding a silent "dummy" audio stream to such menus or rewriting the underlying Audacious code (which I don't plan to do).

By default, Audacious will add all tracks to the playlist (including menus), even though via the menus, most DVDs can be controlled by playing only the first track (track 0). Having the others displayed in the playlist enables playing of the individual VOBs found on the DVD, useful for playing DVDs that require you to view a bunch of previews before taking you to the main menu or movie feature! To eliminate this "clutter" from the playlist, the new config option [dvd].title_track_only to TRUE.

Other new config-file options:

[dvd].nomenus (boolean, default FALSE) If TRUE, menus will not play, but will still be processed - the first or default button will be pressed. This is also the course of action if [dvd].play_video is FALSE since, in that case, no video screen is shown (audio only plays).

[dvd].play_video (boolean, default TRUE) If FALSE, only audio is played.

[dvd].use_cdtext (boolean, default TRUE) If TRUE, include the title text from the DVD as the titles as part of each track, otherwise, "dvd" is used.

[dvd].disk_speed (integer, default 2) Set the default speed the hardware is capable for (similar to [cdaudio].disc_speed.

[dvd].device (string, default "/dev/dvd") The device name of the dvd drive.

[dvd].fifo (string, default "fifo.mpg") Name / path of the fifo for the dvd reader and writer threads to share. If only the name is given, it is created in the $HOME/.config/audacious/ directory.

[dvd].video_windowtitle (string, default "") Appended, along with a hyphen to the DVD title on the video window titlebar (like [ffaudio].video_windowtitle).

[dvd].video_xmove, video_ysize, and video_qsize: (integer): Reccomended config file settings:

[dvd]
language=en
play_video=TRUE
use_cdtext=TRUE
video_qsize=5
video_windowtitle=Audacious DVD
video_xmove=1
video_ysize=-1

To build, you'll need to untar into the plugins/src/ directory (you'll need Audacious plugins sources along with the dev tools to build Audacious, and the additional dev. versions of SDL2, libdvdnav, and libdvdread (see the Makefile).
If you happen to be lucky to have a very recent version of Debian Testing similar to mine, you may be able to just run Make Install or just copy the included dvd-ng.so into your Audacious Input plugins directory: /usr/[local?]/lib/audaciuos/Input/. (YMMV).

dvd-ng.tar (340 kB)


Replies (1)

RE: New DVD Player Plugin Fun (Very Alpha)! - Added by Jim Turner 5 months ago

Rapid development and improvements continue, so far, so good. It's currently playing every DVD I've thrown at it!
For latest GIT (code and changes), go to: https://github.com/wildstar84/fauxdacious-plugins/commits/master/src/dvd/dvd-ng.cc

Questions, suggestions, patches, contributions, and assistance are welcome here.

Jim

(1-1/1)