Purpose: | Contains streaming data packets |
Implemented by: | Packet object (RealSystem architecture) |
Used by: | File format and rendering plug-ins |
Header file: | rmapckts.h |
RealSystem components use IRMAPacket
objects to stream data between the RealServer and the RealSystem clients. A file format plug-in, for example, prepares packets that RealServer streams to the client. As well, the client's rendering plug-in can use the system's back channel to send back packets of information. The preferred implementation is to use IRMACommonClassFactory
to create the packet objects.
![]() |
Additional Information |
---|
See "Using IRMAPacket to Create Stream Packets". See also "Chapter 5: File Format Plug-In" and "Chapter 6: Rendering Plug-In". |
The IRMAPacket
interface contains the following methods:
IRMAPacket::Get
IRMAPacket::GetASMFlags
IRMAPacket::GetASMRuleNumber
IRMAPacket::GetBuffer
IRMAPacket::GetStreamNumber
IRMAPacket::GetTime
IRMAPacket::IsLost
IRMAPacket::Set
IRMAPacket::SetAsLost
As with all COM interfaces, the IRMAPacket
interface inherits the following IUnknown
methods:
Retrieves the values from the packet all at one time.
STDMETHOD(Get) (
THIS_
REF(IRMABuffer*) pBuffer,
REF(UINT32) ulTime,
REF(UINT16) unStreamNumber,
REF(UINT8) unASMFlags,
REF(UINT16) unASMRuleNumber
) PURE;
IRMABuffer
interface that manages the packet data.
![]() |
Additional Information |
---|
See "Chapter 11: Adaptive Stream Management". |
Returns the ASM flags. The ASM flags can be either RMA_ASM_SWITCH_ON or RMA_ASM_SWITCH_OFF.
STDMETHOD_(UINT8,GetASMFlags) (
THIS
) PURE;
![]() |
Additional Information |
---|
See "Chapter 11: Adaptive Stream Management". |
STDMETHOD_(UINT16,GetASMRuleNumber) (
THIS
) PURE;
![]() |
Additional Information |
---|
See "Chapter 11: Adaptive Stream Management". |
Returns an IRMABuffer
interface that manages the packet data.
STDMETHOD_(IRMABuffer*,GetBuffer) (
THIS
) PURE;
STDMETHOD_(UINT16,GetStreamNumber) (
THIS
) PURE;
Returns the time in milliseconds.
STDMETHOD_(ULONG32,GetTime) (
THIS
) PURE;
Indicates whether the packet has been lost. If the return value is TRUE
, the packet has been lost. If the packet is lost, none of the values of the packet have any meaning.
STDMETHOD_(BOOL,IsLost) (
THIS
) PURE;
Sets the values of the packet. This method only succeeds if there is just one reference to the packet. This method cannot be used to change the values of the packet once more than one component has a reference to that packet.
STDMETHOD(Set) (
THIS_
IRMABuffer* pBuffer,
UINT32 ulTime,
UINT16 uStreamNumber,
UINT8 unASMFlags,
UINT16 unASMRuleNumber
) PURE;
IRMABuffer
interface that manages the packet data.
![]() |
Additional Information |
---|
See "Chapter 11: Adaptive Stream Management". |
Marks a packet as lost. If the packet is lost, this method is called instead of IRMAPacket::Set
. This method fails if the IRMABuffer
of the packet is not NULL.
STDMETHOD(SetAsLost) (
THIS
) PURE;
Purpose: | Sets the packet format |
Implemented by: | File format plug-ins |
Used by: | RealServer |
Header file: | rmaformt.h |
A file format plug-in implements this interface to support packet formats in addition to Real Data Transport (RDT) and PNA. RealServer uses this interface to determine which packet formats, such as RTP, the plug-in supports. It then tells the plug-in which format to use. If the plug-in does not implement IRMAPacketFormat
, RealServer assumes that the plug-in supports only the RDT and PNA packet formats.
![]() |
Additional Information |
---|
See "Supporting Multiple Packet Formats". |
The IRMAPacketFormat
interface contains the following methods:
As with all COM interfaces, the IRMAPacketFormat
interface inherits the following IUnknown
methods:
Determines the supported packet formats.
STDMETHOD(GetSupportedPacketFormats) (
THIS_
REF(const char**) pFormats
) PURE;
Sets the packet format for the plug-in to use.
STDMETHOD(SetPacketFormat) (
THIS_
const char* pFormat
) PURE;
Purpose: | Provides presentation recording information |
Implemented by: | top-level client |
Used by: | Client core |
Header file: | rmaphook.h |
The packet hook interfaces support the client recording feature, which lets the end user record a presentation in a single container datatype file on the client machine. The client core uses the IRMAPacketHook
interface to send the top-level client packets to be recorded in the file. The top-level client is then responsible for creating the file in a container format. The top-level client instructs the core to start the recording through IRMAPacketHookManager
.
![]() |
Additional Information |
---|
See "Recording a Presentation". |
The IRMAPacketHook
interface contains the following methods:
IRMAPacketHook::OnEnd
IRMAPacketHook::OnFileHeader
IRMAPacketHook::OnPacket
IRMAPacketHook::OnStart
IRMAPacketHook::OnStreamHeader
As with all COM interfaces, the IRMAPacketHook
interface inherits the following IUnknown
methods:
Indicates the end of this packet hook session.
STDMETHOD(OnEnd) (
THIS
) PURE;
Sends the file header information.
STDMETHOD(OnFileHeader) (
THIS_
IRMAValues* pValues
) PURE;
IRMAValues
interface that manages the file header information.
STDMETHOD(OnPacket) (
THIS_
IRMAPacket* pPacket
) PURE;
IRMAPacket
interface that manages the packet information.
Indicates the start of this packet hook session.
STDMETHOD(OnStart) (
THIS
) PURE;
Sends the stream header information.
STDMETHOD(OnStreamHeader) (
THIS_
IRMAValues* pValues
) PURE;
IRMAValues
interface that manages the stream header information.
Purpose: | Directs rendering plug-ins to send presentation data to the client core for recording |
Implemented by: | Rendering plug-ins |
Used by: | Client core |
Header file: | rmaphook.h |
To support the client recording feature, rendering plug-ins for each stream of the recorded presentation must implement this interface. The client core uses this interface to instruct the plug-ins to send it packets for recording. The renderers then manipulate the stream data as necessary (typically altering the timeline) and send IRMAPacket
objects back to the client core through IRMAPacketHookHelperResponse
.
![]() |
Additional Information |
---|
See "Chapter 6: Rendering Plug-In". |
The IRMAPacketHookHelper
interface contains the following methods:
As with all COM interfaces, the IRMAPacketHookHelper
interface inherits the following IUnknown
methods:
Tells the renderer to start sending the record packets.
STDMETHOD(StartHook) (
THIS_
ULONG32 ulStreamNumber,
ULONG32 ulTimeOffset,
IRMAPacketHookHelperResponse* pPacketHookHelperResponse
) PURE;
pPacketHookHelperResponse
. If you are recording a file, the timestamp starts at 0. However, if you are recording a live stream, the timestamp does not start from 0. Therefore, this parameter provides the offset.
IRMAPacketHookHelperResponse
interface that manages the packets received from the rendering plug-in.
Tells the renderer to stop sending the record packets.
STDMETHOD(StopHook) (
THIS
) PURE;
Purpose: | Provides presentation data to client core for recording |
Implemented by: | Client core |
Used by: | Rendering plug-ins |
Header file: | rmacore.h |
The client core implements this interface to receive packets for recording from the rendering plug-ins. It uses IRMAPacketHookHelper
to instruct the plug-ins to send it the packets.
![]() |
Additional Information |
---|
See "Chapter 6: Rendering Plug-In". |
The IRMAPacketHookHelperResponse
interface contains the following methods:
As with all COM interfaces, the IRMAPacketHookHelperResponse
interface inherits the following IUnknown
methods:
Indicates the end of this stream.
STDMETHOD(OnEndOfPackets) (
THIS
) PURE;
Passes the packet to the client core for recording.
STDMETHOD(OnPacket) (
THIS_
IRMAPacket* pPacket
) PURE;
IRMAPacket
interface that manages the packet to be recorded.
Purpose: | Directs the client core to start or stop recording a presentation |
Implemented by: | Client core |
Used by: | top-level client |
Header file: | rmacore.h |
When it needs to record a presentation, the top-level client uses this interface to instruct the client core to begin recording. The core then receives IRMAPacket
objects from renderers through its IRMAPacketHookHelperResponse
interface. It next passes these packets to the top-level client through IRMAPacketHook
.
![]() |
Additional Information |
---|
See "Recording a Presentation". |
The IRMAPacketHookManager
interface contains the following methods:
IRMAPacketHookManager::CloseHook
IRMAPacketHookManager::InitHook
IRMAPacketHookManager::StartHook
IRMAPacketHookManager::StopHook
As with all COM interfaces, the IRMAPacketHookManager
interface inherits the following IUnknown
methods:
STDMETHOD(CloseHook) (
THIS
) PURE;
Initializes a packet hook interface to send the top-level client packets to be recorded.
STDMETHOD(InitHook) (
THIS_
IRMAPacketHook* pPacketHook
) PURE;
IRMAPacketHook
interface that manages the packets to be recorded.
STDMETHOD(StartHook) (
THIS
) PURE;
STDMETHOD(StopHook) (
THIS
) PURE;
Purpose: | Changes a packet's timestamp |
Implemented by: | File format plug-ins, renderers |
Used by: | Server, SLTA |
Header file: | rmaformt.h |
There are times when an IRMAPacket
is received from a file format plug-in and the timestamp needs to be modified. This interface can be queried from any IRMAFileFormatObject
interface that represents datatypes whose internal data is dependent on the time stamp. This interface is typically used by applications that need to shift a stream in time, like an SLTA that makes multiple static files look like a single line stream. The response interface is IRMAPacketTimeOffsetHandlerResponse
.
The IRMAPacketTimeOffsetHandler
interface contains the following methods:
IRMAPacketTimeOffsetHandler::HandlePacket
IRMAPacketTimeOffsetHandler::Init
IRMAPacketTimeOffsetHandler::SetTimeOffset
As with all COM interfaces, the IRMAPacketTimeOffsetHandler
interface inherits the following IUnknown
methods:
Provides a packet to modify for the time offset.
STDMETHOD(HandlePacket) (
THIS_
IRMAPacket* pPacket
) PURE;
IRMAPacket
interface that manages the packet to modify for the time offset.
Initializes the packet time offset handler and sets the response. If the plug-in supports multiple data types, implementors should look up the MIME type in the pHeader to determine what data type is being used here.
STDMETHOD(Init) (
THIS_
IRMAPacketTimeOffsetHandlerResponse* pResponse,
IRMAValues* pHeader,
IUnknown* pContext
) PURE;
IRMAPacketTimeOffsetHandlerResponse
interface that manages the response to this interface.
IRMAValues
interface that manages the stream header for the streams to be offset.
IUnknown
interface that provides access to other interfaces the plug-in might need.
STDMETHOD(SetTimeOffset) (
THIS_
UINT32 ulTimeOffset,
BOOL bPlus
) PURE;
TRUE
, adds the amount of time specified in ulTimeOffset
to the packet timestamp. If FALSE, subtracts the amount of time specified in ulTimeOffset
from the packet timestamp.
Purpose: | Returns packets passed in the IRMAPacketTimeOffsetHandler interface |
Implemented by: | Server, SLTA |
Used by: | File format plug-ins, renderers |
Header file: | rmaformt.h |
The return interface through which the time offset handler returns packets with offset time stamps.
The IRMAPacketTimeOffsetHandlerResponse
interface contains the IRMAPacketTimeOffsetHandlerResponse::PacketReady
method.
As with all COM interfaces, the IRMAPacketTimeOffsetHandlerResponse
interface inherits the following IUnknown
methods:
Passes back the packet after the packet's timestamp has been offset correctly.
STDMETHOD(TimeOffsetPacketReady) (
THIS_
IRMAPacket* pPacket
) PURE;
IRMAPacket
interface that manages the packet whose timestamp is being adjusted.
Purpose: | Provides more than one site watcher |
Implemented by: | Plug-ins |
Used by: | IRMASite implementations |
Header file: | rmasite2.h |
Usually the top-level client is the site watcher and manages site position and size. If a plug-in needs to know about the when the site's size and position changes, it can watch for the change using this interface. However, the plug-in cannot override the changes, only passively watch them.
The IRMAPassiveSiteWatcher
interface contains the following methods:
As with all COM interfaces, the IRMAPassiveSiteWatcher
interface inherits the following IUnknown
methods:
Indicates that a position change has occurred.
STDMETHOD(PositionChanged) (
THIS_
PNxPoint* pPoint
) PURE;
PNxPoint
structure that describes the new position.
Indicates that a size change has occurred.
STDMETHOD(SizeChanged) (
THIS_
PNxSize* pSize
) PURE;
PNxSize
structure that describes the new size.
Purpose: | Encrypts and verifies passwords |
Implemented by: | RealSystem architecture |
Used by: | RealSystem client |
Header file: | rmaauth.h |
Used with authentication, this interface gives the RealSystem client the means to encrypt passwords for transmission to RealServer.
![]() |
Additional Information |
---|
See "Chapter 19: Authentication". |
The IRMAPassword
interface contains the following methods:
IRMAPassword::AsString
IRMAPassword::AsValues
IRMAPassword::CreateBuffer
IRMAPassword::CreateValues
IRMAPassword::Crypt
IRMAPassword::Verify
As with all COM interfaces, the IRMAPassword
interface inherits the following IUnknown
methods:
Returns a string that summerizes the authentication information. The contents of the returned string depend on the value of the AuthType
key that is provided in the pAuth
parameter.
STDMETHOD(AsString) (
THIS_
IRMAValues* pAuth,
REF(IRMABuffer*) pBuffer
) PURE;
IRMAValues
interface that manages the authorization type. This parameter contains a set of key/value pairs from which the authorization type is retrieved. The value of the authorization type can be:
IRMABuffer
interface that manages the string that contains the authorization summary.
Takes a string and parses the string into an IRMAValues
map, decrypting fields if necessary.
STDMETHOD(AsValues) (
THIS_
const char* str,
IRMAValues* pValues
) PURE;
IRMAValues
interface to which the indicated string is parsed.
Returns a buffer that can be passed into IRMAPassword::AsString
. This method is provided for the convenince of external users, who would otherwise have to get a context and common class factory just to create IRMABuffer
interfaces. This method can be used instead, but is not advisable if other means are available.
STDMETHOD(CreateBuffer) (
THIS_
REF(IRMABuffer*) pBuffer
) PURE;
IRMABuffer
interface that manages the string information.
Returns a set of values that can be passed into IRMAPassword::AsValues
. This method is provided for the convenince of external users, who would otherwise have to get a context and common class factory just to create IRMAValues
interfaces. This method can be used instead, but is not advisable if other means are available.
STDMETHOD(CreateValues) (
THIS_
REF(IRMAValues*) pValues
) PURE;
IRMAValues
interface that manages the values.
Information not yet available at publication.
STDMETHOD(Crypt) (
THIS_
IRMAValues* pAuthentication
) PURE;
Information not yet available at publication.
STDMETHOD(Verify) (
THIS_
IRMAValues* pAuth1,
IRMAValues* pAuth2
) PURE;
Purpose: | Reports the status of pending operations to the RealSystem client |
Implemented by: | File format and file system plug-ins |
Used by: | RealSystem Client |
Header file: | rmapends.h |
File format and file system plug-ins can implement this interface to inform the RealSystem client of their pending operations. Operations include initializing, buffering data, contacting host, and ready. To learn the component's status, the client calls IRMAPendingStatus::GetStatus
.
![]() |
Additional Information |
---|
See "Reporting Pending Status". |
The IRMAPendingStatus
interface contains the IRMAPendingStatus::GetStatus
method.
As with all COM interfaces, the IRMAPendingStatus
interface inherits the following IUnknown
methods:
Gets the current pending status from an object.
STDMETHOD(GetStatus) (
THIS_
REF(UINT16) uStatusCode,
REF(IRMABuffer*) pStatusDesc,
REF(UINT16) ulPercentDone
) PURE;
IRMABuffer
interface that manages a text description of the current status. This buffer might contain, for example, the address of a host being contacted.
Purpose: | Controls presentation playback |
Implemented by: | Player object (Client core) |
Used by: | top-level client and rendering plug-ins |
Header file: | rmacore.h |
This interface for the player object lets the top-level client or rendering plug-in control the presentation playback by beginning, pausing, stopping, or seeking in a presentation timeline. Through this interface, the client or rendering plug-in can also gain access to the client engine, stream objects, and stream source objects.
![]() |
Additional Information |
---|
See "Using a Player Object". See also IRMAClientEngine , IRMAStream , and
IRMAStreamSource .
|
The IRMAPlayer
interface contains the following methods:
IRMAPlayer::AddAdviseSink
IRMAPlayer::Begin
IRMAPlayer::GetClientContext
IRMAPlayer::GetClientEngine
IRMAPlayer::GetCurrentPlayTime
IRMAPlayer::GetSource
IRMAPlayer::GetSourceCount
IRMAPlayer::IsDone
IRMAPlayer::IsLive
IRMAPlayer::OpenURL
IRMAPlayer::Pause
IRMAPlayer::RemoveAdviseSink
IRMAPlayer::Seek
IRMAPlayer::SetClientContext
IRMAPlayer::Stop
As with all COM interfaces, the IRMAPlayer
interface inherits the following IUnknown
methods:
STDMETHOD(AddAdviseSink) (
THIS_
IRMAClientAdviseSink* pAdviseSink
) PURE;
IRMAClientAdviseSink
interface that is being added.
Tells the player to begin playback of all its sources.
STDMETHOD(Begin) (
THIS
) PURE;
Gets the client context for this player.
STDMETHOD(GetClientContext) (
THIS_
REF(IUnknown*) pUnknown
) PURE;
Gets the client engine interface of which the player is a part.
STDMETHOD(GetClientEngine) (
THIS_
REF(IRMAClientEngine*) pEngine
) PURE;
IRMAClientEngine
interface of which the player is a part.
Gets the current time on the player time line, in milliseconds.
STDMETHOD_(ULONG32,GetCurrentPlayTime) (
THIS
) PURE;
Returns the indicated stream source instance (IRMAStreamSource
) supported by this player.
STDMETHOD(GetSource) (
THIS_
UINT16 nIndex,
REF(IUnknown*) pUnknown
) PURE;
Returns the current number of stream source instances supported by this player instance.
STDMETHOD_(UINT16, GetSourceCount) (
THIS
) PURE;
Indicates whether the player is done with the current presentation. If this method returns TRUE
, the player is done.
STDMETHOD_(BOOL,IsDone) (
THIS
) PURE;
Indicates whether the player contains the live source. If this method returns TRUE
, the player contains the live source.
STDMETHOD_(BOOL,IsLive) (
THIS
) PURE;
STDMETHOD(OpenURL) (
THIS_
const char* pURL
) PURE;
Tells the player to pause playback of all its sources.
STDMETHOD(Pause) (
THIS
) PURE;
STDMETHOD(RemoveAdviseSink) (
THIS_
IRMAClientAdviseSink* pAdviseSink
) PURE;
IRMAClientAdviseSink
interface to be removed.
Tells the player to seek in the playback time line of all its sources.
STDMETHOD(Seek) (
THIS_
ULONG32 ulTime
) PURE;
Installs the client as the provider of client services to the core. This method is traditionally called by the top-level client application.
STDMETHOD(SetClientContext) (
THIS_
IUnknown* pUnknown
) PURE;
Tells the player to stop playback of all its sources.
STDMETHOD(Stop) (
THIS
) PURE;
Purpose: | Controls presentation playback |
Implemented by: | Player object (Client core) |
Used by: | top-level client and rendering plug-ins |
Header file: | rmacore.h |
This interface for the player object lets the top-level client or rendering plug-in control the presentation playback by managing specified request interfaces and the minimum preroll. The methods in this interface are provided as an addition to the IRMAPlayer
interface.
![]() |
Additional Information |
---|
See "Chapter 6: Rendering Plug-In" and "Chapter 20: Top-Level Client".
See also IRMAPlayer.
|
The IRMAPlayer2
interface contains the following methods:
IRMAPlayer2::GetMinimumPreroll
IRMAPlayer2::GetRequest
IRMAPlayer2::OpenRequest
IRMAPlayer2::SetMinimumPreroll
As with all COM interfaces, the IRMAPlayer2
interface inherits the following IUnknown
methods:
Gets the minimum preroll of this clip.
STDMETHOD(GetMinimumPreroll) (
THIS_
REF(UINT32) ulMinPreroll
) PURE;
Gets the specified IRMARequest
interface so the user can get such information as MIME type, a requested URL, and so on.
STDMETHOD(GetRequest) (
THIS_
REF(IRMARequest*) pRequest
) PURE;
IRMARequest
interface.
Opens the specified IRMARequest
interface.
STDMETHOD(OpenRequest) (
THIS_
IRMARequest* pRequest
) PURE;
IRMARequest
interface to be opened.
Sets the minimum preroll of this clip.
STDMETHOD(SetMinimumPreroll) (
THIS_
UINT32 ulMinPreroll
) PURE;
Purpose: | Responds to events in the life of a player. |
Implemented by: | Allowance plug-ins |
Used by: | Server core |
Header file: | rmaallow.h |
This interface's methods are called in response to events in the life of a player. For example, the IRMAPlayerConnectionAdviseSink::OnConnection
method is called when a new player connects to the server.
![]() |
Additional Information |
---|
See "Chapter 10: Allowance Plug-in". |
The IRMAPlayerConnectionAdviseSink
interface contains the following methods:
IRMAPlayerConnectionAdviseSink::OnBegin
IRMAPlayerConnectionAdviseSink::OnConnection
IRMAPlayerConnectionAdviseSink::OnDone
IRMAPlayerConnectionAdviseSink::OnPause
IRMAPlayerConnectionAdviseSink::OnStop
IRMAPlayerConnectionAdviseSink::OnURL
IRMAPlayerConnectionAdviseSink::SetPlayerController
IRMAPlayerConnectionAdviseSink::SetRegistryID
As with all COM interfaces, the IRMAPlayerConnectionAdviseSink
interface inherits the following IUnknown
methods:
Indicates the client has started or resumed. This method is called while the client is connected to the server.
STDMETHOD(OnBegin) (
THIS
) PURE;
Indicates a new player has connected to the server. If the result is PNR_OK
, then the plug-in is notified when certain events occur in the player's life cycle. This method is called when a client first connects to the server.
STDMETHOD(OnConnection) (
THIS_
IRMAPlayerConnectionResponse* pResponse
) PURE;
IRMAPlayerConnectionResponse
interface that manages the response to various methods in this interface.
Indicates that the client has disconnected from the server.
STDMETHOD(OnDone) (
THIS
) PURE;
Indicates the playback has paused. This method is called while the client is connected to the server.
STDMETHOD(OnPause) (
THIS
) PURE;
Indicates the playback has stopped. This method is called while the client is connected to the server.
STDMETHOD(OnStop) (
THIS
) PURE;
Indicates the client is requesting a URL. This method is called when a client first connects to the server.
STDMETHOD(OnURL) (THIS_
IRMARequest* pRequest
) PURE;
IRMARequest
interface that manages the URL name and headers.
Provides an interface that can stop, alert, redirect, or otherwise control the client. This method is called when the client first connects to the server.
STDMETHOD(SetPlayerController) (
THIS_
IRMAPlayerController* pPlayerController
) PURE;
IRMAPlayerController
interface that controls the client.
Provides the plug-in with the identification of this client in the server registry. The plug-in can then use this identification to find out information about the connected client. This method is called when a client first connects to the server.
STDMETHOD(SetRegistryID) (
THIS_
UINT32 ulPlayerRegistryID
) PURE;
Purpose: | Manages the creation of IRMAPlayerConnectionAdviseSink objects. |
Implemented by: | Server core |
Used by: | Allowance plug-ins |
Header file: | rmaallow.h |
This interface manages the creation of IRMAPlayerConnectionAdviseSink
objects.
![]() |
Additional Information |
---|
See "Chapter 10: Allowance Plug-in". |
The IRMAPlayerConnectionAdviseSinkManager
interface contains the IRMAPlayerConnectionAdviseSinkManager::CreatePlayerConnectionAdviseSink
method.
As with all COM interfaces, the IRMAPlayerConnectionAdviseSinkManager
interface inherits the following IUnknown
methods:
Creates a player connection advise sink interface.
STDMETHOD(CreatePlayerConnectionAdviseSink) (
THIS_
REF(IRMAPlayerConnectionAdviseSink*) pPCAdviseSink
) PURE;
IRMAPlayerConnectionAdviseSink
interface that was created.
Purpose: | Permits an allowance plug-in to communicate with the server when the plug-in is finished with a notification. |
Implemented by: | Server core |
Used by: | Allowance plug-ins |
Header file: | rmaallow.h |
This interface permits an allowance plug-in to tell the server when the plug-in is finished with a particular IRMAPlayerConnectionAdviseSink
notification.
![]() |
Additional Information |
---|
See "Chapter 10: Allowance Plug-in". |
The IRMAPlayerConnectionResponse
interface contains the following methods:
IRMAPlayerConnectionResponse::OnBeginDone
IRMAPlayerConnectionResponse::OnConnectionDone
IRMAPlayerConnectionResponse::OnPauseDone
IRMAPlayerConnectionResponse::OnStopDone
IRMAPlayerConnectionResponse::OnURLDone
As with all COM interfaces, the IRMAPlayerConnectionResponse
interface inherits the following IUnknown
methods:
Contains the response to the IRMAPlayerConnectionAdviseSink::OnBegin
method and indicates that the original call has completed.
STDMETHOD(OnBeginDone) (
THIS_
PN_RESULT status
) PURE;
PNR_OK
, the call to IRMAPlayerConnectionAdviseSink::OnBegin
completed successfully.
Contains the response to the IRMAPlayerConnectionAdviseSink::OnConnection
method and indicates that the original call has completed.
STDMETHOD(OnConnectionDone) (
THIS_
PN_RESULT status
) PURE;
PNR_OK
, the call to IRMAPlayerConnectionAdviseSink::OnConnection
completed successfully.
Contains the response to the IRMAPlayerConnectionAdviseSink::OnPause
method and indicates that the original call has completed.
STDMETHOD(OnPauseDone) (
THIS_
PN_RESULT status
) PURE;
PNR_OK
, the call to IRMAPlayerConnectionAdviseSink::OnPause
completed successfully.
Contains the response to the IRMAPlayerConnectionAdviseSink::OnStop
method and indicates that the original call has completed.
STDMETHOD(OnStopDone) (
THIS_
PN_RESULT status
) PURE;
PNR_OK
, the call to IRMAPlayerConnectionAdviseSink::OnStop
completed successfully.
Contains the response to the IRMAPlayerConnectionAdviseSink::OnURL
method and indicates that the original call has completed.
STDMETHOD(OnURLDone) (
THIS_
PN_RESULT status
) PURE;
PNR_OK
, the call to IRMAPlayerConnectionAdviseSink::OnURL
completed successfully.
Purpose: | Controls a player |
Implemented by: | Server core |
Used by: | Allowance plug-ins |
Header file: | rmaallow.h |
This interface permits an allowance plug-in to control a player by directing the server to alert, redirect, or disconnect the player.
![]() |
Additional Information |
---|
See "Chapter 10: Allowance Plug-in". |
The IRMAPlayerController
interface contains the following methods:
IRMAPlayerController::AlertAndDisconnect
IRMAPlayerController::Disconnect
IRMAPlayerController::HostRedirect
IRMAPlayerController::NetworkRedirect
IRMAPlayerController::Pause
IRMAPlayerController::Redirect
IRMAPlayerController::Resume
As with all COM interfaces, the IRMAPlayerController
interface inherits the following IUnknown
methods:
Displays a message on the player and disconnects the player.
STDMETHOD(AlertAndDisconnect) (
THIS_
IRMABuffer* pAlert
) PURE;
IRMABuffer
interface that manages the message to display on the player.
STDMETHOD(Disconnect) (
THIS
) PURE;
Redirects this player to another host and/or port, for the same URL. This method works with both RTSP and PNA protocols.
STDMETHOD(HostRedirect) (
THIS_
IRMABuffer* pHost,
UINT16 nPort
) PURE;
IRMABuffer
interface that manages the host name to which this player is redirected.
Redirects this player to another URL. This method is only redirects an RTSP player connection to another RTSP URL.
STDMETHOD(NetworkRedirect) (
THIS_
IRMABuffer* pURL,
UINT32 ulSecsFromNow
) PURE;
IRMABuffer
interface that manages the URL to which this player is redirected.
STDMETHOD(Pause) (
THIS
) PURE;
Redirects this player to another URL on the same server. For example, if pPartialURL
were set to "welcome.rm", the player would be redirected to "current_protocol://current_host:current_port/welcome.rm". This method works with both RTSP and PNA protocols.
STDMETHOD(Redirect) (
THIS_
IRMABuffer* pPartialURL
) PURE;
IRMABuffer
interface that manages the partial URL.
STDMETHOD(Resume) (
THIS
) PURE;
Purpose: | Provides notification of player creation and destruction |
Implemented by: | Plug-in components |
Used by: | Plug-in components |
Header file: | rmapsink.h |
A plug-in implements this interface to get notifications of player creation and destruction. It should use IRMAPlayerSinkControl
, implemented by the RealSystem client, to add itself as a sink.
The IRMAPlayerCreationSink
interface contains the following methods:
As with all COM interfaces, the IRMAPlayerCreationSink
interface inherits the following IUnknown
methods:
Indicates that an existing player was closed.
STDMETHOD(PlayerClosed) (
THIS_
IRMAPlayer* pPlayer
) PURE;
IRMAPlayer
interface that managed the player that was closed.
Indicates that a new player was created.
STDMETHOD(PlayerCreated) (
THIS_
IRMAPlayer* pPlayer
) PURE;
IRMAPlayer
interface that manages the new player.
Purpose: | Adds sinks to get notifications of player creation and destruction |
Implemented by: | RealSystem client |
Used by: | Plug-in components |
Header file: | rmapsink.h |
A plug-in that needs to be notified of player creation and destruction should query for this interface from the context passed in IRMAPlugin::InitPlugin
and add themselves as an IRMAPlayerCreationSink
.
The IRMAPlayerSinkControl
interface contains the following methods:
As with all COM interfaces, the IRMAPlayerSinkControl
interface inherits the following IUnknown
methods:
Adds a new player creation sink that is to be notified of player creation and destruction.
STDMETHOD(AddSink) (
THIS_
IRMAPlayerCreationSink* pSink
) PURE;
IRMAPlayerCreationSink
interface that manages the new sink.
Removes an exisitng player creation sink.
STDMETHOD(RemoveSink) (
THIS_
IRMAPlayerCreationSink* pSink
) PURE;
IRMAPlayerCreationSink
interface that manages the sink to remove.
Purpose: | Provides plug-in characteristics |
Implemented by: | All plug-ins |
Used by: | RealServer and RealSystem Client |
Header file: | rmaplugn.h |
Every plug-in must implement IRMAPlugin
. On startup, RealServer or the client uses the IRMAPlugin::GetPluginInfo
method to determine each of its plug-in's characteristics. A "C-style" entry point in a plug-in, RMACreateInstance
, exposes this interface.
![]() |
Additional Information |
---|
Refer to "Creating a Plug-In Instance" for more on this entry point. |
The IRMAPlugin
interface contains the following methods:
As with all COM interfaces, the IRMAPlugin
interface inherits the following IUnknown
methods:
Returns the basic information about this plug-in. Most of this information is used in the About box of the user interface. This method is called when the RMA core application is launched.
STDMETHOD(GetPluginInfo) (
THIS_
REF(BOOL) bMultipleLoad,
REF(const char*) pDescription,
REF(const char*) pCopyright,
REF(const char*) pMoreInfoURL,
REF(ULONG32) ulVersionNumber
) PURE;
TRUE
. The only other type of plug-in that can specify this parameter as TRUE
is a filesystem plug-in. Any plug-in that sets this parameter to TRUE
must not use global variables of any type.
TRUE
implies that you accept that your plug-in may be instantiated multiple times (possibly in different address spaces). Plug-ins are instantiated multiple times only in the server (for performance reasons).
Initializes the plug-in for use. This method must always be called before any other method is called. This method is primarily needed so the plug-in can have access to the context for creation of IRMABuffer
interfaces and IMalloc
.
STDMETHOD(InitPlugin) (
THIS_
IUnknown* pContext
) PURE;
IUnknown
interface that provides the plug-in with access to other useful interfaces.
Purpose: | Provides for the discovery of plug-ins |
Implemented by: | Client core |
Used by: | Client core, file format plug-ins, renderers |
Header file: | rmaplugn.h |
This interface lets you find plug-ins based on a description of functionality. Upon calling IRMAPlugin2Hander::Init
, the plug-in handler should scan a given directory (this particular implementation scans the directory specified in DT_Plugins)
for all DLLs that export an RMACreateInstance
. The DLLs that export this interface are termed "plugins." Those plug-ins will then be queried for a number of parameters, and those parameters will be stored. Later, components of the system can then ask the plug-in handler for "plugins" that fit a particular description (for example, find a file system that supports the "file:" protocol).
The IRMAPlugin2Handler
interface contains the following methods:
IRMAPlugin2Handler::Close
IRMAPlugin2Handler::FindImplementationFromClassID
IRMAPlugin2Handler::FindIndexUsingStrings
IRMAPlugin2Handler::FindIndexUsingValues
IRMAPlugin2Handler::FindPluginUsingStrings
IRMAPlugin2Handler::FindPluginUsingValues
IRMAPlugin2Handler::FlushCache
IRMAPlugin2Handler::GetInstance
IRMAPlugin2Handler::GetNumPlugins2
IRMAPlugin2Handler::GetPluginInfo
IRMAPlugin2Handler::Init
IRMAPlugin2Handler::SetCacheSize
IRMAPlugin2Handler::SetRequiredPlugins
As with all COM interfaces, the IRMAPlugin2Handler
interface inherits the following IUnknown
methods:
Unloads all DLLs that are not being used. Returns PNR_FAIL
if there are still plug-ins active in the system. This method is currently not implemented.
STDMETHOD(Close) (
THIS
) PURE;
Scans all plug-ins that support the IRMACommonClassFactory
interface and determines which, if any, support the creation of the GUID specified in GUIDClassID
, and return an instance of this class.
STDMETHOD(FindImplementationFromClassID) (
THIS_
REFGUID GUIDClassID,
REF(IUnknown*) pIUnknownInstance
) PURE;
Finds a plug-in that matches the given list of criteria. An index is returned that can be used to either get more information about the plug-in (using IRMAPlugin2Handler::GetPluginInfo
) or create an instance using IRMAPlugin2Handler::GetInstance
. For example:
UINT32 index
pPluginhandler->FindIndexUsingStrings("PluginType", "PLUGIN_FILE_SYSTEM", "FileProtocol",
"file", NULL, NULL, index);
causes the system to find a plug-in that is a file system that supports the file:
protocol, and the index of that plug-in (probably smplfsys
) is returned in the index.
![]() |
Note |
---|
A maximum of three values can be given. |
STDMETHOD(FindIndexUsingStrings) (
THIS_
char* PropName1,
char* PropVal1,
char* PropName2,
char* PropVal2,
char* PropName3,
char* PropVal3,
REF(UINT32) unIndex
) PURE;
Finds a plug-in that matches a given list of values. An index is returned that can be used to either get the values (using IRMAPlugin2Handler::GetPluginInfo
) or create an instance using IRMAPlugin2Handler::GetInstance
. The IRMAPlugin2Handler::FindIndexUsingStrings
method only provides slots for three property strings. Using this method, you can include as many strings as you need using an IRMAValues
interface to allow for more exacting searches.
STDMETHOD(FindIndexUsingValues) (
THIS_
IRMAValues* pValue,
REF(UINT32) unIndex
) PURE;
IRMAValues
interface that manages the values of the plug-in you want to find.
Finds a plug-in that matches the given set of values.
![]() |
Note |
---|
A maximum of three values can be given. |
STDMETHOD(FindPluginUsingStrings) (
THIS_
char* PropName1,
char* PropVal1,
char* PropName2,
char* PropVal2,
char* PropName3,
char* PropVal3,
REF(IUnknown*) pUnk
) PURE;
Finds a plug-in that matches the given set of values.
STDMETHOD(FindPluginUsingValues) (
THIS_
IRMAValues* pValue,
REF(IUnknown*) pUnk
) PURE;
IRMAValues
interface that manages the values to match.
Flushes the Least Recently Used (LRU) cache, which unloads all DLLs from memory that currently have a reference count of zero.
STDMETHOD(FlushCache) (
THIS
) PURE;
Returns a plug-in instance given a plug-in index.
STDMETHOD(GetInstance) (
THIS_
UINT32 index,
REF(IUnknown*) pUnknown
) PURE;
Returns the number of plug-ins.
STDMETHOD_(ULONG32,GetNumOfPlugins2) (
THIS
) PURE;
Gets the information about the specified plug-in.
STDMETHOD(GetPluginInfo) (
THIS_
UINT32 unIndex,
REF(IRMAValues*) Values
) PURE;
IRMAValues
interface that manages the plug-in information. The information is stored as name and value pairs. For plug-ins that implement the IRMAGenericPlugin
interface, this information is determined completely by the implementor.
Initializes the plug-in handler.
STDMETHOD(Init) (
THIS_
IUnknown* pContext
) PURE;
Sets the size of the cache. The cache is initally set to 1,000 KB. To disable the cache, set the size to 0. If the cache is disabled, a DLL will be unloaded whenever its reference count becomes zero (which might cause performance problems).
STDMETHOD(SetCacheSize) (
THIS_
ULONG32 nSizeKB
) PURE;
Sets the required plug-in list. This information is used by the server; those plug-ins specified as "required plug-ins" must be present in their original form for the server to function.
STDMETHOD(SetRequiredPlugins) (
THIS_
const char** ppszRequiredPlugins
) PURE;
Purpose: | Enumerates and returns plug-in instances |
Implemented by: | Client core |
Used by: | top-level client |
Header file: | rmaplugn.h |
A top-level client can use this interface to find all plug-ins supported by the client core. It uses IRMAPluginGroupEnumerator
to find plug-ins that expose a specific interface.
![]() |
Additional Information |
---|
See "Enumerating Plug-Ins". |
The IRMAPluginEnumerator
interface contains the following methods:
As with all COM interfaces, the IRMAPluginEnumerator
interface inherits the following IUnknown
methods:
Returns the total number of available plug-ins supported by the client core.
STDMETHOD_(ULONG32,GetNumOfPlugins) (
THIS
) PURE;
Returns an instance of the plug-in.
STDMETHOD(GetPlugin) (
THIS_
ULONG32 ulIndex,
REF(IUnknown*) pPlugin
) PURE;
IUnknown
interface that identifies the instance of the plug-in object, so calls can be made to that plug-in's interfaces.
Purpose: | Provides for more than one "RMA plug-in" in a single DLL |
Implemented by: | Plug-ins |
Used by: | Client core and server |
Header file: | rmaplugn.h |
This interface provides for more than one "RMA plugin" in a single DLL. For example, a plug-in author could use this interface to have three different file format plug-ins in a single DLL.
The IRMAPluginFactory
interface contains the following methods:
As with all COM interfaces, the IRMAPluginFactory
interface inherits the following IUnknown
methods:
Returns the number of plug-ins in the DLL.
STDMETHOD_(UINT16, GetNumPlugins) (
THIS
) PURE;
Creates a new instance of the requested plug-in.
STDMETHOD(GetPlugin) (
THIS_
UINT16 uIndex,
IUnknown** pPlugin
) PURE;
IUnknown
interface that identifies the instance of the plug-in object indicated by uIndex
.
Purpose: | Enumerates and returns plug-ins supporting a certain interface |
Implemented by: | Client core |
Used by: | top-level client |
Header file: | rmaplugn.h |
A top-level client can use this interface to find all plug-ins to the client core that expose a specific interface. It uses IRMAPluginEnumerator
to find all plug-ins to the core.
![]() |
Additional Information |
---|
See "Enumerating Plug-Ins". |
The IRMAPluginGroupEnumerator
interface contains the following methods:
IRMAPluginGroupEnumerator::GetNumOfPlugins
IRMAPluginGroupEnumerator::GetPlugin
IRMAPluginGroupEnumerator::Init
As with all COM interfaces, the IRMAPluginGroupEnumerator
interface inherits the following IUnknown
methods:
Returns the number of available plug-ins that support a particular interface.
STDMETHOD_(ULONG32,GetNumOfPlugins) (
THIS
) PURE;
Creates a new instance of the requested plug-in.
STDMETHOD(GetPlugin) (
THIS_
UINT32 ulIndex,
REF(IUnknown*) pPlugin
) PURE;
IUnknown
interface that identifies the instance of the plug-in object indicated by ulIndex
.
Builds a list of plug-ins that support the specified interface. This method must be called before the other IRMAPluginGroupEnumerator
methods can be called.
STDMETHOD(Init) (
THIS_
REFIID iid
) PURE;
Purpose: | Returns the plug-in properties |
Implemented by: | Plug-ins |
Used by: | Player core, server core |
Header file: | rmaplgns.h |
This interface provides a means for plug-ins to return a list of properties that uniquely describes the plug-in to the plug-in handler.
The IRMAPluginProperties
interface contains the IRMAPluginProperties::GetProperties
method.
As with all COM interfaces, the IRMAPluginProperties
interface inherits the following IUnknown
methods:
Returns a list of properties that uniquely describes the plug-in.
STDMETHOD(GetProperties) (
THIS_
REF(IRMAValues*) pIRMAValuesProperties
) PURE
IRMAValues
interface that manages the property information.
Purpose: | Tells the client core to reload all plug-ins |
Implemented by: | Plug-in handler |
Used by: | Top-level client (upgrade) or client core |
Header file: | rmaplugn.h |
This interface lets top-level clients inform the client core to look for new plug-ins. Currently this interface is used by RealPlayer to implement auto-upgrade.
The IRMAPluginReloader
interface contains the IRMAPluginReloader::ReloadPlugins
method.
As with all COM interfaces, the IRMAPluginReloader
interface inherits the following IUnknown
methods:
Causes the client core to reload all plug-ins.
STDMETHOD(ReloadPlugins) (
THIS
) PURE;
Purpose: | Allows preference enumeration |
Implemented by: | Information not yet available at publication. |
Used by: | Information not yet available at publication. |
Header file: | rmaprefs.h |
The IRMAPreferenceEnumerator
interface contains the following methods:
IRMAPreferenceEnumerator::BeginSubPref
IRMAPreferenceEnumerator::EndSubPref
IRMAPreferenceEnumerator::GetPrefKey
IRMAPreferenceEnumerator::ReadPref
As with all COM interfaces, the IRMAPreferenceEnumerator
interface inherits the following IUnknown
methods:
Information not yet available at publication.
STDMETHOD(BeginSubPref) (
THIS_
const char* szSubPref
) PURE;
Information not yet available at publication.
STDMETHOD(EndSubPref) (
THIS
) PURE;
Information not yet available at publication.
STDMETHOD(GetPrefKey) (
THIS_
UINT32 nIndex,
REF(IRMABuffer*) pBuffer
) PURE;
Information not yet available at publication.
STDMETHOD(ReadPref) (
THIS_
const char* pPrefKey,
IRMABuffer*& pBuffer
) PURE;
Purpose: | Stores preferences in RealServer or the client registry |
Implemented by: | RealSystem architecture |
Used by: | top-level clients |
Header file: | rmaprefs.h |
The IRMAPreferences
interface contains the following methods:
As with all COM interfaces, the IRMAPreferences
interface inherits the following IUnknown
methods:
Reads a preference from the registry or configuration file.
STDMETHOD(ReadPref) (
THIS_
const char* pPrekKey,
REF(IRMABuffer*) pBuffer
) PURE;
IRMABuffer
interface that manages the value of the preference.
Writes a preference to the registry or configuration file.
STDMETHOD(WritePref) (
THIS_
const char* pPrekKey,
IRMABuffer* pBuffer
) PURE;
IRMABuffer
interface that manages the value of the preference.
Purpose: | Gives sub-preference options abilities |
Implemented by: | RealSystem architecture |
Used by: | top-level clients |
Header file: | rmaprefs.h |
The IRMAPreferences2
interface contains the following methods:
As with all COM interfaces, the IRMAPreferences2
interface inherits the following IUnknown
methods:
Reads a preference from the registry or configuration.
STDMETHOD(GetPreferenceEnumerator) (
THIS_
REF(IRMAPreferenceEnumerator*) pEnum
) PURE;
Resets the root of the preferences.
STDMETHOD(ResetRoot) (
THIS_
const char* pCompanyName,
const char* pProductName,
int nProdMajorVer,
int nProdMinorVer
) PURE;
Purpose: | Sets watches on RealServer registry properties |
Implemented by: | RealServer registry object (RealSystem architecture) |
Used by: | Monitor plug-ins |
Header file: | rmamon.h |
After creating a registry object with IRMAPNRegistry
, a monitor plug-in can set watches on RealServer registry properties with this interface. RealServer then uses IRMAPropWatchResponse
to inform the plug-in of changes to the registry properties.
![]() |
Additional Information |
---|
See "Watching Properties". See also IRMAScheduler .
|
The IRMAPropWatch
interface contains the following methods:
IRMAPropWatch::ClearWatchById
IRMAPropWatch::ClearWatchByName
IRMAPropWatch::ClearWatchOnRoot
IRMAPropWatch::Init
IRMAPropWatch::SetWatchById
IRMAPropWatch::SetWatchByName
IRMAPropWatch::SetWatchOnRoot
As with all COM interfaces, the IRMAPropWatch
interface inherits the following IUnknown
methods:
Clears a watch-point based on the property's ID.
STDMETHOD(ClearWatchById) (
THIS_
const UINT32 id
) PURE;
Clears a watch-point based on the Property's name.
STDMETHOD(ClearWatchByName) (
THIS_
const char* pName
) PURE;
Clears the watch on the root of the registry.
STDMETHOD(ClearWatchOnRoot) (
THIS
) PURE;
Initializes the response interface so the watch notifications can be sent back to the respective plug-ins.
STDMETHOD(Init) (
THIS_
IRMAPropWatchResponse* pResponse
) PURE;
IRMAPropWatchResponse
interface that manages responses to various IRMAPropWatch
methods.
Sets a watch-point on the property whose ID is specified. A notification is returned to the plug-in that set the watch-point if that particular property gets modified or deleted.
STDMETHOD_(UINT32, SetWatchById) (
THIS_
const UINT32 id
) PURE;
Sets a watch-point on the property whose name is specified. A notification is returned to the plug-in that set the watch-point if that particular property gets modified or deleted.
STDMETHOD_(UINT32, SetWatchByName) (
THIS_
const char* pName
) PURE;
Puts a watch at the highest level of the registry hierarchy. This method returns a notification to the plug-in only if properties at this level get added, modified, or deleted.
STDMETHOD_(UINT32, SetWatchOnRoot) (
THIS
) PURE;
Purpose: | Informs the monitor plug-in of RealServer registry changes |
Implemented by: | Monitor plug-in, top-level client |
Used by: | RealServer registry object (RealSystem architecture) |
Header file: | rmamon.h |
A monitor plug-in or a top-level client implements this response interface to IRMAPropWatch
to receive information about changes to monitored properties in the RealServer registry.
![]() |
Additional Information |
---|
See "Appendix F: RealServer Property Registry". |
The IRMAPropWatchResponse
interface contains the following methods:
IRMAPropWatchResponse::AddedProp
IRMAPropWatchResponse::DeletedProp
IRMAPropWatchResponse::ModifiedProp
As with all COM interfaces, the IRMAPropWatchResponse
interface inherits the following IUnknown
methods:
Responds when a new property gets added under the property on which the watch was set.
STDMETHOD(AddedProp) (
THIS_
const UINT32 id,
const RMAPropType propType,
const UINT32 ulParentID
) PURE;
Responds when a watched property gets deleted. This method returns the ID of the property just deleted and its immediate parent COMPOSITE property.
STDMETHOD(DeletedProp) (
THIS_
const UINT32 id,
const UINT32 ulParentID
) PURE;
Responds when a watched property gets modified.
STDMETHOD(ModifiedProp) (
THIS_
const UINT32 id,
const RMAPropType propType,
const UINT32 ulParentID
) PURE;