Config.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:5k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit config;
  2.    (*********************************************************************
  3.     * The contents of this file are used with permission, subject to    *
  4.     * the Mozilla Public License Version 1.1 (the "License"); you may   *
  5.     * not use this file except in compliance with the License. You may  *
  6.     * obtain a copy of the License at                                   *
  7.     * http://www.mozilla.org/MPL/MPL-1.1.html                           *
  8.     *                                                                   *
  9.     * Software distributed under the License is distributed on an       *
  10.     * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or    *
  11.     * implied. See the License for the specific language governing      *
  12.     * rights and limitations under the License.                         *
  13.     *                                                                   *
  14.     * (C) 2004 Martin Offenwanger: coder@dsplayer.de                    *
  15.     *********************************************************************)
  16. {
  17. @author(Martin Offenwanger: coder@dsplayer.de)
  18. @created(Apr 22, 2004)
  19. @lastmod(Sep 09, 2004)
  20. }
  21. interface
  22. uses DirectShow9, Classes, StringQueue, ShoutCastStream, BaseClass, ActiveX;
  23. // Global Filter Identifiers
  24. const
  25.   GCFInt64max = 999999999999999999;
  26.   GCFFilterID = 'AsyncEx';
  27.   GCFPinID = 'StreamOut';
  28.   // GUIDS
  29.   CLSID_AsyncEx: TGUID = '{3E0FA044-926C-42d9-BA12-EF16E980913B}';
  30.   CLSID_PropMonitor: TGUID = '{3E0FA066-929C-43d9-BA18-EF16E980913B}';
  31.   CLSID_PropPage: TGUID = '{3E0FA055-926C-43d9-BA18-EF16E980913B}';
  32.   // Interface ID'S
  33.   IID_IDSPlayerAsyncSourceControl: TGUID =
  34.   '{3E0FA056-926C-43d9-BA18-EF16E980913B}';
  35.   IID_IDSPlayerAsyncSourceCallBack: TGUID =
  36.   '{3E0FB667-956C-43d9-BA18-EF16E980913B}';
  37.   { ogg media
  38.     Tobias Ogg Splitter implementation causes a lot of problems with the source,
  39.     so i disabled Ogg palyback for now..... }
  40.   // MEDIASUBTYPE_OGGAudio    : TGUID = '{D2855FA9-61A7-4db0-B979-71F297C17A04}';
  41. // Proposed supported SubTypes
  42.   ProposedTypes:
  43.   array[0..9] of PGuid = (
  44.     @MEDIASUBTYPE_Avi,
  45.     @MEDIASUBTYPE_AIFF,
  46.     @MEDIASUBTYPE_AU,
  47.     @MEDIASUBTYPE_DssAudio,
  48.     @MEDIASUBTYPE_DssVideo,
  49.     @MEDIASUBTYPE_MPEG1Audio,
  50.     @MEDIASUBTYPE_MPEG1System,
  51.     @MEDIASUBTYPE_MPEG1Video,
  52.     @MEDIASUBTYPE_MPEG1VideoCD,
  53.     @MEDIASUBTYPE_WAVE
  54.     );
  55.   // Stream as Majortype
  56.   PinType: TRegPinTypes =
  57.   (clsMajorType: @MEDIATYPE_Stream);
  58.   // one Pin
  59.   Pins: array[0..0] of TRegFilterPins =
  60.   ((strName: GCFPinID; bRendered: FALSE; bOutput: TRUE;
  61.     bZero: FALSE; bMany: FALSE; oFilter: nil; strConnectsToPin: nil;
  62.     nMediaTypes: 1; lpMediaType: @PinType));
  63.   // Interfaces, that can Queried on the Filter
  64. type
  65.   IAsyncExCallBack = interface(IUnknown)
  66.     ['{3E0FB667-956C-43d9-BA18-EF16E980913B}']
  67.     function AsyncExFilterState(Buffering: LongBool; PreBuffering: LongBool;
  68.       Connecting: LongBool; Playing: LongBool;
  69.       BufferState: integer): HRESULT; stdcall;
  70.     function AsyncExICYNotice(IcyItemName: PChar;
  71.       ICYItem: PChar): HRESULT; stdcall;
  72.     function AsyncExMetaData(Title: PChar; URL: PChar): HRESULT; stdcall;
  73.     function AsyncExSockError(ErrString: PChar): HRESULT; stdcall;
  74.   end;
  75. type
  76.   IAsyncExControl = interface(IUnknown)
  77.     ['{3E0FA056-926C-43d9-BA18-EF16E980913B}']
  78.     function SetLoadFromStream(Stream: IStream; Length: int64): HRESULT;
  79.       stdcall;
  80.     function SetConnectToIp(Host: PChar; Port: PChar; Location: PChar;
  81.       PreBuffersize: integer; MetaData: LongBool): HRESULT; stdcall;
  82.     function SetConnectToURL(URL: PChar; PreBuffersize: integer;
  83.       MetaData: LongBool): HRESULT; stdcall;
  84.     function SetBuffersize(BufferSize: integer): HRESULT; stdcall;
  85.     function GetBuffersize(out BufferSize: integer): HRESULT; stdcall;
  86.     function SetRipStream(Ripstream: LongBool; Path: PChar;
  87.       Filename: PChar): HRESULT; stdcall;
  88.     function GetRipStream(out Ripstream: LongBool;
  89.       out FileO: PChar): HRESULT; stdcall;
  90.     function SetCallBack(CallBack: IAsyncExCallBack): HRESULT; stdcall;
  91.     function FreeCallback(): HRESULT; stdcall;
  92.     function ExitAllLoops(): HRESULT; stdcall;
  93.   end;
  94.   { it is not the best way to use this objects as global,
  95.     but for now it works ;)
  96.    todo: move the Global Objects to private }
  97. var
  98.   // Filter callBack
  99.   GFFilterCallBack: IAsyncExCallBack;
  100.   GFPreBufferSize: integer;
  101.   GFBufferSize: integer;
  102.   GFMinBuffersize: integer;
  103.   // external URl Stream Class
  104.   GFStringQueue: TStringQueue; // global queue for all received data
  105.   { we handle the queue from different classes
  106.     tofo: rewmove this global var              }
  107.   // flags
  108.   GFConnected: boolean;
  109.   GFExit: boolean;
  110.   // state informations
  111.   GFStreamPos: int64;
  112.   GFStreamLength: int64;
  113.   GFFileName: string;
  114.   GFMayjorType: string;
  115. implementation
  116. end.