⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rmarendr.pas

📁 Delphi源码REAlRMSDK.rar
💻 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 + -