You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
amarok/amarok/src/engine/helix/helix-sp/helix-include/common/include/hxcore.h

2111 lines
56 KiB

/*
*
* This software is released under the provisions of the GPL version 2.
* see file "COPYING". If that file is not available, the full statement
* of the license can be found at
*
* http://www.fsf.org/licensing/licenses/gpl.txt
*
* Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
*
*/
#ifndef _HXCORE_H_
#define _HXCORE_H_
/*
* Forward declarations of some interfaces defined or used here-in.
*/
typedef _INTERFACE IUnknown IUnknown;
typedef _INTERFACE IHXStream IHXStream;
typedef _INTERFACE IHXStream2 IHXStream2;
typedef _INTERFACE IHXStreamSource IHXStreamSource;
typedef _INTERFACE IHXPlayer IHXPlayer;
typedef _INTERFACE IHXClientEngine IHXClientEngine;
typedef _INTERFACE IHXScheduler IHXScheduler;
typedef _INTERFACE IHXClientAdviseSink IHXClientAdviseSink;
typedef _INTERFACE IHXValues IHXValues;
typedef _INTERFACE IHXBuffer IHXBuffer;
typedef _INTERFACE IHXPacket IHXPacket;
// $Private:
typedef _INTERFACE IHXPersistenceManager IHXPersistenceManager;
typedef _INTERFACE IHXRendererAdviseSink IHXRendererAdviseSink;
typedef _INTERFACE IHXLayoutSite IHXLayoutSite;
typedef _INTERFACE IHXProtocolValidator IHXProtocolValidator;
typedef _INTERFACE IHXUpdateProperties IHXUpdateProperties;
typedef _INTERFACE IHXUpdateProperties2 IHXUpdateProperties2;
typedef _INTERFACE IHXPersistentComponentManager IHXPersistentComponentManager;
typedef _INTERFACE IHXPersistentComponent IHXPersistentComponent;
typedef _INTERFACE IHXPersistentRenderer IHXPersistentRenderer;
typedef _INTERFACE IHXCoreMutex IHXCoreMutex;
typedef _INTERFACE IHXMacBlitMutex IHXMacBlitMutex;
// $EndPrivate.
typedef _INTERFACE IHXRenderer IHXRenderer;
typedef _INTERFACE IHXPlayer2 IHXPlayer2;
typedef _INTERFACE IHXRequest IHXrequest;
typedef _INTERFACE IHXPlayerNavigator IHXPlayerNavigator;
typedef _INTERFACE IHXGroupSink IHXGroupSink;
typedef struct _PersistentComponentInfo PersistentComponentInfo;
typedef struct _HXxEvent HXxEvent;
#ifdef _MAC_CFM
#pragma export on
#endif
#if defined _UNIX && !(defined _VXWORKS)
/* Includes needed for select() stuff */
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#endif
#ifdef _BEOS // fd_set stuff
#include <net/socket.h>
#endif
#include "hxwin.h"
/* Used in renderer and advise sink interface */
enum BUFFERING_REASON
{
BUFFERING_START_UP = 0,
BUFFERING_SEEK,
BUFFERING_CONGESTION,
BUFFERING_LIVE_PAUSE
};
/****************************************************************************
*
* Function:
*
* CreateEngine()
*
* Purpose:
*
* Function implemented by the RMA core to return a pointer to the
* client engine. This function would be run by top level clients.
*/
STDAPI CreateEngine
(
IHXClientEngine** /*OUT*/ ppEngine
);
/****************************************************************************
*
* Function:
*
* CloseEngine()
*
* Purpose:
*
* Function implemented by the RMA core to close the engine which
* was returned in CreateEngine().
*/
STDAPI CloseEngine
(
IHXClientEngine* /*IN*/ pEngine
);
#ifdef _MAC_CFM
#pragma export off
#endif
/*
* Definitions of Function Pointers to CreateEngine() and Close Engine().
* These types are provided as a convenince to authors of top level clients.
*/
typedef HX_RESULT (HXEXPORT_PTR FPRMCREATEENGINE)(IHXClientEngine** ppEngine);
typedef HX_RESULT (HXEXPORT_PTR FPRMCLOSEENGINE) (IHXClientEngine* pEngine);
/****************************************************************************
*
* Interface:
*
* IHXStream
*
* Purpose:
*
* Interface provided by the client engine to the renderers. This
* interface allows access to stream related information and properties.
*
* IID_IHXStream:
*
* {00000400-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXStream, 0x00000400, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXStream
DECLARE_INTERFACE_(IHXStream, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXStream methods
*/
/************************************************************************
* Method:
* IHXStream::GetSource
* Purpose:
* Get the interface to the source object of which the stream is
* a part of.
*
*/
STDTQT_METHOD(GetSource) (THIS_
REF(IHXStreamSource*) pSource) PURE;
/************************************************************************
* Method:
* IHXStream::GetStreamNumber
* Purpose:
* Get the stream number for this stream relative to the source
* object of which the stream is a part of.
*
*/
STDMETHOD_(UINT16,GetStreamNumber) (THIS) PURE;
/************************************************************************
* Method:
* IHXStream::GetStreamType
* Purpose:
* Get the MIME type for this stream. NOTE: The returned string is
* assumed to be valid for the life of the IHXStream from which it
* was returned.
*
*/
STDMETHOD_(const char*,GetStreamType) (THIS) PURE;
/************************************************************************
* Method:
* IHXStream::GetHeader
* Purpose:
* Get the header for this stream.
*
*/
STDMETHOD_(IHXValues*,GetHeader) (THIS) PURE;
/************************************************************************
* Method:
* IHXStream::ReportQualityOfService
* Purpose:
* Call this method to report to the playback context that the
* quality of service for this stream has changed. The unQuality
* should be on a scale of 0 to 100, where 100 is the best possible
* quality for this stream. Although the transport engine can
* determine lost packets and report these through the user
* interface, only the renderer of this stream can determine the
* "real" perceived damage associated with this loss.
*
* NOTE: The playback context may use this value to indicate loss
* in quality to the user interface. When the effects of a lost
* packet are eliminated the renderer should call this method with
* a unQuality of 100.
*
*/
STDTQT_METHOD(ReportQualityOfService) (THIS_
UINT8 unQuality) PURE;
/************************************************************************
* Method:
* IHXStream::ReportRebufferStatus
* Purpose:
* Call this method to report to the playback context that the
* available data has dropped to a critically low level, and that
* rebuffering should occur. The renderer should call back into this
* interface as it receives additional data packets to indicate the
* status of its rebuffering effort.
*
* NOTE: The values of unNeeded and unAvailable are used to indicate
* the general status of the rebuffering effort. For example, if a
* renderer has "run dry" and needs 5 data packets to play smoothly
* again, it should call ReportRebufferStatus() with 5,0 then as
* packet arrive it should call again with 5,1; 5,2... and eventually
* 5,5.
*
*/
STDTQT_METHOD(ReportRebufferStatus) (THIS_
UINT8 unNeeded,
UINT8 unAvailable) PURE;
/************************************************************************
* Method:
* IHXStream::SetGranularity
* Purpose:
* Sets the desired Granularity for this stream. The actual
* granularity will be the lowest granularity of all streams.
* Valid to call before stream actually begins. Best to call during
* IHXRenderer::OnHeader().
*/
STDTQT_METHOD(SetGranularity) (THIS_
ULONG32 ulGranularity) PURE;
/************************************************************************
* Method:
* IHXStream::GetRendererCount
* Purpose:
* Returns the current number of renderer instances supported by
* this stream instance.
*/
STDMETHOD_(UINT16, GetRendererCount)(THIS) PURE;
/************************************************************************
* Method:
* IHXStream::GetRenderer
* Purpose:
* Returns the Nth renderer instance supported by this stream.
*/
STDTQT_METHOD(GetRenderer) (THIS_
UINT16 nIndex,
REF(IUnknown*) pUnknown) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXStream2
*
* Purpose:
*
* Interface provided by the client engine to the renderers. This
* interface allows access to stream related information and properties.
*
* IID_IHXStream:
*
* {00000400-0901-11d1-8B06-00A024406D5a}
*
*/
DEFINE_GUID(IID_IHXStream2, 0x00000400, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x5a);
#undef INTERFACE
#define INTERFACE IHXStream2
DECLARE_INTERFACE_(IHXStream2, IHXStream)
{
/************************************************************************
* Method:
* IHXStream2::ReportAudioRebufferStatus
* Purpose:
* For audio only, when it's called, the rebuffer will only occur when
* there aren't any packets in the transport and the amount of audio in
* audio device falls below the minimum startup audio pushdown(1000ms
* by default)
*
* Non-audio renderers should still call ReportRebufferStatus(), the
* rebuffer will occur when the core drains out all the packets from
* the transport buffer
*
* The rest semantic are the same between the 2 calls.
*/
STDTQT_METHOD(ReportAudioRebufferStatus) (THIS_
UINT8 unNeeded,
UINT8 unAvailable) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXStreamSource
*
* Purpose:
*
* Interface provided by the client engine to the renderers. This
* interface allows access to source related information and properties.
*
* IID_IHXStreamSource:
*
* {00000401-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXStreamSource, 0x00000401, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXStreamSource
DECLARE_INTERFACE_(IHXStreamSource, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXStreamSource methods
*/
/************************************************************************
* Method:
* IHXStreamSource::IsLive
* Purpose:
* Ask the source whether it is live
*
*/
STDMETHOD_ (HXBOOL,IsLive) (THIS) PURE;
/************************************************************************
* Method:
* IHXStreamSource::GetPlayer
* Purpose:
* Get the interface to the player object of which the source is
* a part of.
*
*/
STDTQT_METHOD(GetPlayer) (THIS_
REF(IHXPlayer*) pPlayer) PURE;
/************************************************************************
* Method:
* IHXStreamSource::GetURL
* Purpose:
* Get the URL for this source. NOTE: The returned string is
* assumed to be valid for the life of the IHXStreamSource from which
* it was returned.
*
*/
STDMETHOD_(const char*,GetURL) (THIS) PURE;
/************************************************************************
* Method:
* IHXStreamSource::GetStreamCount
* Purpose:
* Returns the current number of stream instances supported by
* this source instance.
*/
STDMETHOD_(UINT16, GetStreamCount)(THIS) PURE;
/************************************************************************
* Method:
* IHXStreamSource::GetStream
* Purpose:
* Returns the Nth stream instance supported by this source.
*/
STDTQT_METHOD(GetStream) (THIS_
UINT16 nIndex,
REF(IUnknown*) pUnknown) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXPlayer
*
* Purpose:
*
* Interface provided by the client engine to the renderers. This
* interface allows access to player related information, properties,
* and operations.
*
* IID_IHXPlayer:
*
* {00000402-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXPlayer, 0x00000402, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXPlayer
DECLARE_INTERFACE_(IHXPlayer, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXPlayer methods
*/
/************************************************************************
* Method:
* IHXPlayer::GetClientEngine
* Purpose:
* Get the interface to the client engine object of which the
* player is a part of.
*
*/
STDTQT_METHOD(GetClientEngine) (THIS_
REF(IHXClientEngine*) pEngine) PURE;
/************************************************************************
* Method:
* IHXPlayer::IsDone
* Purpose:
* Ask the player if it is done with the current presentation
*
*/
STDMETHOD_(HXBOOL,IsDone) (THIS) PURE;
/************************************************************************
* Method:
* IHXPlayer::IsLive
* Purpose:
* Ask the player whether it contains the live source
*
*/
STDMETHOD_(HXBOOL,IsLive) (THIS) PURE;
/************************************************************************
* Method:
* IHXPlayer::GetCurrentPlayTime
* Purpose:
* Get the current time on the Player timeline
*
*/
STDMETHOD_(ULONG32,GetCurrentPlayTime) (THIS) PURE;
/************************************************************************
* Method:
* IHXPlayer::OpenURL
* Purpose:
* Tell the player to begin playback of all its sources.
*
*/
STDTQT_METHOD(OpenURL) (THIS_
const char* pURL) PURE;
/************************************************************************
* Method:
* IHXPlayer::Begin
* Purpose:
* Tell the player to begin playback of all its sources.
*
*/
STDTQT_METHOD(Begin) (THIS) PURE;
/************************************************************************
* Method:
* IHXPlayer::Stop
* Purpose:
* Tell the player to stop playback of all its sources.
*
*/
STDTQT_METHOD(Stop) (THIS) PURE;
/************************************************************************
* Method:
* IHXPlayer::Pause
* Purpose:
* Tell the player to pause playback of all its sources.
*
*/
STDTQT_METHOD(Pause) (THIS) PURE;
/************************************************************************
* Method:
* IHXPlayer::Seek
* Purpose:
* Tell the player to seek in the playback timeline of all its
* sources.
*
*/
STDTQT_METHOD(Seek) (THIS_
ULONG32 ulTime) PURE;
/************************************************************************
* Method:
* IHXPlayer::GetSourceCount
* Purpose:
* Returns the current number of source instances supported by
* this player instance.
*/
STDMETHOD_(UINT16, GetSourceCount)(THIS) PURE;
/************************************************************************
* Method:
* IHXPlayer::GetSource
* Purpose:
* Returns the Nth source instance supported by this player.
*/
STDTQT_METHOD(GetSource) (THIS_
UINT16 nIndex,
REF(IUnknown*) pUnknown) PURE;
/************************************************************************
* Method:
* IHXPlayer::SetClientContext
* Purpose:
* Called by the client to install itself as the provider of client
* services to the core. This is traditionally called by the top
* level client application.
*/
STDTQT_METHOD(SetClientContext) (THIS_
IUnknown* pUnknown) PURE;
/************************************************************************
* Method:
* IHXPlayer::GetClientContext
* Purpose:
* Called to get the client context for this player. This is
* set by the top level client application.
*/
STDTQT_METHOD(GetClientContext) (THIS_
REF(IUnknown*) pUnknown) PURE;
/************************************************************************
* Method:
* IHXPlayer::AddAdviseSink
* Purpose:
* Call this method to add a client advise sink.
*
*/
STDTQT_METHOD(AddAdviseSink) (THIS_
IHXClientAdviseSink* pAdviseSink) PURE;
/************************************************************************
* Method:
* IHXPlayer::RemoveAdviseSink
* Purpose:
* Call this method to remove a client advise sink.
*/
STDTQT_METHOD(RemoveAdviseSink) (THIS_
IHXClientAdviseSink* pAdviseSink) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXClientEngine
*
* Purpose:
*
* Interface to the basic client engine. Provided to the renderers and
* other client side components.
*
* IID_IHXClientEngine:
*
* {00000403-0901-11d1-8B06-00A024406D59}
*/
DEFINE_GUID(IID_IHXClientEngine, 0x00000403, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXClientEngine
DECLARE_INTERFACE_(IHXClientEngine, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXClientEngine methods
*/
/************************************************************************
* Method:
* IHXClientEngine::CreatePlayer
* Purpose:
* Creates a new IHXPlayer instance.
*
*/
STDTQT_METHOD(CreatePlayer) (THIS_
REF(IHXPlayer*) pPlayer) PURE;
/************************************************************************
* Method:
* IHXClientEngine::ClosePlayer
* Purpose:
* Called by the client when it is done using the player...
*
*/
STDTQT_METHOD(ClosePlayer) (THIS_
IHXPlayer* pPlayer) PURE;
/************************************************************************
* Method:
* IHXClientEngine::GetPlayerCount
* Purpose:
* Returns the current number of IHXPlayer instances supported by
* this client engine instance.
*/
STDMETHOD_(UINT16, GetPlayerCount)(THIS) PURE;
/************************************************************************
* Method:
* IHXClientEngine::GetPlayer
* Purpose:
* Returns the Nth IHXPlayer instances supported by this client
* engine instance.
*/
STDTQT_METHOD(GetPlayer) (THIS_
UINT16 nPlayerNumber,
REF(IUnknown*) pUnknown) PURE;
/************************************************************************
* Method:
* IHXClientEngine::EventOccurred
* Purpose:
* Clients call this to pass OS events to all players. HXxEvent
* defines a cross-platform event.
*/
STDTQT_METHOD(EventOccurred) (THIS_
HXxEvent* /*IN*/ pEvent) PURE;
};
// $Private:
/****************************************************************************
*
* Interface:
*
* IHXClientEngineMapper
*
* Purpose:
*
* Interface to the basic client engine. Provided to the renderers and
* other client side components.
*
* IID_IHXClientEngineMapper:
*
* {0000040A-0901-11d1-8B06-00A024406D59}
*/
DEFINE_GUID(IID_IHXClientEngineMapper, 0x0000040A, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXClientEngineMapper
DECLARE_INTERFACE_(IHXClientEngineMapper, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXClientEngineMapper methods
*/
/************************************************************************
* Method:
* IHXClientEngineMapper::GetPlayerBySite
* Purpose:
* Returns the IHXPlayer instance supported by this client
* engine instance that contains the specified IHXSite.
*/
STDTQT_METHOD(GetPlayerBySite) (THIS_
IHXSite* pSite,
REF(IUnknown*) pUnknown) PURE;
};
// $EndPrivate:
#if defined _UNIX && !defined (_VXWORKS)
DEFINE_GUID(IID_IHXClientEngineSelector, 0x00000404, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXClientEngineSelector
DECLARE_INTERFACE_(IHXClientEngineSelector, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/************************************************************************
* Method:
* IHXClientEngine::Select
* Purpose:
* Top level clients under Unix should use this instead of
* select() to select for events.
*/
STDMETHOD_(INT32, Select) (THIS_
INT32 n,
fd_set *readfds,
fd_set *writefds,
fd_set *exceptfds,
struct timeval* timeout) PURE;
};
#endif /* _UNIX */
/****************************************************************************
*
* Interface:
*
* IHXClientEngineSetup
*
* Purpose:
*
* Interface to the basic client engine. Provided to the renderers and
* other client side components.
*
* IID_IHXClientEngineSetup:
*
* {00000405-0901-11d1-8B06-00A024406D59}
*/
DEFINE_GUID(IID_IHXClientEngineSetup, 0x00000405, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXClientEngineSetup
DECLARE_INTERFACE_(IHXClientEngineSetup, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXClientEngineSetup methods
*/
/************************************************************************
* Method:
* IHXClientEngineSetup::Setup
* Purpose:
* Top level clients use this interface to over-ride certain basic
* interfaces implemented by the core. Current over-ridable
* interfaces are: IHXPreferences, IHXHyperNavigate
*/
STDTQT_METHOD(Setup) (THIS_
IUnknown* pContext) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXInfoLogger
*
* Purpose:
*
* Interface to send any logging information back to the server.
* This information will appear in the server's access log.
*
* IID_IHXInfoLogger:
*
* {00000409-0901-11d1-8B06-00A024406D59}
*/
DEFINE_GUID(IID_IHXInfoLogger, 0x00000409, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXInfoLogger
DECLARE_INTERFACE_(IHXInfoLogger, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXInfoLogger methods
*/
/************************************************************************
* Method:
* IHXInfoLogger::LogInformation
* Purpose:
* Logs any user defined information in form of action and
* associated data.
*/
STDTQT_METHOD(LogInformation) (THIS_
const char* /*IN*/ pAction,
const char* /*IN*/ pData) PURE;
};
// $Private:
/****************************************************************************
*
* Interface:
*
* IHXPersistenceManager
*
* Purpose:
*
*
* IID_IHXPersistenceManager:
*
* {0000040B-0901-11d1-8B06-00A024406D59}
*/
DEFINE_GUID(IID_IHXPersistenceManager, 0x0000040B, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXPersistenceManager
DECLARE_INTERFACE_(IHXPersistenceManager, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXPersistenceManager methods
*/
/************************************************************************
* Method:
* IHXPersistenceManager::AddPersistentComponent
* Purpose:
* We currently allow ONLY IHXRenderer to register itself as a
* persistent component.
* Renderer registers itself as a persistent renderer if it wants
* to live across group boundaries.
* It will not be unloaded until
* a) Someone opens the next URL.
* b) All the groups within the current presentation have been
* played.
*/
STDTQT_METHOD(AddPersistentComponent) (THIS_
IUnknown* /*IN*/ pComponent) PURE;
/************************************************************************
* Method:
* IHXPersistenceManager::RemovePersistentComponent
* Purpose:
* Remove an earlier registered persistent component.
*/
STDTQT_METHOD(RemovePersistentComponent) (THIS_
IUnknown* /*IN*/ pComponent) PURE;
/************************************************************************
* Method:
* IHXPersistenceManager::GetPersistentComponent
* Purpose:
* Return an earlier registered persistent component.
*/
STDTQT_METHOD(GetPersistentComponent) (THIS_
REF(IUnknown*) /*OUT*/ pComponent) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXDriverStreamManager
*
* Purpose:
* Methods to notify/update driver stream renderer
*
*
* IID_IHXDriverStreamManager
*
* {0000040C-0901-11d1-8B06-00A024406D59}
*/
DEFINE_GUID(IID_IHXDriverStreamManager, 0x0000040C, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXDriverStreamManager
DECLARE_INTERFACE_(IHXDriverStreamManager, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXDriverStreamManager methods
*/
/************************************************************************
* Method:
* IHXDriverStreamManager::AddRendererAdviseSink
* Purpose:
* Add a renderer advise sink
*
*/
STDTQT_METHOD(AddRendererAdviseSink) (THIS_
IHXRendererAdviseSink* pSink) PURE;
/************************************************************************
* Method:
* IHXDriverStreamManager::SetDriverStreamManager
* Purpose:
* Remove an advise sink
*
*/
STDTQT_METHOD(RemoveRendererAdviseSink) (THIS_
IHXRendererAdviseSink* pSink) PURE;
};
/****************************************************************************
*
* Interface:
* IHXRendererAdviseSink
*
* Purpose:
* Provides access to notifications of initialization/changes to
* renderers in the player.
*
* IID_IHXRendererAdviseSink
*
* {0000040D-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXRendererAdviseSink, 0x0000040D, 0x901,
0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXRendererAdviseSink
DECLARE_INTERFACE_(IHXRendererAdviseSink, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXRendererAdviseSink methods
*/
STDTQT_METHOD(TrackDurationSet) (THIS_
UINT32 ulGroupIndex,
UINT32 ulTrackIndex,
UINT32 ulDuration,
UINT32 ulDelay,
HXBOOL bIsLive) PURE;
STDTQT_METHOD(RepeatedTrackDurationSet) (THIS_
const char* pID,
UINT32 ulDuration,
HXBOOL bIsLive) PURE;
STDTQT_METHOD(TrackUpdated) (THIS_
UINT32 ulGroupIndex,
UINT32 ulTrackIndex,
IHXValues* pValues) PURE;
/************************************************************************
* Method:
* IHXRendererAdviseSink::RendererInitialized
* Purpose:
* Notification of renderer initialization
*
*/
STDTQT_METHOD(RendererInitialized) (THIS_
IHXRenderer* pRenderer,
IUnknown* pStream,
IHXValues* pInfo) PURE;
/************************************************************************
* Method:
* IHXRendererAdviseSink::RendererClosed
* Purpose:
* Notification of renderer close
*
*/
STDTQT_METHOD(RendererClosed) (THIS_
IHXRenderer* pRenderer,
IHXValues* pInfo) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXLayoutStream
*
* Purpose:
*
* Interface that allows access/updates to stream properties
*
* IID_IHXLayoutStream:
*
* {0000040E-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXLayoutStream, 0x0000040E, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXLayoutStream
DECLARE_INTERFACE_(IHXLayoutStream, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXLayoutStream methods
*/
/************************************************************************
* Method:
* IHXLayoutStream::GetProperty
* Purpose:
* Get layout stream property
*
*
*/
STDTQT_METHOD(GetProperties) (THIS_
REF(IHXValues*) pValue) PURE;
/************************************************************************
* Method:
* IHXLayoutStream::SetProperty
* Purpose:
* Set layout stream property
*
*/
STDTQT_METHOD(SetProperties) (THIS_
IHXValues* pValue) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXRendererUpgrade
*
* Purpose:
*
* Interface that tells the player to upgrade a particular set of renderers
*
* IID_IHXRendererUpgrade:
*
* {00000410-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXRendererUpgrade, 0x00000410, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXRendererUpgrade
DECLARE_INTERFACE_(IHXRendererUpgrade, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXRendererUpgrade methods
*/
/************************************************************************
* Method:
* IHXRendererUpgrade::IsRendererAvailable
* Purpose:
* Find out if the renderer is already loaded
*
*
*/
STDMETHOD_(HXBOOL,IsRendererAvailable) (THIS_
const char* pMimeType) PURE;
/************************************************************************
* Method:
* IHXRendererUpgrade::ForceUpgrade
* Purpose:
* Force an upgrade for any unloaded renderers
*
*/
STDTQT_METHOD(ForceUpgrade) (THIS) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXValidator
*
* Purpose:
*
* Interface that provides validation
*
* IID_IHXValidator:
*
* {00000412-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXValidator, 0x00000412, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXValidator
DECLARE_INTERFACE_(IHXValidator, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXValidator methods
*/
/************************************************************************
* Method:
* IHXValidator::ValidateProtocol
* Purpose:
* Find out if the protocol is valid
*
*
*/
STDMETHOD_(HXBOOL,ValidateProtocol) (THIS_
char* pProtocol) PURE;
/************************************************************************
* Method:
* IHXValidator::ValidateMetaFile
* Purpose:
* Find out if it is a meta file
*
*
*/
STDTQT_METHOD(ValidateMetaFile) (THIS_
IHXRequest* pRequest,
IHXBuffer* pContent) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXPrivateStreamSource
*
* Purpose:
* This interface is being added for the sole purpose of implementing
* IsSaveAllowed on our stream source objects. We need to get this in
* for alpha-3 of the player, since it would be very bad to put out a
* player version that allowed recording of content that was supposed to
* be unrecordable. This method should be moved into IHXStreamSource
* as soon as is convenient.
*
* IHXPrivateStreamSource:
*
* {57DFD0E2-C76E-11d1-8B5C-006008065552}
*
*/
DEFINE_GUID(IID_IHXPrivateStreamSource, 0x57dfd0e2, 0xc76e, 0x11d1, 0x8b, 0x5c,
0x0, 0x60, 0x8, 0x6, 0x55, 0x52);
#undef INTERFACE
#define INTERFACE IHXPrivateStreamSource
DECLARE_INTERFACE_(IHXPrivateStreamSource, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXPrivateStreamSource methods
*/
STDMETHOD_ (HXBOOL,IsSaveAllowed) (THIS) PURE;
};
// $EndPrivate.
/****************************************************************************
*
* Interface:
*
* IHXPlayer2
*
* Purpose:
*
* Extra methods in addition to IHXPlayer
*
* IID_IHXPlayer2:
*
* {00000411-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXPlayer2, 0x00000411, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXPlayer2
DECLARE_INTERFACE_(IHXPlayer2, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/************************************************************************
* Method:
* IID_IHXPlayer2::SetMinimumPreroll
* Purpose:
* Call this method to set the minimum preroll of this clip
*/
STDTQT_METHOD(SetMinimumPreroll) (THIS_
UINT32 ulMinPreroll) PURE;
/************************************************************************
* Method:
* IID_IHXPlayer2::GetMinimumPreroll
* Purpose:
* Call this method to get the minimum preroll of this clip
*/
STDTQT_METHOD(GetMinimumPreroll) (THIS_
REF(UINT32) ulMinPreroll) PURE;
/************************************************************************
* Method:
* IID_IHXPlayer2::OpenRequest
* Purpose:
* Call this method to open the IHXRequest
*/
STDTQT_METHOD(OpenRequest) (THIS_
IHXRequest* pRequest) PURE;
/************************************************************************
* Method:
* IID_IHXPlayer2::GetRequest
* Purpose:
* Call this method to get the IHXRequest
*/
STDTQT_METHOD(GetRequest) (THIS_
REF(IHXRequest*) pRequest) PURE;
};
// $Private:
/****************************************************************************
*
* Interface:
*
* IHXUpdateProperties
*
* Purpose:
*
* update any offset related stuff
*
* IID_IHXUpdateProperties:
*
* {00000413-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXUpdateProperties, 0x00000413, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXUpdateProperties
DECLARE_INTERFACE_(IHXUpdateProperties, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/************************************************************************
* Method:
* IHXUpdateProperties::UpdatePacketTimeOffset
* Purpose:
* Call this method to update the timestamp offset of cached packets
*/
STDTQT_METHOD(UpdatePacketTimeOffset) (THIS_
INT32 lTimeOffset) PURE;
/************************************************************************
* Method:
* IHXUpdateProperties::UpdatePlayTimes
* Purpose:
* Call this method to update properties
*/
STDTQT_METHOD(UpdatePlayTimes) (THIS_
IHXValues* pProps) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXUpdateProperties
*
* Purpose:
*
* update any offset related stuff
*
* IID_IHXUpdateProperties:
*
* {00000413-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXUpdateProperties2, 0x00000413, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x5a);
#undef INTERFACE
#define INTERFACE IHXUpdateProperties2
DECLARE_INTERFACE_(IHXUpdateProperties2, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/************************************************************************
* Method:
* IHXUpdateProperties::UpdateHeader
* Purpose:
* Call this method to update the stream header
*/
STDTQT_METHOD(UpdateHeader) (THIS_
IHXValues* pProps) PURE;
};
// $EndPrivate.
/****************************************************************************
*
* Interface:
*
* IHXPlayerNavigator
*
* Purpose:
*
* navigate player objects
*
* IID_IHXPlayerNavigator:
*
* {00000414-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXPlayerNavigator, 0x00000414, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXPlayerNavigator
DECLARE_INTERFACE_(IHXPlayerNavigator, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/************************************************************************
* Method:
* IHXPlayerNavigator::AddChildPlayer
* Purpose:
* Add child player to the current player
*/
STDTQT_METHOD(AddChildPlayer) (THIS_
IHXPlayer* pPlayer) PURE;
/************************************************************************
* Method:
* IHXPlayerNavigator::RemoveChildPlayer
* Purpose:
* Remove child player from the current player
*/
STDTQT_METHOD(RemoveChildPlayer) (THIS_
IHXPlayer* pPlayer) PURE;
/************************************************************************
* Method:
* IHXPlayerNavigator::GetNumChildPlayer
* Purpose:
* Get number of the child players
*/
STDMETHOD_(UINT16, GetNumChildPlayer) (THIS) PURE;
/************************************************************************
* Method:
* IHXPlayerNavigator::GetChildPlayer
* Purpose:
* Get Nth child player
*/
STDTQT_METHOD(GetChildPlayer) (THIS_
UINT16 uPlayerIndex,
REF(IHXPlayer*) pPlayer) PURE;
/************************************************************************
* Method:
* IHXPlayerNavigator::SetParentPlayer
* Purpose:
* Set the parent player
*/
STDTQT_METHOD(SetParentPlayer) (THIS_
IHXPlayer* pPlayer) PURE;
/************************************************************************
* Method:
* IHXPlayerNavigator::RemoveParentPlayer
* Purpose:
* Remove the parent player
*/
STDTQT_METHOD(RemoveParentPlayer) (THIS_
IHXPlayer* pPlayer) PURE;
/************************************************************************
* Method:
* IHXPlayerNavigator::GetParentPlayer
* Purpose:
* Get the parent player
*/
STDTQT_METHOD(GetParentPlayer) (THIS_
REF(IHXPlayer*) pPlayer) PURE;
};
// $Private:
/****************************************************************************
*
* Interface:
*
* IHXPersistentComponentManager
*
* Purpose:
*
* persistent component manager
*
* IID_IHXPersistentComponentManager
*
* {00000415-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXPersistentComponentManager, 0x00000415, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXPersistentComponentManager
DECLARE_INTERFACE_(IHXPersistentComponentManager, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/************************************************************************
* Method:
* IHXPersistentComponentManager::CreatePersistentComponent
* Purpose:
* create persistent component
*/
STDTQT_METHOD(CreatePersistentComponent) (THIS_
REF(IHXPersistentComponent*) pPersistentComponent) PURE;
/************************************************************************
* Method:
* IHXPersistentComponentManager::AddPersistentComponent
* Purpose:
* add persistent component
*/
STDTQT_METHOD(AddPersistentComponent) (THIS_
IHXPersistentComponent* pPersistentComponent) PURE;
/************************************************************************
* Method:
* IHXPersistentComponentManager::RemovePersistentComponent
* Purpose:
* remove persistent component
*/
STDTQT_METHOD(RemovePersistentComponent) (THIS_
UINT32 ulPersistentComponentID) PURE;
/************************************************************************
* Method:
* IHXPersistentComponentManager::GetPersistentComponentInfo
* Purpose:
* get persistent component information
*/
STDTQT_METHOD(GetPersistentComponent) (THIS_
UINT32 ulPersistentComponentID,
REF(IHXPersistentComponent*) pPersistentComponent) PURE;
/************************************************************************
* Method:
* IHXPersistentComponentManager::AttachPersistentComponentLayout
* Purpose:
* get persistent component information
*/
STDTQT_METHOD(AttachPersistentComponentLayout) (THIS_
IUnknown* pLSG,
IHXValues* pProps) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXPersistentComponent
*
* Purpose:
*
* persistent component
*
* IID_IHXPersistentComponent
*
* {00000416-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXPersistentComponent, 0x00000416, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXPersistentComponent
DECLARE_INTERFACE_(IHXPersistentComponent, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/************************************************************************
* Method:
* IHXPersistentComponent::Init
* Purpose:
* initialize persistent component
*/
STDTQT_METHOD(Init) (THIS_
IHXPersistentRenderer* pPersistentRenderer) PURE;
/************************************************************************
* Method:
* IHXPersistentComponent::AddRendererAdviseSink
* Purpose:
* add renderer advise sink
*/
STDTQT_METHOD(AddRendererAdviseSink) (THIS_
IHXRendererAdviseSink* pSink) PURE;
/************************************************************************
* Method:
* IHXPersistentComponent::RemoveRendererAdviseSink
* Purpose:
* remove renderer advise sink
*/
STDTQT_METHOD(RemoveRendererAdviseSink) (THIS_
IHXRendererAdviseSink* pSink) PURE;
/************************************************************************
* Method:
* IHXPersistentComponent::AddGroupSink
* Purpose:
* add renderer advise sink
*/
STDTQT_METHOD(AddGroupSink) (THIS_
IHXGroupSink* pSink) PURE;
/************************************************************************
* Method:
* IHXPersistentComponent::RemoveGroupSink
* Purpose:
* remove renderer advise sink
*/
STDTQT_METHOD(RemoveGroupSink) (THIS_
IHXGroupSink* pSink) PURE;
/************************************************************************
* Method:
* IHXPersistentComponent::GetPersistentRenderer
* Purpose:
* get persistent renderer
*/
STDTQT_METHOD(GetPersistentRenderer) (THIS_
REF(IHXPersistentRenderer*) pPersistentRenderer) PURE;
/************************************************************************
* Method:
* IHXPersistentComponent::GetPersistentProperties
* Purpose:
* get persistent component properties
*/
STDTQT_METHOD(GetPersistentProperties) (THIS_
REF(IHXValues*) pProperties) PURE;
};
/****************************************************************************
*
* Interface:
*
* IID_IHXClientStatisticsGranularity
*
* Purpose:
*
* Enables users to set the Granularity at which statistics are
* gathered. This allows machines under high load to still run
* efficiently.
*
*
* IID_IHXClientStatisticsGranularity
*
* {00000416-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXClientStatisticsGranularity, 0x00000417, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXClientStatisticsGranularity
DECLARE_INTERFACE_(IHXClientStatisticsGranularity, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/************************************************************************
* Method:
* IHXClientStatisticsGranularity::SetStatsGranularity
* Purpose:
* Set the granularity
*/
STDTQT_METHOD(SetStatsGranularity) (THIS_ ULONG32 ulGranularity) PURE;
};
// $EndPrivate.
// $Private:
/****************************************************************************
*
* Interface:
*
* IID_IHXSourceBufferingStats
*
* Purpose:
*
* Enables users to get the current buffering status of the
* given source.
*
*
* IID_IHXSourceBufferingStats
*
* {00000418-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXSourceBufferingStats, 0x00000418, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXSourceBufferingStats
DECLARE_INTERFACE_(IHXSourceBufferingStats, IUnknown)
{
/************************************************************************
* Method:
* IHXSourceBufferingStats::GetCurrentBuffering
* Purpose:
* Get the current buffering information
*/
STDTQT_METHOD(GetCurrentBuffering) (THIS_ UINT16 uStreamNumber,
REF(INT64) llLowestTimestamp,
REF(INT64) llHighestTimestamp,
REF(UINT32) ulNumBytes,
REF(HXBOOL) bDone) PURE;
};
/****************************************************************************
*
* Interface:
*
* IID_IHXSourceBufferingStats2
*
* Purpose:
*
* Enables users to get the current buffering status of the
* given source.
*
*
* IID_IHXSourceBufferingStats2
*
* {00000418-0901-11d1-8B06-00A024406D5A}
*
*/
DEFINE_GUID(IID_IHXSourceBufferingStats2, 0x00000418, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x5a);
#undef INTERFACE
#define INTERFACE IHXSourceBufferingStats2
DECLARE_INTERFACE_(IHXSourceBufferingStats2, IHXSourceBufferingStats)
{
/************************************************************************
* Method:
* IHXSourceBufferingStats2::GetCurrentBuffering
* Purpose:
* Get the amount of buffering in the transport
*/
STDTQT_METHOD(GetCurrentBuffering) (THIS_ UINT16 uStreamNumber,
REF(INT64) llLowestTimestamp,
REF(INT64) llHighestTimestamp,
REF(UINT32) ulNumBytes,
REF(HXBOOL) bDone) PURE;
/************************************************************************
* Method:
* IHXSourceBufferingStats2::GetTotalBuffering
* Purpose:
* Get the total amount of data buffered for a stream.
* This includes what is in the transport buffer and in
* the renderer
*/
STDTQT_METHOD(GetTotalBuffering) (THIS_ UINT16 uStreamNumber,
REF(INT64) llLowestTimestamp,
REF(INT64) llHighestTimestamp,
REF(UINT32) ulNumBytes,
REF(HXBOOL) bDone) PURE;
};
// $EndPrivate.
/****************************************************************************
*
* Interface:
*
* IID_IHXSourceLatencyStats
*
* Purpose:
*
*
*
* IHXSourceLatencyStats
*
* {7A4D7872-E5A9-11D8-ABE7-000A95BEFE6C}
*
*/
DEFINE_GUID(IID_IHXSourceLatencyStats, 0x7A4D7872, 0xE5A9, 0x11D8, 0xAB, 0xE7, 0x00,
0x0A, 0x95, 0xBE, 0xFE, 0x6C);
#undef INTERFACE
#define INTERFACE IHXSourceLatencyStats
DECLARE_INTERFACE_(IHXSourceLatencyStats, IUnknown)
{
/************************************************************************
* Method:
* IHXSourceLatencyStats::SetLiveSyncOffset
* Purpose:
* set the live sync start time
*/
STDTQT_METHOD(SetLiveSyncOffset) (THIS_ UINT32 ulLiveSyncStartTime) PURE;
/************************************************************************
* Method:
* IHXSourceLatencyStats::NewPacketTimeStamp
* Purpose:
* call this for each arriving packet!
*/
STDTQT_METHOD(NewPacketTimeStamp) (THIS_ UINT32 ulDueTimeStamp) PURE;
/************************************************************************
* Method:
* IHXSourceLatencyStats::GetLatencyStats
* Purpose:
* call this for each arriving packet!
*/
STDTQT_METHOD(GetLatencyStats) (THIS_
REF(UINT32) ulAverageLatency,
REF(UINT32) ulMinimumLatency,
REF(UINT32) ulMaximumLatency ) PURE;
/************************************************************************
* Method:
* IHXSourceLatencyStats::ResetLatencyStats
* Purpose:
* call this for each arriving packet!
*/
STDTQT_METHOD(ResetLatencyStats) (THIS_ ) PURE;
};
// $Private:
/****************************************************************************
*
* Interface:
*
* IID_IHXPlayerPresentation
*
* Purpose:
*
* Control over the player's current presentation
*
* IID_IHXPlayerPresentation
*
* {6DE011A7-EF05-417b-9367-6FE0E54302D3}
*
*/
DEFINE_GUID(IID_IHXPlayerPresentation, 0x6de011a7, 0xef05, 0x417b, 0x93, 0x67, 0x6f, 0xe0, 0xe5, 0x43, 0x2, 0xd3);
#undef INTERFACE
#define INTERFACE IHXPlayerPresentation
DECLARE_INTERFACE_(IHXPlayerPresentation, IUnknown)
{
/************************************************************************
* Method:
* IHXPlayerPresentation::ClosePresentation
* Purpose:
* Call this method to close the player's current presentation. This will free
* all resources associated with the current presentation.
*/
STDTQT_METHOD(ClosePresentation) (THIS) PURE;
};
// $EndPrivate.
// $Private:
/****************************************************************************
*
* Interface:
*
* IID_IHXCoreMutex
*
* Purpose:
*
* Access the core mutex
*
* IID_IHXCoreMutex
*
* {6DE011A7-EF05-417b-9367-6FE0E44404D4}
*
*/
DEFINE_GUID(IID_IHXCoreMutex, 0x6de011a7, 0xef05, 0x417b, 0x93, 0x67, 0x6f, 0xe0, 0xe4, 0x44, 0x4, 0xd4);
#undef INTERFACE
#define INTERFACE IHXCoreMutex
DECLARE_INTERFACE_(IHXCoreMutex, IUnknown)
{
/************************************************************************
* Method:
* IHXCoreMutex::LockCoreMutex
* Purpose:
* Call this method to lock the client engine's core mutex.
*/
STDTQT_METHOD(LockCoreMutex) (THIS) PURE;
/************************************************************************
* Method:
* IHXCoreMutex::UnlockCoreMutex
* Purpose:
* Call this method to unlock the client engine's core mutex.
*/
STDTQT_METHOD(UnlockCoreMutex) (THIS) PURE;
};
/****************************************************************************
*
* Interface:
*
* IID_IHXMacBlitMutex
*
* Purpose:
*
* Access the Mac blitting mutex
*
* Used for all Mac drawing, in both the core and the tlc. This
* mutex prevents quickdraw (and/or the image compression manager)
* from re-entering which causes crashes on OS X.
*
* IID_IHXCoreMutex
*
* {294e6de4-fbc6-4c06-bb94-95a969373b4d}
*
*/
DEFINE_GUID(IID_IHXMacBlitMutex, 0x294e6de4, 0xfbc6, 0x4c06, 0xbb, 0x94, 0x95, 0xa9, 0x69, 0x37, 0x3b, 0x4d);
#undef INTERFACE
#define INTERFACE IHXMacBlitMutex
DECLARE_INTERFACE_(IHXMacBlitMutex, IUnknown)
{
/************************************************************************
* Method:
* IHXMacBlitMutex::LockMacBlitMutex
* Purpose:
* Call this method to lock the client engine's core mutex.
*/
STDTQT_METHOD(LockMacBlitMutex) (THIS) PURE;
/************************************************************************
* Method:
* IHXMacBlitMutex::UnlockMacBlitMutex
* Purpose:
* Call this method to unlock the client engine's core mutex.
*/
STDTQT_METHOD(UnlockMacBlitMutex) (THIS) PURE;
};
// $EndPrivate.
#endif /* _HXCORE_H_ */