亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
中文字幕一区二区日韩精品绯色| 丁香网亚洲国际| 91热门视频在线观看| 久久综合久久综合久久综合| 国产91露脸合集magnet| 亚洲视频每日更新| 欧美日韩免费视频| 国产老妇另类xxxxx| 欧美激情一区二区三区四区| 91视视频在线观看入口直接观看www | 国产mv日韩mv欧美| 日本一区二区高清| 精品污污网站免费看| 国产精品自拍网站| 一区二区三区精密机械公司| 欧美午夜精品一区二区蜜桃| 免费欧美高清视频| 中文字幕一区二区不卡| 欧美撒尿777hd撒尿| 国产黄人亚洲片| 亚洲成人免费av| 国产欧美一区二区精品性色| 欧美丝袜自拍制服另类| 成人午夜免费视频| 日本特黄久久久高潮| ●精品国产综合乱码久久久久| 日韩一区二区在线看| 99久久精品国产导航| 男人的天堂亚洲一区| 亚洲成av人片一区二区梦乃 | 精品裸体舞一区二区三区| 99精品久久只有精品| 日韩av成人高清| 午夜亚洲国产au精品一区二区| 亚洲精品乱码久久久久久久久| 国产精品久久久久婷婷| 国产乱码精品一品二品| 欧美精品一区二区三区蜜臀| 成人激情黄色小说| 欧美四级电影在线观看| 99re这里只有精品6| bt欧美亚洲午夜电影天堂| 国产成人精品在线看| 粉嫩一区二区三区在线看| 国产麻豆视频一区二区| 欧美亚洲尤物久久| 91福利在线观看| 欧美无人高清视频在线观看| 在线一区二区视频| 在线观看日韩电影| 欧美日韩一区高清| 3751色影院一区二区三区| 日韩一级精品视频在线观看| 欧美成人猛片aaaaaaa| 国产午夜精品一区二区| 亚洲老妇xxxxxx| 亚洲视频精选在线| 亚洲福利一区二区| 男人的天堂久久精品| 久久不见久久见中文字幕免费| 国产剧情一区在线| 91免费版在线| 中文字幕不卡的av| 久久久久久免费网| 夜夜揉揉日日人人青青一国产精品| 亚洲亚洲精品在线观看| 国产在线精品一区在线观看麻豆| 国产精品18久久久久| 91免费在线看| 日韩一级二级三级| 亚洲男人都懂的| 国产精品1区二区.| 在线成人免费观看| 综合婷婷亚洲小说| 麻豆传媒一区二区三区| 欧美网站一区二区| 久久久美女艺术照精彩视频福利播放| 国产精品亲子乱子伦xxxx裸| 日韩av网站免费在线| 91麻豆免费看片| 国产欧美精品一区| 日本伊人午夜精品| 欧美日本在线看| 一区二区三区中文字幕电影 | 色综合咪咪久久| 国产亚洲午夜高清国产拍精品 | 亚洲裸体在线观看| 成人精品视频网站| 亚洲天堂av老司机| 国产一区二区三区四区在线观看| 69精品人人人人| 亚洲1区2区3区4区| 欧美久久一二三四区| 亚洲成在人线免费| 欧美日韩亚洲综合一区二区三区| 亚洲素人一区二区| 91久久精品一区二区二区| 亚洲美女屁股眼交3| 欧美日韩亚洲另类| 亚洲成人精品影院| 欧美人动与zoxxxx乱| 一区二区三区四区在线播放| 色吧成人激情小说| 婷婷综合久久一区二区三区| 91精品国产色综合久久| 国产综合成人久久大片91| 久久欧美一区二区| 99久久99久久精品免费看蜜桃| 一区在线播放视频| 欧美日韩精品一区二区三区蜜桃| bt欧美亚洲午夜电影天堂| 伊人色综合久久天天人手人婷| 欧美亚洲禁片免费| 奇米综合一区二区三区精品视频| 日韩欧美亚洲一区二区| 99这里只有精品| 久久精品国产一区二区| 综合欧美一区二区三区| 欧美三级电影一区| 成人高清免费观看| 亚洲超碰97人人做人人爱| 久久天堂av综合合色蜜桃网| 91美女在线视频| 国内久久精品视频| 一区二区三区四区国产精品| 日韩美女主播在线视频一区二区三区 | 另类小说一区二区三区| 亚洲精品免费一二三区| ww久久中文字幕| 欧美日韩视频专区在线播放| 成人免费观看视频| 国产呦萝稀缺另类资源| 婷婷国产v国产偷v亚洲高清| 蜜臀av亚洲一区中文字幕| 亚洲精品第一国产综合野| 中文字幕一区二区三区不卡在线| 国产视频一区二区三区在线观看 | 欧美日韩mp4| a美女胸又www黄视频久久| 国产一区二区三区| 美女视频网站黄色亚洲| 日韩精品久久久久久| 日韩精品久久理论片| 舔着乳尖日韩一区| 日韩精品成人一区二区三区| 亚洲影视在线播放| 亚洲国产精品久久久久婷婷884| 亚洲精品日日夜夜| 亚洲国产精品一区二区尤物区| 亚洲三级久久久| 一区二区三区日韩欧美| 亚洲视频免费在线观看| 一卡二卡三卡日韩欧美| 水蜜桃久久夜色精品一区的特点| 午夜精品福利一区二区三区蜜桃| 亚洲曰韩产成在线| 国产一区二区三区综合| 成人开心网精品视频| 欧日韩精品视频| 欧美一级生活片| 国产婷婷色一区二区三区四区| 国产亚洲欧美色| 一区二区欧美精品| 韩国成人福利片在线播放| 国产麻豆成人传媒免费观看| 91精彩视频在线| 精品欧美一区二区久久| 最好看的中文字幕久久| 日本美女视频一区二区| 成人一区二区三区| 日韩一区二区在线看片| √…a在线天堂一区| 麻豆一区二区三| 91麻豆国产自产在线观看| 日韩一二三区视频| 亚洲乱码国产乱码精品精98午夜| 捆绑调教一区二区三区| 99精品热视频| 国产嫩草影院久久久久| 久久99精品久久久久久| 欧美日韩在线播放三区四区| 日韩一区在线看| 国产原创一区二区三区| 欧美精品三级在线观看| 亚洲午夜久久久久久久久电影院| av午夜一区麻豆| 久久精品夜色噜噜亚洲aⅴ| 免费欧美在线视频| xf在线a精品一区二区视频网站| 亚洲国产wwwccc36天堂| 欧美主播一区二区三区美女| 国产精品成人午夜| 粉嫩av一区二区三区粉嫩| 国产精品免费丝袜| 成人av电影在线| 中文字幕日韩一区| 91亚洲精品一区二区乱码| 亚洲欧美一区二区三区国产精品 | 国产拍揄自揄精品视频麻豆| 国产一区二区三区|