DACP Support in Rhythmbox

This project will implement DACP support in Rhythmbox. DACP is the protocol used by the Remote application found on iPhone and iPod Touch.

http://arosenfeld.files.wordpress.com/2010/05/apple-iphone-remote.jpg

Please note: Partial patches have been submitted for early review for libdmapsharing and Rhythmbox. There is also the place where the final patches will be posted on pencil's down date and also where further discussion to integrate both patches will happen.

The implementation will be done inside libdmapsharing. There is a patch that integrates libdmapsharing inside Rhythmbox, which is being used as a base for this project. The libdmapsharing patch was commited into Rhythmbox some time ago, so my patches only need to be applied on top of master in both libdmapsharing and Rhythmbox.

You can follow my blog for more updates. The code is hosted on Gitorious, both the Rhythmbox modifications and the libdmapsharing modifications (you'll need both).

Planning

This is (as of 2010-08-11) the missing parts of the project:

  • Fix filter bug

  • Implement /databases/1/groups:

    • Probably just the same as /databases/1/browse

  • Finish signals methods/properties:

    • now-playing-artwork (Missing Rhythmbox implementation)

    • lookup-guid

    • add-guid

    • play-status-update

    • play-pause (Missing Rhythmbox implementation)

    • next-item (Missing Rhythmbox implementation)

    • prev-item (Missing Rhythmbox implementation)

    • get-shuffle-state

    • set-shuffle-state

    • get-repeat-state

    • set-repeat-state

    • get-volume

    • set-volume

  • Add playlist control - One of the following:
    • Create "Remote" playlist as iTunes does - Implemented in libdmapsharing, missing in Rhythmbox

    • Use Queue - will be great if it allows everything I need Can't do what is required.

Screenshot

This is a screenshot of the pairing process:

rhythmbox_dacp.png

Implementation diagrams

This is how the remote talks with Rhythmbox:

network.png

This is more or less the current implementation:

alternative.png

(Note that a recent refactor added a DACPPlayer interface in libdmapsharing which is implemented by RBDACPPlayer)

Also, here is a few links that are helping me with this task:

Outreach/SummerOfCode/2010/AlexandreRosenfeld_Rhythmbox (last edited 2013-12-03 18:33:12 by WilliamJonMcCann)