Mercurial > projects > hoofbaby
view deps/Platinum/Source/Devices/MediaRenderer/PltMediaController.h @ 0:3425707ddbf6
Initial import (hopefully this mercurial stuff works...)
author | fraserofthenight |
---|---|
date | Mon, 06 Jul 2009 08:06:28 -0700 |
parents | |
children |
line wrap: on
line source
/***************************************************************** | | Platinum - AV Media Controller (Media Renderer Control Point) | | Copyright (c) 2004-2008, Plutinosoft, LLC. | All rights reserved. | http://www.plutinosoft.com | | This program is free software; you can redistribute it and/or | modify it under the terms of the GNU General Public License | as published by the Free Software Foundation; either version 2 | of the License, or (at your option) any later version. | | OEMs, ISVs, VARs and other distributors that combine and | distribute commercially licensed software with Platinum software | and do not wish to distribute the source code for the commercially | licensed software under version 2, or (at your option) any later | version, of the GNU General Public License (the "GPL") must enter | into a commercial license agreement with Plutinosoft, LLC. | | This program is distributed in the hope that it will be useful, | but WITHOUT ANY WARRANTY; without even the implied warranty of | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | GNU General Public License for more details. | | You should have received a copy of the GNU General Public License | along with this program; see the file LICENSE.txt. If not, write to | the Free Software Foundation, Inc., | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | http://www.gnu.org/licenses/gpl-2.0.html | ****************************************************************/ #ifndef _PLT_MEDIA_CONTROLLER_H_ #define _PLT_MEDIA_CONTROLLER_H_ /*---------------------------------------------------------------------- | includes +---------------------------------------------------------------------*/ #include "PltCtrlPoint.h" /*---------------------------------------------------------------------- | Defines +---------------------------------------------------------------------*/ typedef NPT_List<NPT_String> PLT_StringList; struct PLT_DeviceCapabilities { PLT_StringList play_media; PLT_StringList rec_media; PLT_StringList rec_quality_modes; }; struct PLT_MediaInfo { NPT_UInt32 num_tracks; NPT_TimeStamp media_duration; NPT_String cur_uri; NPT_String cur_metadata; NPT_String next_uri; NPT_String next_metadata; NPT_String play_medium; NPT_String rec_medium; NPT_String write_status; }; struct PLT_PositionInfo { NPT_UInt32 track; NPT_TimeStamp track_duration; NPT_String track_metadata; NPT_String track_uri; NPT_TimeStamp rel_time; NPT_TimeStamp abs_time; NPT_Int32 rel_count; NPT_Int32 abs_count; }; struct PLT_TransportInfo { NPT_String cur_transport_state; NPT_String cur_transport_status; NPT_String cur_speed; }; struct PLT_TransportSettings { NPT_String play_mode; NPT_String rec_quality_mode; }; struct PLT_ConnectionInfo { NPT_UInt32 rcs_id; NPT_UInt32 avtransport_id; NPT_String protocol_info; NPT_String peer_connection_mgr; NPT_UInt32 peer_connection_id; NPT_String direction; NPT_String status; }; /*---------------------------------------------------------------------- | PLT_MediaControllerDelegate class +---------------------------------------------------------------------*/ class PLT_MediaControllerDelegate { public: virtual ~PLT_MediaControllerDelegate() {} virtual bool OnMRAdded(PLT_DeviceDataReference& /* device */) { return true; } virtual void OnMRRemoved(PLT_DeviceDataReference& /* device */) {} virtual void OnMRStateVariablesChanged(PLT_Service* /* service */, NPT_List<PLT_StateVariable*>* /* vars */) {} // AVTransport virtual void OnGetCurrentTransportActionsResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, PLT_StringList* /* actions */, void* /* userdata */) {} virtual void OnGetDeviceCapabilitiesResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, PLT_DeviceCapabilities* /* capabilities */, void* /* userdata */) {} virtual void OnGetMediaInfoResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, PLT_MediaInfo* /* info */, void* /* userdata */) {} virtual void OnGetPositionInfoResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, PLT_PositionInfo* /* info */, void* /* userdata */) {} virtual void OnGetTransportInfoResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, PLT_TransportInfo* /* info */, void* /* userdata */) {} virtual void OnGetTransportSettingsResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, PLT_TransportSettings* /* settings */, void* /* userdata */) {} virtual void OnNextResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, void* /* userdata */) {} virtual void OnPauseResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, void* /* userdata */) {} virtual void OnPlayResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, void* /* userdata */) {} virtual void OnPreviousResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, void* /* userdata */) {} virtual void OnSeekResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, void* /* userdata */) {} virtual void OnSetAVTransportURIResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, void* /* userdata */) {} virtual void OnSetPlayModeResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, void* /* userdata */) {} virtual void OnStopResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, void* /* userdata */) {} // ConnectionManager virtual void OnGetCurrentConnectionIDsResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, PLT_StringList* /* ids */, void* /* userdata */) {} virtual void OnGetCurrentConnectionInfoResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, PLT_ConnectionInfo* /* info */, void* /* userdata */) {} virtual void OnGetProtocolInfoResult( NPT_Result /* res */, PLT_DeviceDataReference& /* device */, PLT_StringList* /* sources */, PLT_StringList* /* sinks */, void* /* userdata */) {} }; /*---------------------------------------------------------------------- | PLT_MediaController class +---------------------------------------------------------------------*/ class PLT_MediaController : public PLT_CtrlPointListener { public: PLT_MediaController(PLT_CtrlPointReference& ctrl_point, PLT_MediaControllerDelegate* delegate = NULL); virtual ~PLT_MediaController(); // public methods virtual void SetDelegate(PLT_MediaControllerDelegate* delegate) { m_Delegate = delegate; } // PLT_CtrlPointListener methods virtual NPT_Result OnDeviceAdded(PLT_DeviceDataReference& device); virtual NPT_Result OnDeviceRemoved(PLT_DeviceDataReference& device); virtual NPT_Result OnActionResponse(NPT_Result res, PLT_ActionReference& action, void* userdata); virtual NPT_Result OnEventNotify(PLT_Service* service, NPT_List<PLT_StateVariable*>* vars); // AVTransport NPT_Result GetCurrentTransportActions(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, void* userdata); NPT_Result GetDeviceCapabilities(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, void* userdata); NPT_Result GetMediaInfo(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, void* userdata); NPT_Result GetPositionInfo(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, void* userdata); NPT_Result GetTransportInfo(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, void* userdata); NPT_Result GetTransportSettings(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, void* userdata); NPT_Result Next(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, void* userdata); NPT_Result Pause(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, void* userdata); NPT_Result Play(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, NPT_String speed, void* userdata); NPT_Result Previous(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, void* userdata); NPT_Result Seek(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, NPT_String unit, NPT_String target, void* userdata); NPT_Result SetAVTransportURI(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, const char* uri, const char* metadata, void* userdata); NPT_Result SetPlayMode(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, NPT_String new_play_mode, void* userdata); NPT_Result Stop(PLT_DeviceDataReference& device, NPT_UInt32 instance_id, void* userdata); // ConnectionManager NPT_Result GetCurrentConnectionIDs(PLT_DeviceDataReference& device, void* userdata); NPT_Result GetCurrentConnectionInfo(PLT_DeviceDataReference& device, NPT_UInt32 connection_id, void* userdata); NPT_Result GetProtocolInfo(PLT_DeviceDataReference& device, void* userdata); private: NPT_Result FindActionDesc(PLT_DeviceDataReference& device, const char* service_type, const char* action_name, PLT_ActionDesc*& action_desc); NPT_Result CreateAction(PLT_DeviceDataReference& device, const char* service_type, const char* action_name, PLT_ActionReference& action); NPT_Result CallAVTransportAction(PLT_ActionReference& action, NPT_UInt32 instance_id, void* userdata = NULL); NPT_Result OnGetCurrentTransportActionsResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action, void* userdata); NPT_Result OnGetDeviceCapabilitiesResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action, void* userdata); NPT_Result OnGetMediaInfoResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action, void* userdata); NPT_Result OnGetPositionInfoResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action, void* userdata); NPT_Result OnGetTransportInfoResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action, void* userdata); NPT_Result OnGetTransportSettingsResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action, void* userdata); NPT_Result OnGetCurrentConnectionIDsResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action, void* userdata); NPT_Result OnGetCurrentConnectionInfoResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action, void* userdata); NPT_Result OnGetProtocolInfoResponse(NPT_Result res, PLT_DeviceDataReference& device, PLT_ActionReference& action, void* userdata); static void ParseCSV(const char* csv, PLT_StringList& values) { const char* start = csv; const char* p = start; // look for the , character while (*p) { if (*p == ',') { NPT_String val(start, (int)(p-start)); val.Trim(' '); values.Add(val); start = p + 1; } p++; } // last one NPT_String last(start, (int)(p-start)); last.Trim(' '); if (last.GetLength()) { values.Add(last); } } private: PLT_CtrlPointReference m_CtrlPoint; PLT_MediaControllerDelegate* m_Delegate; NPT_List<PLT_DeviceDataReference> m_MediaRenderers; }; #endif /* _PLT_MEDIA_CONTROLLER_H_ */