亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? baseclass.pas

?? 一套及時通訊的原碼
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
    (*********************************************************************
     *  DSPack 2.3.3                                                     *
     *  DirectShow BaseClass                                             *
     *                                                                   *
     * home page : http://www.progdigy.com                               *
     * email     : hgourvest@progdigy.com                                *
     *                                                                   *
     * date      : 21-02-2003                                            *
     *                                                                   *
     * The contents of this file are used with permission, subject to    *
     * the Mozilla Public License Version 1.1 (the "License"); you may   *
     * not use this file except in compliance with the License. You may  *
     * obtain a copy of the License at                                   *
     * http://www.mozilla.org/MPL/MPL-1.1.html                           *
     *                                                                   *
     * Software distributed under the License is distributed on an       *
     * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or    *
     * implied. See the License for the specific language governing      *
     * rights and limitations under the License.                         *
     *                                                                   *
     *  Contributor(s)                                                   *
     *    Andriy Nevhasymyy <a.n@email.com>                              *
     *    Milenko Mitrovic  <dcoder@dsp-worx.de>                         *
     *    Michael Andersen  <michael@mechdata.dk>                        *
     *    Martin Offenwanger <coder@dsplayer.de>                         *
     *                                                                   *
     *********************************************************************)

{.$DEFINE DEBUG}      // Debug Log
{.$DEFINE TRACE}      // Trace Criteral Section (DEBUG must be ON)
{.$DEFINE MESSAGE}    // Use OutputDebugString instead of a File (DEBUG must be ON)

{.$DEFINE PERF}       // Show Performace Counter
{.$DEFINE VTRANSPERF} // Show additional TBCVideoTransformFilter Performace Counter (PERF must be ON)

{$MINENUMSIZE 4}
{$ALIGN ON}

unit BaseClass;

{$IFDEF VER150}
  {$WARN UNSAFE_CODE OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_CAST OFF}
{$ENDIF}

interface
uses Windows, SysUtils, Classes, Math, ActiveX, Forms, Messages, Controls,
  DirectShow9, dialogs, ComObj, mmsystem, DSUtil;

const
  OATRUE  = -1;
  OAFALSE = 0;

  DEFAULTCACHE = 10; // Default node object cache size


