📄 rmarendr.pas
字号:
unit RmaRendr;
interface
uses
PnTypes, RmaCore, RmaPckts;
//***************************************************************************
//
// $Id: rmarendr.h,v 1.29 1999/01/29 18:32:12 hboone Exp $
//
// Copyright (C) 1995-1999 RealNetworks, Inc. All rights reserved.
//
// http://www.real.com/devzone
//
// This program contains proprietary
// information of Progressive Networks, Inc, and is licensed
// subject to restrictions on use and distribution.
//
//
// RealMedia Architecture Rendering Interfaces.
//
//
//***************************************************************************
//
// Interface:
//
// IRMARenderer
//
// Purpose:
//
// Interface implemented by all renderers. Parts of this interface are
// called by the client engine to provide data packets to the
// individual renderers.
//
// IID_IRMARenderer:
//
// {00000300-0901-11d1-8B06-00A024406D59}
//
//
const
IID_IRMARenderer: TGUID = '{00000300-0901-11d1-8B06-00A024406D59}';
{$EXTERNALSYM IID_IRMARenderer}
type
RMA_DISPLAY_TYPE = ULONG32;
{$EXTERNALSYM RMA_DISPLAY_TYPE}
const
RMA_DISPLAY_NONE = $00000000;
{$EXTERNALSYM RMA_DISPLAY_NONE}
RMA_DISPLAY_WINDOW = $00000001;
{$EXTERNALSYM RMA_DISPLAY_WINDOW}
RMA_DISPLAY_SUPPORTS_RESIZE = $00000002;
{$EXTERNALSYM RMA_DISPLAY_SUPPORTS_RESIZE}
RMA_DISPLAY_SUPPORTS_FULLSCREEN = $00000004;
{$EXTERNALSYM RMA_DISPLAY_SUPPORTS_FULLSCREEN}
RMA_DISPLAY_SUPPORTS_VIDCONTROLS = $00000008;
{$EXTERNALSYM RMA_DISPLAY_SUPPORTS_VIDCONTROLS}
type
IRMARenderer = interface (IUnknown)
['{00000300-0901-11d1-8B06-00A024406D59}']
//***********************************************************************
// Method:
// IRMARenderer::GetRendererInfo
// Purpose:
// Returns information vital to the instantiation of rendering
// plugins.
//
function GetRendererInfo(var pStreamMimeTypes: PPChar; var unInitialGranularity: UINT32): HRESULT; stdcall;
//***********************************************************************
// Method:
// IRMARenderer::StartStream
// Purpose:
// Called by client engine to inform the renderer of the stream it
// will be rendering. The stream interface can provide access to
// its source or player. This method also provides access to the
// primary client controller interface.
//
//
function StartStream(pStream: IRMAStream; pPlayer: IRMAPlayer): HRESULT; stdcall;
//***********************************************************************
// Method:
// IRMARenderer::EndStream
// Purpose:
// Called by client engine to inform the renderer that the stream
// is was rendering is closed.
//
//
function EndStream: HRESULT; stdcall;
//***********************************************************************
// Method:
// IRMARenderer::OnHeader
// Purpose:
// Called by client engine when a header for this renderer is
// available. The header will arrive before any packets.
//
//
function OnHeader(pHeader: IRMAValues): HRESULT; stdcall;
//***********************************************************************
// Method:
// IRMARenderer::OnPacket
// Purpose:
// Called by client engine when a packet for this renderer is
// due.
//
//
function OnPacket(pPacket: IRMAPacket; lTimeOffset: LONG32): HRESULT; stdcall;
//***********************************************************************
// Method:
// IRMARenderer::OnTimeSync
// Purpose:
// Called by client engine to inform the renderer of the current
// time relative to the streams synchronized time-line. The
// renderer should use this time value to update its display or
// render it's stream data accordingly.
//
//
function OnTimeSync(ulTime: ULONG32): HRESULT; stdcall;
//***********************************************************************
// Method:
// IRMARenderer::OnPreSeek
// Purpose:
// Called by client engine to inform the renderer that a seek is
// about to occur. The render is informed the last time for the
// stream's time line before the seek, as well as the first new
// time for the stream's time line after the seek will be completed.
//
//
function OnPreSeek(ulOldTime, ulNewTime: ULONG32): HRESULT; stdcall;
//***********************************************************************
// Method:
// IRMARenderer::OnPostSeek
// Purpose:
// Called by client engine to inform the renderer that a seek has
// just occurred. The render is informed the last time for the
// stream's time line before the seek, as well as the first new
// time for the stream's time line after the seek.
//
//
function OnPostSeek(ulOldTime, ulNewTime: ULONG32): HRESULT; stdcall;
//***********************************************************************
// Method:
// IRMARenderer::OnPause
// Purpose:
// Called by client engine to inform the renderer that a pause has
// just occurred. The render is informed the last time for the
// stream's time line before the pause.
//
//
function OnPause(ulTime: ULONG32): HRESULT; stdcall;
//***********************************************************************
// Method:
// IRMARenderer::OnBegin
// Purpose:
// Called by client engine to inform the renderer that a begin or
// resume has just occurred. The render is informed the first time
// for the stream's time line after the resume.
//
//
function OnBegin(ulTime: ULONG32): HRESULT; stdcall;
//***********************************************************************
// Method:
// IRMARenderer::OnBuffering
// Purpose:
// Called by client engine to inform the renderer that buffering
// of data is occuring. The render is informed of the reason for
// the buffering (start-up of stream, seek has occurred, network
// congestion, etc.), as well as percentage complete of the
// buffering process.
//
//
function OnBuffering(ulFlags: ULONG32; unPercentComplete: UINT16): HRESULT; stdcall;
//***********************************************************************
// Method:
// IRMARenderer::GetDisplayType
// Purpose:
// Called by client engine to ask the renderer for it's preferred
// display type. When layout information is not present, the
// renderer will be asked for it's prefered display type. Depending
// on the display type a buffer of additional information may be
// needed. This buffer could contain information about preferred
// window size.
//
//
function GetDisplayType(var ulFlags: RMA_DISPLAY_TYPE; out pBuffer: IRMABuffer): HRESULT; stdcall;
//***********************************************************************
// Method:
// IRMARenderer::OnEndofPackets
// Purpose:
// Called by client engine to inform the renderer that all the
// packets have been delivered. However, if the user seeks before
// EndStream() is called, renderer may start getting packets again
// and the client engine will eventually call this function again.
//
function OnEndofPackets: HRESULT; stdcall;
end;
{$EXTERNALSYM IRMARenderer}
implementation
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -