postlund / pyatv

A client library for Apple TV and AirPlay devices
https://pyatv.dev
MIT License
881 stars 96 forks source link

Support remote control interface for RAOP #1093

Open postlund opened 3 years ago

postlund commented 3 years ago

What feature would you like? There's an issue dealing with controls on the actual receiver, #1068. This issue deals with the remote control interface in pyatv, i.e. interface.RemoteControl. An implementation is needed at least for play, pause and stop. Other controls can be implemented as well, like next or previous. But I need to think about an internal interface for that, as it doesn't fit well with other protocols implementing the remote control. This interface is needed for the reference application though (#1076).

Describe the solution you'd like Calling play, pause and stop should yield expected result when something is playing.

Any other information to share? I need to think about a few use cases here. An interesting one is the Apple TV, since the Apple TV will provide metadata and remote controls through MRP when streaming via RAOP. Will this require #1068 to work?

postlund commented 3 years ago

One big problem I see here, relating to my facade pattern, is that... what if for instance MRP and RAOP is configured at the same time? Common case with an Apple TV. In that case, the MRP remote control implementation will take precedence which might be a problem. This particular case might be OK because I think MRP will control the RAOP steam, assuming I have implemented everything needed for that. It's a bigger problem between AirPlay and RAOP, as I'm not sure if they "control each other". A bunch of research is needed.