type
  TBCCritSec = class
  private
    FCritSec : TRTLCriticalSection;
  {$IFDEF DEBUG}
    FcurrentOwner: Longword;
    FlockCount   : Longword;
  {$ENDIF}
  public
    constructor Create;
    destructor Destroy; override;
    procedure Lock;
    procedure UnLock;
    function CritCheckIn: boolean;
    function CritCheckOut: boolean;
  end;

  TBCBaseObject = class(TObJect)
  private
    FName: string;
  public
    constructor Create(Name: string);
    destructor Destroy; override;
    class function NewInstance: TObject; override;
    procedure FreeInstance; override;
    class function ObjectsActive: integer;
  end;

  TBCClassFactory = Class;

  TBCUnknown = class(TBCBaseObject, IUnKnown)
  private
    FRefCount: integer;
    FOwner   : Pointer;
  protected
    function IUnknown.QueryInterface = NonDelegatingQueryInterface;
    function IUnknown._AddRef = NonDelegatingAddRef;
    function IUnknown._Release = NonDelegatingRelease;
    function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
  public
    function _AddRef: Integer; stdcall;
    function _Release: Integer; stdcall;
    constructor Create(name: string; Unk: IUnknown);
    constructor CreateFromFactory(Factory: TBCClassFactory; const Controller: IUnknown); virtual;
    function NonDelegatingQueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall;
    function NonDelegatingAddRef: Integer; virtual; stdcall;
    function NonDelegatingRelease: Integer; virtual; stdcall;
    function GetOwner: IUnKnown;
  end;

  TBCUnknownClass = Class of TBCUnknown;

  TFormPropertyPage = class;
  TFormPropertyPageClass = class of TFormPropertyPage;

  TBCBaseFilter = class;
  TBCBaseFilterClass = class of TBCBaseFilter;

  TBCClassFactory = class(TObject, IUnKnown, IClassFactory)
  private
   FNext     : TBCClassFactory;
   FComClass : TBCUnknownClass;
   FPropClass: TFormPropertyPageClass;
   FName     : String;
   FClassID  : TGUID;
   FCategory : TGUID;
   FMerit    : LongWord;
   FPinCount : Cardinal;
   FPins     : PRegFilterPins;
   function RegisterFilter(FilterMapper: IFilterMapper; Register: Boolean): boolean; overload;
   function RegisterFilter(FilterMapper: IFilterMapper2; Register: Boolean): boolean; overload;
   procedure UpdateRegistry(Register: Boolean); overload;
  protected
    function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
    function _AddRef: Integer; stdcall;
    function _Release: Integer; stdcall;
    function CreateInstance(const UnkOuter: IUnknown; const IID: TGUID;
      out Obj): HResult; stdcall;
    function LockServer(fLock: BOOL): HResult; stdcall;
  public
    constructor CreateFilter(ComClass: TBCUnknownClass; Name: string;
      const ClassID: TGUID; const Category: TGUID; Merit: LongWord;
      PinCount: Cardinal; Pins: PRegFilterPins);
    constructor CreatePropertyPage(ComClass: TFormPropertyPageClass; const ClassID: TGUID);
    property Name: String read FName;
    property ClassID: TGUID read FClassID;
  end;



  TBCFilterTemplate = class
  private
    FFactoryList : TBCClassFactory;
    procedure AddObjectFactory(Factory: TBCClassFactory);
  public
    constructor Create;
    destructor Destroy; override;
    function RegisterServer(Register: Boolean): boolean;
    function GetFactoryFromClassID(const CLSID: TGUID): TBCClassFactory;
  end;


  TBCMediaType = object
    MediaType: PAMMediaType;
    function Equal(mt: TBCMediaType): boolean; overload;
    function Equal(mt: PAMMediaType): boolean; overload;
    function MatchesPartial(Partial: PAMMediaType): boolean;
    function IsPartiallySpecified: boolean;
    function IsValid: boolean;
    procedure InitMediaType;
    function FormatLength: Cardinal;
  end;


  TBCBasePin = class;

  TBCBaseFilter = class(TBCUnknown, IBaseFilter, IAMovieSetup)
  protected
    FState : TFilterState;     // current state: running, paused
    FClock : IReferenceClock;   // this graph's ref clock
    FStart : TReferenceTime;   // offset from stream time to reference time
    FCLSID : TGUID;             // This filters clsid used for serialization
    FLock  : TBCCritSec;          // Object we use for locking

    FFilterName : WideString;   // Full filter name
    FGraph : IFilterGraph;      // Graph we belong to
    FSink  : IMediaEventSink;   // Called with notify events
    FPinVersion: Integer;       // Current pin version
  public
    constructor Create(Name: string;           // Object description
                       Unk : IUnKnown;         // IUnknown of delegating object
                       Lock: TBCCritSec;       // Object who maintains lock
                       const clsid: TGUID      // The clsid to be used to serialize this filter
                       ); overload;

    constructor Create(Name: string;           // Object description
                       Unk : IUnKnown;         // IUnknown of delegating object
                       Lock: TBCCritSec;       // Object who maintains lock
                       const clsid: TGUID;     // The clsid to be used to serialize this filter
                       out hr: HRESULT         // General OLE return code
                       ); overload;
    constructor CreateFromFactory(Factory: TBCClassFactory; const Controller: IUnknown); override;
    destructor destroy; override;
    // --- IPersist method ---
    function GetClassID(out classID: TCLSID): HResult; stdcall;
    // --- IMediaFilter methods ---
    // override Stop and Pause so we can activate the pins.
    // Note that Run will call Pause first if activation needed.
    // Override these if you want to activate your filter rather than
    // your pins.
    function Stop: HRESULT; virtual; stdcall;
    function Pause: HRESULT; virtual; stdcall;
    // the start parameter is the difference to be added to the
    // sample's stream time to get the reference time for
    // its presentation
    function Run(tStart: TReferenceTime): HRESULT; virtual; stdcall;
    function GetState(dwMilliSecsTimeout: DWORD; out State: TFilterState): HRESULT; virtual; stdcall;
    function SetSyncSource(pClock: IReferenceClock): HRESULT; stdcall;
    function GetSyncSource(out pClock: IReferenceClock): HRESULT; stdcall;
    // --- helper methods ---
    // return the current stream time - ie find out what
    // stream time should be appearing now
    function StreamTime(out rtStream: TReferenceTime): HRESULT; virtual;
    // Is the filter currently active?
    function IsActive: boolean;
    // Is this filter stopped (without locking)
    function IsStopped: boolean;
    // --- IBaseFilter methods ---
    // pin enumerator
    function EnumPins(out ppEnum: IEnumPins): HRESULT; stdcall;
    // default behaviour of FindPin assumes pin ids are their names
    function FindPin(Id: PWideChar; out Pin: IPin): HRESULT; virtual; stdcall;
    function QueryFilterInfo(out pInfo: TFilterInfo): HRESULT; stdcall;
// milenko start (added virtual to be able to override it in the renderers)
    function JoinFilterGraph(pGraph: IFilterGraph; pName: PWideChar): HRESULT; virtual; stdcall;
