/* * Copyright (c) 2003 Marcus Overhagen. * All Rights Reserved. * * This file may be used under the terms of the MIT License. */ #ifndef _MEDIA_ROSTER_EX_H_ #define _MEDIA_ROSTER_EX_H_ #ifndef _MEDIA_T_LIST_H #include "TList.h" #endif #ifndef _DATA_EXCHANGE_H #include "DataExchange.h" #endif #ifndef _MEDIA_NODE_H #include #endif #ifndef _MEDIA_ADD_ON_H #include #endif namespace BPrivate { namespace media { /* The BMediaRosterEx class is an extension to the BMediaRoster. * It provides functionality that can be used by the implementation * of media_server, media_addon_server and libmedia.so. * To access it, convert any BMediaRoster pointer in a BMediaRosterEx * pointer using the inline function provided below. */ class BMediaRosterEx : public BMediaRoster { public: BMediaRosterEx(status_t* out_error); virtual ~BMediaRosterEx(); virtual void Quit(); status_t SaveNodeConfiguration(BMediaNode* node); status_t LoadNodeConfiguration(media_addon_id addonid, int32 flavorid, BMessage* out_msg); status_t IncrementAddonFlavorInstancesCount( media_addon_id addonid, int32 flavorid); status_t DecrementAddonFlavorInstancesCount( media_addon_id addonid, int32 flavorid); status_t ReleaseNodeAll(const media_node& node); status_t SetNodeCreator(media_node_id node, team_id creator); status_t RegisterNode(BMediaNode* node, media_addon_id addonid, int32 flavorid); status_t InstantiateDormantNode(media_addon_id addonid, int32 flavorid, team_id creator, media_node* out_node); status_t GetDormantFlavorInfo(media_addon_id addonid, int32 flavorid, dormant_flavor_info* out_flavor); status_t GetNode(node_type type, media_node* out_node, int32* out_input_id = NULL, BString* out_input_name = NULL); status_t SetNode(node_type type, const media_node* node, const dormant_node_info* info = NULL, const media_input *input = NULL); status_t GetAllOutputs(const media_node& node, List* list); status_t GetAllOutputs(BBufferProducer* node, List* list); status_t GetAllInputs(const media_node& node, List* list); status_t GetAllInputs(BBufferConsumer* node, List* list); status_t PublishOutputs(const media_node& node, List* list); status_t PublishInputs(const media_node& node, List* list); BTimeSource* MakeTimeSourceObject(media_node_id timesource_id); status_t BuildConnections(); void RegisterLocalNode(BMediaNode* node); void UnregisterLocalNode(BMediaNode* node); void EnableLaunchNotification(bool enable, bool autoExit); private: bool fLaunchNotification; bool fAutoExit; friend class BMediaRoster; }; /* The pointer returned by BMediaRoster::Roster() is always a * BMediaRosterEx object pointer. Use this to convert it. */ inline BMediaRosterEx* MediaRosterEx(BMediaRoster* mediaroster) { return static_cast(mediaroster); } } } // BPrivate::media using namespace BPrivate::media; #endif