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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? baseclass.pas

?? 一套及時(shí)通訊的原碼
?? PAS
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
    Fmt                    : TAMMediaType;   // Media type of connection

    FStart                 : TReferenceTime;  // time from NewSegment call
    FStop                  : TReferenceTime;  // time from NewSegment
    FRate                  : double;           // rate from NewSegment

    FRef                   : LongInt;
    function GetCurrentMediaType: TBCMediaType;
    function GetAMMediaType: PAMMediaType;
  protected
    procedure DisplayPinInfo(ReceivePin: IPin);
    procedure DisplayTypeInfo(Pin: IPin; pmt: PAMMediaType);

    // used to agree a media type for a pin connection
    // given a specific media type, attempt a connection (includes
    // checking that the type is acceptable to this pin)
    function AttemptConnection(
       ReceivePin: IPin;      // connect to this pin
       pmt       : PAMMediaType // using this type
       ): HRESULT;
    // try all the media types in this enumerator - for each that
    // we accept, try to connect using ReceiveConnection.
    function TryMediaTypes(
               ReceivePin: IPin;           // connect to this pin
               pmt       : PAMMediaType;     // proposed type from Connect
               Enum      : IEnumMediaTypes // try this enumerator
               ): HRESULT;

    // establish a connection with a suitable mediatype. Needs to
    // propose a media type if the pmt pointer is null or partially
    // specified - use TryMediaTypes on both our and then the other pin's
    // enumerator until we find one that works.
    function AgreeMediaType(
               ReceivePin: IPin;      // connect to this pin
               pmt       : PAMMediaType // proposed type from Connect
               ): HRESULT;
    function DisconnectInternal: HRESULT; stdcall;
  public
    function NonDelegatingAddRef: Integer; override; stdcall;
    function NonDelegatingRelease: Integer; override; stdcall;
    constructor Create(
                  ObjectName: string;           // Object description
                  Filter    : TBCBaseFilter;      // Owning filter who knows about pins
                  Lock      : TBCCritSec;         // Object who implements the lock
                  out hr    : HRESULT;          // General OLE return code
                  Name      : WideString;       // Pin name for us
                  dir       : TPinDirection);  // Either PINDIR_INPUT or PINDIR_OUTPUT
    destructor destroy; override;
    // --- IPin methods ---
    // take lead role in establishing a connection. Media type pointer
    // may be null, or may point to partially-specified mediatype
    // (subtype or format type may be GUID_NULL).
    function Connect(pReceivePin: IPin; const pmt: PAMMediaType): HRESULT; virtual; stdcall;
    // (passive) accept a connection from another pin
    function ReceiveConnection(pConnector: IPin; const pmt: TAMMediaType): HRESULT; virtual; stdcall;
    function Disconnect: HRESULT; virtual; stdcall;
    function ConnectedTo(out pPin: IPin): HRESULT; virtual; stdcall;
    function ConnectionMediaType(out pmt: TAMMediaType): HRESULT; virtual; stdcall;
    function QueryPinInfo(out pInfo: TPinInfo): HRESULT; virtual; stdcall;
    function QueryDirection(out pPinDir: TPinDirection): HRESULT; stdcall;
    function QueryId(out Id: PWideChar): HRESULT; virtual; stdcall;
    // does the pin support this media type
    function QueryAccept(const pmt: TAMMediaType): HRESULT; virtual; stdcall;
    // return an enumerator for this pins preferred media types
    function EnumMediaTypes(out ppEnum: IEnumMediaTypes): HRESULT; virtual; stdcall;
    // return an array of IPin* - the pins that this pin internally connects to
    // All pins put in the array must be AddReffed (but no others)
    // Errors: "Can't say" - FAIL, not enough slots - return S_FALSE
    // Default: return E_NOTIMPL
    // The filter graph will interpret NOT_IMPL as any input pin connects to
    // all visible output pins and vice versa.
    // apPin can be NULL if nPin==0 (not otherwise).
    function QueryInternalConnections(out apPin: IPin; var nPin: ULONG): HRESULT; virtual; stdcall;
    // Called when no more data will be sent
    function EndOfStream: HRESULT; virtual; stdcall;
    function BeginFlush: HRESULT; virtual; stdcall; abstract;
    function EndFlush: HRESULT; virtual; stdcall; abstract;
    // Begin/EndFlush still PURE

    // NewSegment notifies of the start/stop/rate applying to the data
    // about to be received. Default implementation records data and
    // returns S_OK.
    // Override this to pass downstream.
    function NewSegment(tStart, tStop: TReferenceTime; dRate: double): HRESULT; virtual; stdcall;
    // --- IQualityControl methods ---
    function Notify(pSelf: IBaseFilter; q: TQuality): HRESULT; virtual; stdcall;
    function SetSink(piqc: IQualityControl): HRESULT; virtual; stdcall;
    // --- helper methods ---

    // Returns True if the pin is connected. false otherwise.
    function IsConnected: boolean;
    // Return the pin this is connected to (if any)
    property GetConnected: IPin read FConnected;
    // Check if our filter is currently stopped
    function IsStopped: boolean;
    // find out the current type version (used by enumerators)
    function GetMediaTypeVersion: longint; virtual;
    procedure IncrementTypeVersion;
    // switch the pin to active (paused or running) mode
    // not an error to call this if already active
    function Active: HRESULT; virtual;
    // switch the pin to inactive state - may already be inactive
    function Inactive: HRESULT; virtual;
    // Notify of Run() from filter
    function Run(Start: TReferenceTime): HRESULT; virtual;
    // check if the pin can support this specific proposed type and format
    function CheckMediaType(mt: PAMMediaType): HRESULT; virtual; abstract;
    // set the connection to use this format (previously agreed)
    function SetMediaType(mt: PAMMediaType): HRESULT; virtual;
    // check that the connection is ok before verifying it
    // can be overridden eg to check what interfaces will be supported.
    function CheckConnect(Pin: IPin): HRESULT; virtual;
    // Set and release resources required for a connection
    function BreakConnect: HRESULT; virtual;
    function CompleteConnect(ReceivePin: IPin): HRESULT; virtual;
    // returns the preferred formats for a pin
    function GetMediaType(Position: integer; out MediaType: PAMMediaType): HRESULT; virtual;
    // access to NewSegment values
    property CurrentStopTime: TReferenceTime read FStop;
    property CurrentStartTime: TReferenceTime read FStart;
    property CurrentRate: double read FRate;
    //  Access name
    property Name: WideString read FPinName;
    property CanReconnectWhenActive: boolean read FCanReconnectWhenActive write FCanReconnectWhenActive;
    // Media type
    property CurrentMediaType: TBCMediaType read GetCurrentMediaType;
    property AMMediaType: PAMMediaType read GetAMMediaType;
  end;

  TBCEnumPins = class(TInterfacedObject, IEnumPins)
  private
    FPosition: integer;   // Current ordinal position
    FPinCount: integer;   // Number of pins available
    FFilter: TBCBaseFilter; // The filter who owns us
    FVersion: LongInt;    // Pin version information
    // These pointers have not been AddRef'ed and
    // so they should not be dereferenced.  They are
    // merely kept to ID which pins have been enumerated.
    FPinCache: TList;
    { If while we are retrieving a pin for example from the filter an error
      occurs we assume that our internal state is stale with respect to the
      filter (someone may have deleted all the pins). We can check before
      starting whether or not the operation is likely to fail by asking the
      filter what it's current version number is. If the filter has not
      overriden the GetPinVersion method then this will always match }
    function AreWeOutOfSync: boolean;

    (* This method performs the same operations as Reset, except is does not clear
       the cache of pins already enumerated. *)
    function Refresh: HRESULT; stdcall;
  public
    constructor Create(Filter: TBCBaseFilter; EnumPins: TBCEnumPins);
    destructor Destroy; override;

    function Next(cPins: ULONG;  // place this many pins...
      out ppPins: IPin;          // ...in this array of IPin*
      pcFetched: PULONG          // actual count passed returned here
      ): HRESULT; stdcall;
    function Skip(cPins: ULONG): HRESULT; stdcall;
    function Reset: HRESULT; stdcall;
    function Clone(out ppEnum: IEnumPins): HRESULT; stdcall;
  end;

  TBCEnumMediaTypes = class(TInterfacedObject, IEnumMediaTypes)
  private
   FPosition: Cardinal;   // Current ordinal position
   FPin     : TBCBasePin; // The pin who owns us
   FVersion : LongInt;    // Media type version value
   function AreWeOutOfSync: boolean;
  public
    constructor Create(Pin: TBCBasePin; EnumMediaTypes: TBCEnumMediaTypes);
    destructor Destroy; override;
    function Next(cMediaTypes: ULONG; out ppMediaTypes: PAMMediaType;
      pcFetched: PULONG): HRESULT; stdcall;
    function Skip(cMediaTypes: ULONG): HRESULT; stdcall;
    function Reset: HRESULT; stdcall;
    function Clone(out ppEnum: IEnumMediaTypes): HRESULT; stdcall;
  end;


  TBCBaseOutputPin = class(TBCBasePin)
  protected
    FAllocator: IMemAllocator;
    // interface on the downstreaminput pin, set up in CheckConnect when we connect.
    FInputPin : IMemInputPin;
  public
    constructor Create(ObjectName: string; Filter: TBCBaseFilter; Lock: TBCCritSec;
      out hr: HRESULT; const Name: WideString);

    // override CompleteConnect() so we can negotiate an allocator
    function CompleteConnect(ReceivePin: IPin): HRESULT; override;
    // negotiate the allocator and its buffer size/count and other properties
    // Calls DecideBufferSize to set properties
    function DecideAllocator(Pin: IMemInputPin; out Alloc: IMemAllocator): HRESULT; virtual;
    // override this to set the buffer size and count. Return an error
    // if the size/count is not to your liking.
    // The allocator properties passed in are those requested by the
    // input pin - use eg the alignment and prefix members if you have
    // no preference on these.
    function DecideBufferSize(Alloc: IMemAllocator; propInputRequest: PAllocatorProperties): HRESULT; virtual;

    // returns an empty sample buffer from the allocator
    function GetDeliveryBuffer(out Sample: IMediaSample; StartTime: PReferenceTime;
      EndTime: PReferenceTime; Flags: Longword): HRESULT; virtual;

    // deliver a filled-in sample to the connected input pin
    // note - you need to release it after calling this. The receiving
    // pin will addref the sample if it needs to hold it beyond the
    // call.
    function Deliver(Sample: IMediaSample): HRESULT; virtual;

    // override this to control the connection
    function InitAllocator(out Alloc: IMemAllocator): HRESULT; virtual;
    function CheckConnect(Pin: IPin): HRESULT; override;
    function BreakConnect: HRESULT; override;

    // override to call Commit and Decommit
    function Active: HRESULT; override;
    function Inactive: HRESULT; override;

    // we have a default handling of EndOfStream which is to return
    // an error, since this should be called on input pins only
    function EndOfStream: HRESULT; override; stdcall;

    // called from elsewhere in our filter to pass EOS downstream to
    // our connected input pin
    function DeliverEndOfStream: HRESULT; virtual;

    // same for Begin/EndFlush - we handle Begin/EndFlush since it
    // is an error on an output pin, and we have Deliver methods to
    // call the methods on the connected pin
    function BeginFlush: HRESULT; override; stdcall;
    function EndFlush: HRESULT; override; stdcall;
    function DeliverBeginFlush: HRESULT; virtual;
    function DeliverEndFlush: HRESULT; virtual;

    // deliver NewSegment to connected pin - you will need to
    // override this if you queue any data in your output pin.
    function DeliverNewSegment(Start, Stop: TReferenceTime; Rate: double): HRESULT; virtual;
  end;

  TBCBaseInputPin = class(TBCBasePin, IMemInputPin)
  protected
    FAllocator: IMemAllocator;    // Default memory allocator
    // allocator is read-only, so received samples
    // cannot be modified (probably only relevant to in-place
    // transforms
    FReadOnly: boolean;

    //private:  this should really be private... only the MPEG code
    // currently looks at it directly and it should use IsFlushing().
    // in flushing state (between BeginFlush and EndFlush)
    // if True, all Receives are returned with S_FALSE
    FFlushing: boolean;

    // Sample properties - initalized in Receive

    FSampleProps: TAMSample2Properties;

  public

    constructor Create(ObjectName: string; Filter: TBCBaseFilter;
      Lock: TBCCritSec; out hr: HRESULT; Name: WideString);
    destructor Destroy; override;

    // ----------IMemInputPin--------------
    // return the allocator interface that this input pin
    // would like the output pin to use
    function GetAllocator(out ppAllocator: IMemAllocator): HRESULT; stdcall;
    // tell the input pin which allocator the output pin is actually
    // going to use.
    function NotifyAllocator(pAllocator: IMemAllocator; bReadOnly: BOOL): HRESULT; stdcall;
    // this method is optional (can return E_NOTIMPL).
    // default implementation returns E_NOTIMPL. Override if you have
    // specific alignment or prefix needs, but could use an upstream
    // allocator
    function GetAllocatorRequirements(out pProps: TAllocatorProperties): HRESULT; stdcall;
    // do something with this media sample
    function Receive(pSample: IMediaSample): HRESULT; virtual; stdcall;
    // do something with these media samples
    function ReceiveMultiple(var pSamples: IMediaSample; nSamples: Longint;
        out nSamplesProcessed: Longint): HRESULT; stdcall;
     // See if Receive() blocks
    function ReceiveCanBlock: HRESULT; stdcall;

    //-----------Helper-------------
    // Default handling for BeginFlush - call at the beginning
    // of your implementation (makes sure that all Receive calls

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色丁香久综合在线久综合在线观看| 久久精品欧美一区二区三区不卡| 91免费视频观看| 国产成人超碰人人澡人人澡| 捆绑变态av一区二区三区| 五月激情综合婷婷| 亚洲国产精品久久人人爱蜜臀| 一区二区三区国产| 一区二区不卡在线播放| 亚洲品质自拍视频网站| 一区二区三区高清不卡| 亚洲国产va精品久久久不卡综合| 亚洲综合av网| 首页国产丝袜综合| 蜜臀av国产精品久久久久| 狠狠v欧美v日韩v亚洲ⅴ| 美女视频黄久久| 精品一区二区日韩| 国产成人综合视频| 99视频一区二区三区| 色中色一区二区| 欧美偷拍一区二区| 欧美日韩二区三区| 日韩一区二区三| 337p粉嫩大胆噜噜噜噜噜91av | 国产·精品毛片| 成人a区在线观看| 91精品办公室少妇高潮对白| 欧美色图12p| 91精品免费观看| 久久综合久久综合久久| 中文字幕成人网| 亚洲综合丁香婷婷六月香| 丝袜美腿亚洲综合| 国产精品中文字幕一区二区三区| 成人激情校园春色| 欧美性色黄大片| 日韩欧美国产午夜精品| 中文字幕乱码亚洲精品一区| 亚洲色图.com| 三级久久三级久久久| 国产露脸91国语对白| 91丨porny丨首页| 884aa四虎影成人精品一区| 久久久99精品免费观看| 亚洲人123区| 六月婷婷色综合| av亚洲精华国产精华精华| 欧美日本在线播放| 久久久噜噜噜久噜久久综合| 亚洲精品免费电影| 精品系列免费在线观看| 91行情网站电视在线观看高清版| 日韩欧美一级在线播放| 1024国产精品| 久久se这里有精品| 欧洲国产伦久久久久久久| 精品国产91久久久久久久妲己| 亚洲人吸女人奶水| 久久精工是国产品牌吗| 色婷婷综合视频在线观看| 久久这里只有精品6| 一区二区三区日韩欧美| 国产精品系列在线播放| 欧美伦理视频网站| 国产精品家庭影院| 麻豆精品视频在线观看免费| 一本高清dvd不卡在线观看| 精品国产伦一区二区三区免费 | 99视频有精品| 精品国产电影一区二区| 午夜精品一区二区三区免费视频| av中文字幕不卡| 精品噜噜噜噜久久久久久久久试看 | 久久亚洲一区二区三区明星换脸| 艳妇臀荡乳欲伦亚洲一区| 国产精品亚洲综合一区在线观看| 欧美视频一区二区| 亚洲男同性恋视频| 韩国v欧美v亚洲v日本v| 欧美一区二区三区性视频| 亚洲一区二区三区四区在线免费观看| 丁香另类激情小说| 2017欧美狠狠色| 免费观看在线综合| 欧美性生活久久| 亚洲男同性恋视频| 91一区二区三区在线播放| 久久九九全国免费| 精品一区免费av| 精品少妇一区二区三区免费观看| 无吗不卡中文字幕| 欧美三日本三级三级在线播放| 亚洲免费在线播放| 色综合天天性综合| 18成人在线视频| 99国产精品久久久久久久久久| 欧美激情综合网| 成人中文字幕电影| 国产精品丝袜黑色高跟| 国产成人三级在线观看| www日韩大片| 国产精品一区二区视频| 久久久综合精品| 国产成人精品三级| 日本一区二区久久| 成人激情综合网站| 亚洲欧洲综合另类在线| 色88888久久久久久影院野外 | 免费美女久久99| 日韩欧美一二三四区| 久久国产精品露脸对白| www亚洲一区| 国产99久久久精品| 欧美韩国日本不卡| www.日韩av| 尤物在线观看一区| 在线日韩av片| 日韩在线一二三区| 日韩欧美一区二区免费| 极品瑜伽女神91| 中文字幕精品一区二区三区精品| 成人高清免费观看| 一区二区三区在线观看视频| 欧美视频一区二区三区四区| 天天综合网 天天综合色| 欧美一区二区三级| 国产精品伊人色| 亚洲精品免费在线| 日韩亚洲欧美在线| 国产精品一区三区| 亚洲毛片av在线| 欧美一区二区三区日韩视频| 国产精品综合二区| 亚洲伦在线观看| 91精品国产欧美一区二区成人| 国产伦精品一区二区三区视频青涩| 国产精品私人影院| 欧美性三三影院| 国产乱码精品一区二区三| 亚洲人成精品久久久久| 777xxx欧美| 成人99免费视频| 日本v片在线高清不卡在线观看| 久久久青草青青国产亚洲免观| 91在线观看高清| 老司机精品视频一区二区三区| 国产精品伦理一区二区| 在线播放中文一区| 国产**成人网毛片九色| 偷拍与自拍一区| 亚洲国产精品成人综合色在线婷婷| 在线亚洲免费视频| 美腿丝袜一区二区三区| 亚洲天天做日日做天天谢日日欢| 欧美电影在线免费观看| 粉嫩av一区二区三区| 午夜精品福利一区二区三区av| 久久精品男人天堂av| 欧美日韩一卡二卡| 风流少妇一区二区| 青青草国产成人99久久| 亚洲欧洲美洲综合色网| 日韩欧美电影一区| 欧美色男人天堂| 成人黄色777网| 精品一区二区成人精品| 亚洲第四色夜色| 国产精品久久久久久亚洲伦 | 国产精品成人网| 日韩一区和二区| 91小视频在线免费看| 黄色日韩网站视频| 天天色天天操综合| 亚洲女同ⅹxx女同tv| 久久影视一区二区| 欧美高清视频在线高清观看mv色露露十八| 成人综合在线观看| 黄色精品一二区| 日本成人在线视频网站| 亚洲精品国久久99热| 国产精品入口麻豆原神| 精品国产91洋老外米糕| 91精品综合久久久久久| 在线观看日韩毛片| 不卡大黄网站免费看| 国产精品18久久久久久vr| 美国精品在线观看| 日韩不卡免费视频| 亚洲国产精品影院| 亚洲激情中文1区| 亚洲视频一二区| 国产精品美女一区二区三区| 久久亚洲私人国产精品va媚药| 欧美一区二区网站| 6080日韩午夜伦伦午夜伦| 欧美性猛交一区二区三区精品 | 国产欧美精品一区| 精品88久久久久88久久久| 欧美一区二区三区视频在线|