35 #ifndef _PLT_MEDIA_CONTROLLER_H_
36 #define _PLT_MEDIA_CONTROLLER_H_
47 typedef NPT_List<NPT_String> PLT_StringList;
50 PLT_StringList play_media;
51 PLT_StringList rec_media;
52 PLT_StringList rec_quality_modes;
53 } PLT_DeviceCapabilities;
56 NPT_UInt32 num_tracks;
57 NPT_TimeStamp media_duration;
59 NPT_String cur_metadata;
61 NPT_String next_metadata;
62 NPT_String play_medium;
63 NPT_String rec_medium;
64 NPT_String write_status;
69 NPT_TimeStamp track_duration;
70 NPT_String track_metadata;
72 NPT_TimeStamp rel_time;
73 NPT_TimeStamp abs_time;
79 NPT_String cur_transport_state;
80 NPT_String cur_transport_status;
86 NPT_String rec_quality_mode;
87 } PLT_TransportSettings;
91 NPT_UInt32 avtransport_id;
92 NPT_String protocol_info;
93 NPT_String peer_connection_mgr;
94 NPT_UInt32 peer_connection_id;
102 class PLT_MediaControllerDelegate
105 virtual ~PLT_MediaControllerDelegate() {}
107 virtual bool OnMRAdded(PLT_DeviceDataReference& ) {
return true; }
108 virtual void OnMRRemoved(PLT_DeviceDataReference& ) {}
109 virtual void OnMRStateVariablesChanged(
PLT_Service* ,
110 NPT_List<PLT_StateVariable*>* ) {}
113 virtual void OnGetCurrentTransportActionsResult(
115 PLT_DeviceDataReference& ,
119 virtual void OnGetDeviceCapabilitiesResult(
121 PLT_DeviceDataReference& ,
122 PLT_DeviceCapabilities* ,
125 virtual void OnGetMediaInfoResult(
127 PLT_DeviceDataReference& ,
131 virtual void OnGetPositionInfoResult(
133 PLT_DeviceDataReference& ,
137 virtual void OnGetTransportInfoResult(
139 PLT_DeviceDataReference& ,
143 virtual void OnGetTransportSettingsResult(
145 PLT_DeviceDataReference& ,
146 PLT_TransportSettings* ,
149 virtual void OnNextResult(
151 PLT_DeviceDataReference& ,
154 virtual void OnPauseResult(
156 PLT_DeviceDataReference& ,
159 virtual void OnPlayResult(
161 PLT_DeviceDataReference& ,
164 virtual void OnPreviousResult(
166 PLT_DeviceDataReference& ,
169 virtual void OnSeekResult(
171 PLT_DeviceDataReference& ,
174 virtual void OnSetAVTransportURIResult(
176 PLT_DeviceDataReference& ,
179 virtual void OnSetPlayModeResult(
181 PLT_DeviceDataReference& ,
184 virtual void OnStopResult(
186 PLT_DeviceDataReference& ,
190 virtual void OnGetCurrentConnectionIDsResult(
192 PLT_DeviceDataReference& ,
196 virtual void OnGetCurrentConnectionInfoResult(
198 PLT_DeviceDataReference& ,
199 PLT_ConnectionInfo* ,
202 virtual void OnGetProtocolInfoResult(
204 PLT_DeviceDataReference& ,
210 virtual void OnSetMuteResult(
212 PLT_DeviceDataReference& ,
215 virtual void OnGetMuteResult(
217 PLT_DeviceDataReference& ,
222 virtual void OnSetVolumeResult(
224 PLT_DeviceDataReference& ,
227 virtual void OnGetVolumeResult(
229 PLT_DeviceDataReference& ,
241 PLT_MediaController(PLT_CtrlPointReference& ctrl_point,
242 PLT_MediaControllerDelegate* delegate = NULL);
243 virtual ~PLT_MediaController();
246 virtual void SetDelegate(PLT_MediaControllerDelegate* delegate) {
247 m_Delegate = delegate;
251 virtual NPT_Result OnDeviceAdded(PLT_DeviceDataReference& device);
252 virtual NPT_Result OnDeviceRemoved(PLT_DeviceDataReference& device);
253 virtual NPT_Result OnActionResponse(NPT_Result res, PLT_ActionReference& action,
void* userdata);
254 virtual NPT_Result OnEventNotify(
PLT_Service* service, NPT_List<PLT_StateVariable*>* vars);
257 NPT_Result GetCurrentTransportActions(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
void* userdata);
258 NPT_Result GetDeviceCapabilities(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
void* userdata);
259 NPT_Result GetMediaInfo(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
void* userdata);
260 NPT_Result GetPositionInfo(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
void* userdata);
261 NPT_Result GetTransportInfo(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
void* userdata);
262 NPT_Result GetTransportSettings(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
void* userdata);
263 NPT_Result Next(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
void* userdata);
264 NPT_Result Pause(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
void* userdata);
265 NPT_Result Play(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, NPT_String speed,
void* userdata);
266 NPT_Result Previous(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
void* userdata);
267 NPT_Result Seek(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, NPT_String unit, NPT_String target,
void* userdata);
268 bool CanSetNextAVTransportURI(PLT_DeviceDataReference& device);
269 NPT_Result SetAVTransportURI(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
const char* uri,
const char* metadata,
void* userdata);
270 NPT_Result SetNextAVTransportURI(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
const char* next_uri,
const char* next_metadata,
void* userdata);
271 NPT_Result SetPlayMode(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, NPT_String new_play_mode,
void* userdata);
272 NPT_Result Stop(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
void* userdata);
275 NPT_Result GetCurrentConnectionIDs(PLT_DeviceDataReference& device,
void* userdata);
276 NPT_Result GetCurrentConnectionInfo(PLT_DeviceDataReference& device, NPT_UInt32 connection_id,
void* userdata);
277 NPT_Result GetProtocolInfo(PLT_DeviceDataReference& device,
void* userdata);
280 NPT_Result SetMute(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
const char* channel,
bool mute,
void* userdata);
281 NPT_Result GetMute(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
const char* channel,
void* userdata);
282 NPT_Result SetVolume(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
const char* channel,
int volume,
void* userdata);
283 NPT_Result GetVolume(PLT_DeviceDataReference& device, NPT_UInt32 instance_id,
const char* channel,
void* userdata);
286 virtual NPT_Result GetProtocolInfoSink(
const NPT_String& device_uuid, NPT_List<NPT_String>& sinks);
287 virtual NPT_Result GetTransportState(
const NPT_String& device_uuid, NPT_String& state);
288 virtual NPT_Result GetVolumeState(
const NPT_String& device_uuid, NPT_UInt32& volume);
291 virtual NPT_Result FindRenderer(
const char* uuid, PLT_DeviceDataReference& device);
292 virtual NPT_Result FindMatchingProtocolInfo(NPT_List<NPT_String>& sinks,
const char* protocol_info);
293 virtual NPT_Result FindBestResource(PLT_DeviceDataReference& device,
PLT_MediaObject& item, NPT_Cardinal& resource_index);
296 NPT_Result InvokeActionWithInstance(PLT_ActionReference& action, NPT_UInt32 instance_id,
void* userdata = NULL);
298 NPT_Result OnGetCurrentTransportActionsResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action,
void* userdata);
299 NPT_Result OnGetDeviceCapabilitiesResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action,
void* userdata);
300 NPT_Result OnGetMediaInfoResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action,
void* userdata);
301 NPT_Result OnGetPositionInfoResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action,
void* userdata);
302 NPT_Result OnGetTransportInfoResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action,
void* userdata);
303 NPT_Result OnGetTransportSettingsResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action,
void* userdata);
305 NPT_Result OnGetCurrentConnectionIDsResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action,
void* userdata);
306 NPT_Result OnGetCurrentConnectionInfoResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action,
void* userdata);
307 NPT_Result OnGetProtocolInfoResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action,
void* userdata);
309 NPT_Result OnGetMuteResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action,
void* userdata);
310 NPT_Result OnGetVolumeResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action,
void* userdata);
313 static void ParseCSV(
const char* csv, PLT_StringList& values) {
314 const char* start = csv;
315 const char* p = start;
320 NPT_String val(start, (
int)(p-start));
329 NPT_String last(start, (
int)(p-start));
331 if (last.GetLength()) {
337 PLT_CtrlPointReference m_CtrlPoint;
338 PLT_MediaControllerDelegate* m_Delegate;
339 NPT_Lock<PLT_DeviceDataReferenceList> m_MediaRenderers;
342 typedef NPT_Reference<PLT_MediaController> PLT_MediaControllerReference;