// milenko end    
    // return a Vendor information string. Optional - may return E_NOTIMPL.
    // memory returned should be freed using CoTaskMemFree
    // default implementation returns E_NOTIMPL
    function QueryVendorInfo(out pVendorInfo: PWideChar): HRESULT; stdcall;
    // --- helper methods ---
    // send an event notification to the filter graph if we know about it.
    // returns S_OK if delivered, S_FALSE if the filter graph does not sink
    // events, or an error otherwise.
    function NotifyEvent(EventCode, EventParam1, EventParam2: LongInt): HRESULT;
    // return the filter graph we belong to
    function GetFilterGraph: IFilterGraph;
    // Request reconnect
    // pPin is the pin to reconnect
    // pmt is the type to reconnect with - can be NULL
    // Calls ReconnectEx on the filter graph
    function ReconnectPin(Pin: IPin; pmt: PAMMediaType): HRESULT;
    // find out the current pin version (used by enumerators)
    function GetPinVersion: LongInt; virtual;
    procedure IncrementPinVersion;
    // you need to supply these to access the pins from the enumerator
    // and for default Stop and Pause/Run activation.
    function GetPinCount: integer; virtual; abstract;
    function GetPin(n: Integer): TBCBasePin; virtual; abstract;
    // --- IAMovieSetup methods ---
{nev: start 04/16/04 added "virtual"}
    function Register: HRESULT; virtual; stdcall;
    function Unregister: HRESULT; virtual; stdcall;
{nev: end}

    property State: TFilterState read FState;
    property GRaph : IFilterGraph read FGRaph;
  end;

 { NOTE The implementation of this class calls the CUnknown constructor with
   a NULL outer unknown pointer. This has the effect of making us a self
   contained class, ie any QueryInterface, AddRef or Release calls will be
   routed to the class's NonDelegatingUnknown methods. You will typically
   find that the classes that do this then override one or more of these
   virtual functions to provide more specialised behaviour. A good example
   of this is where a class wants to keep the QueryInterface internal but
   still wants its lifetime controlled by the external object }

  TBCBasePin = class(TBCUnknown, IPin, IQualityControl)
  protected
    FPinName: WideString;
    FConnected             : IPin;             // Pin we have connected to
    Fdir                   : TPinDirection;   // Direction of this pin
    FLock                  : TBCCritSec;       // Object we use for locking
    FRunTimeError          : boolean;          // Run time error generated
    FCanReconnectWhenActive: boolean;          // OK to reconnect when active
    FTryMyTypesFirst       : boolean;          // When connecting enumerate
                                               // this pin's types first
    FFilter                : TBCBaseFilter;    // Filter we were created by
    FQSink                 : IQualityControl;  // Target for Quality messages
    FTypeVersion           : LongInt;          // Holds current type version

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电视剧在线看免费| 亚洲欧洲精品一区二区精品久久久| 精品欧美久久久| 国产精品第四页| 日本aⅴ亚洲精品中文乱码| 国产一区二区三区久久久 | 一区二区成人在线观看| 日本午夜精品一区二区三区电影 | 日韩一区二区三区在线视频| 欧美色图12p| 欧美亚洲综合另类| 一区二区三区免费在线观看| 亚洲国产精品久久久久秋霞影院| 久久国产成人午夜av影院| 精品免费视频.| 国产欧美日韩亚州综合 | 久久欧美一区二区| 国产精品婷婷午夜在线观看| 中文字幕在线不卡视频| 久久91精品国产91久久小草| 国产精品一卡二卡在线观看| 9久草视频在线视频精品| 欧美日韩一区二区三区四区| 日韩午夜在线观看| 中文字幕欧美区| 亚洲中国最大av网站| 一区二区三区欧美在线观看| 肉肉av福利一精品导航| 91毛片在线观看| 欧美日韩精品系列| 欧美精品一区二区三区四区 | 91麻豆精品国产91久久久使用方法 | 在线综合视频播放| xvideos.蜜桃一区二区| 国产精品美女久久久久久2018| 一区二区三区在线免费| 国产美女视频91| 久久综合999| 午夜久久电影网| 国产福利91精品一区二区三区| 99久久精品免费看| 日韩久久久精品| 国产精品久久福利| 奇米色一区二区| 亚洲自拍偷拍欧美| 国产精品羞羞答答xxdd| 欧美视频完全免费看| 欧美一级二级三级蜜桃| 51久久夜色精品国产麻豆| 丝袜美腿高跟呻吟高潮一区| 国产91精品久久久久久久网曝门| 欧美三级日韩在线| 日韩美女视频在线| 亚洲免费大片在线观看| 国产毛片精品国产一区二区三区| 欧美在线播放高清精品| 国产精品三级久久久久三级| 精品一区二区三区在线观看 | 日韩成人免费电影| 91福利国产精品| 欧美激情一区二区三区不卡| 麻豆精品国产91久久久久久| av影院午夜一区| 在线播放一区二区三区| 亚洲地区一二三色| 免费在线看一区| 色哟哟国产精品| 欧美美女喷水视频| 亚洲欧洲韩国日本视频| 蜜桃视频一区二区| 欧美专区在线观看一区| 亚洲日本欧美天堂| 国产一区二区三区美女| 在线综合+亚洲+欧美中文字幕| 国产精品网站在线播放| 99re热视频这里只精品| 欧美日韩1区2区| 亚洲国产精品精华液ab| 国产无一区二区| 国产a区久久久| 欧美不卡123| 亚洲精品免费在线播放| 一本到一区二区三区| 精品精品欲导航| 亚洲成人精品一区| 国产91色综合久久免费分享| 国产精品九色蝌蚪自拍| 成人中文字幕电影| 久久丝袜美腿综合| 成人免费毛片高清视频| 欧美一区二区视频观看视频| 亚洲黄色在线视频| 91美女片黄在线观看91美女| 国产精品动漫网站| 国产一区二区三区最好精华液| 国产盗摄精品一区二区三区在线| 国产精品成人免费| 国产真实乱偷精品视频免| 欧美精品日韩一区| 最新成人av在线| 国产精品自在在线| 中文天堂在线一区| 国产精品一区二区黑丝| 欧美国产一区二区在线观看| 成人a级免费电影| 亚洲色图欧美偷拍| 在线亚洲一区观看| 午夜精品国产更新| 91精品国产综合久久久久久久| 麻豆一区二区在线| 亚洲免费观看高清完整版在线 | 亚洲色图视频网站| 久久女同互慰一区二区三区| 国产裸体歌舞团一区二区| 国产精品久久久久久久岛一牛影视| 国产精品女主播av| 精品免费一区二区三区| 成人国产精品免费观看视频| 成人欧美一区二区三区在线播放| 99在线视频精品| 亚洲一本大道在线| 欧美丰满少妇xxxbbb| 老司机精品视频一区二区三区| 亚洲欧洲日产国产综合网| 欧美美女bb生活片| 男人的天堂久久精品| 色屁屁一区二区| 日本中文字幕不卡| 欧美mv日韩mv国产| 国产成人8x视频一区二区| 亚洲国产成人私人影院tom| 亚洲18色成人| 日本一区二区三区电影| 高清不卡一区二区| 国产精品免费丝袜| 国产精品一区二区久久不卡 | 在线观看91精品国产入口| 美女视频黄免费的久久| 一区二区三区欧美| 欧美成人在线直播| 国产成人精品影视| 日韩精品中文字幕在线一区| 欧洲一区在线观看| 麻豆精品视频在线观看| 国产午夜精品久久久久久久| 五月天丁香久久| 欧美国产禁国产网站cc| 欧美日本一区二区在线观看| 麻豆精品视频在线观看视频| 久久综合资源网| 欧美日韩免费高清一区色橹橹| 老司机一区二区| 欧美国产日韩a欧美在线观看 | 日本高清不卡视频| 免费在线看成人av| 国产精品久久久久婷婷二区次| 亚洲成a人v欧美综合天堂| 麻豆一区二区在线| 国产精品视频一二| 日韩经典一区二区| 99久久精品一区二区| 色偷偷88欧美精品久久久| 成人激情免费电影网址| 欧洲日韩一区二区三区| 国产欧美一区二区三区在线看蜜臀| 色一区在线观看| 亚洲品质自拍视频| 成人美女视频在线观看| 欧美日韩午夜精品| 青青草国产精品亚洲专区无| 久久欧美中文字幕| 日韩精品电影一区亚洲| 国产精品久久99| 91麻豆蜜桃一区二区三区| av一区二区不卡| 国产毛片精品视频| 制服丝袜av成人在线看| 免费人成在线不卡| 激情久久五月天| 懂色一区二区三区免费观看 | 在线观看视频91| 欧美亚洲综合久久| 91精品国产综合久久久久久久久久 | 色综合天天综合在线视频| 国产亚洲精品超碰| 日本韩国欧美三级| 成人午夜视频福利| 久久国产剧场电影| 一区二区三区久久| 国产精品人妖ts系列视频| 中文字幕第一区二区| 国产福利不卡视频| 一本到高清视频免费精品| 91免费观看视频在线| 国产成人夜色高潮福利影视| 亚洲午夜激情网页| 樱桃视频在线观看一区| 国产日韩欧美一区二区三区乱码| 欧美人xxxx| 一本色道久久综合亚洲aⅴ蜜桃 |