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

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

?? mediaobj.idl

?? 墨香最新私服
?? IDL
字號:
//------------------------------------------------------------------------------
// File: MediaObj.idl
//
// Desc: Define the interfaces for DirectX Media Objects.  This file will be
//       processed by the MIDL tool to produce mediaobj.h and proxy-stub code.
//
// Copyright (c) 1999 - 2002, Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------------------------


import "unknwn.idl";
import "objidl.idl";

//  DMO_MEDIA_TYPE structure

cpp_quote("#ifdef __strmif_h__")
cpp_quote("typedef AM_MEDIA_TYPE DMO_MEDIA_TYPE;")
cpp_quote("#else")
typedef struct _DMOMediaType {
    GUID     majortype;
    GUID     subtype;
    BOOL     bFixedSizeSamples;
    BOOL     bTemporalCompression;
    ULONG    lSampleSize;
    GUID     formattype;
    IUnknown *pUnk;
    ULONG    cbFormat;
    [size_is(cbFormat)] BYTE * pbFormat;
} DMO_MEDIA_TYPE;
typedef LONGLONG REFERENCE_TIME;
cpp_quote("#endif")


// Per-buffer flags that apply to input buffers
enum _DMO_INPUT_DATA_BUFFER_FLAGS {
    DMO_INPUT_DATA_BUFFERF_SYNCPOINT       = 0x00000001,
    DMO_INPUT_DATA_BUFFERF_TIME            = 0x00000002,
    DMO_INPUT_DATA_BUFFERF_TIMELENGTH      = 0x00000004
};

// Per-buffer flags that apply to output buffers.
enum _DMO_OUTPUT_DATA_BUFFER_FLAGS {
    DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT       = 0x00000001,
    DMO_OUTPUT_DATA_BUFFERF_TIME            = 0x00000002,
    DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH      = 0x00000004,

    //
    // This flag means the object could have generated more data for this
    // output stream, even with no additional input from any input stream,
    // but the output buffer did not have sufficient room.
    //
    DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE      = 0x01000000
};

// Flags returned by GetInputStatus()
enum _DMO_INPUT_STATUS_FLAGS {
    //
    // ACCEPT_DATA indicates that the input stream is ready to accept
    // new data via ProcessInput().
    //
    DMO_INPUT_STATUSF_ACCEPT_DATA   = 0x00000001
};

// Flags returned by GetInputStreamInfo()
enum _DMO_INPUT_STREAM_INFO_FLAGS {
    DMO_INPUT_STREAMF_WHOLE_SAMPLES            = 0x00000001,
    DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x00000002,
    DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE        = 0x00000004,
    DMO_INPUT_STREAMF_HOLDS_BUFFERS            = 0x00000008
};

// Flags returned by GetOutputStreamInfo()
enum _DMO_OUTPUT_STREAM_INFO_FLAGS {
    DMO_OUTPUT_STREAMF_WHOLE_SAMPLES            = 0x00000001,
    DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x00000002,
    DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE        = 0x00000004,
    DMO_OUTPUT_STREAMF_DISCARDABLE              = 0x00000008,
    DMO_OUTPUT_STREAMF_OPTIONAL                 = 0x00000010
};

//  SetType flags
enum _DMO_SET_TYPE_FLAGS {
    DMO_SET_TYPEF_TEST_ONLY   = 0x00000001,// check but don't set
    DMO_SET_TYPEF_CLEAR       = 0x00000002 // unset
};

//  Process Output Flags
enum _DMO_PROCESS_OUTPUT_FLAGS {
    DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x00000001 //  Discard
};

// Buffer wrapper interface
[
    object,
    uuid(59eff8b9-938c-4a26-82f2-95cb84cdc837)
]
interface IMediaBuffer : IUnknown
{
    HRESULT SetLength(
       DWORD cbLength
    );
    HRESULT GetMaxLength(
       [out] DWORD *pcbMaxLength
    );
    HRESULT GetBufferAndLength(
       [out] BYTE **ppBuffer,  // not filled if NULL
       [out] DWORD *pcbLength // not filled if NULL
    );
}

//
// Output buffer info structure: one of these must be passed in for each
// output stream with every ProcessOutput() call
// All [out] fields should be
// assumed undefined if ProcessOutput() failed
//
typedef struct _DMO_OUTPUT_DATA_BUFFER {

    IMediaBuffer *pBuffer; // [in] can be NULL

    // ProcessOutput() must set any appropriate flags and zero out the rest.
    DWORD dwStatus; // [out] DMO_OUTPUT_DATA_BUFFERF_XXX (INCOMPLETE, etc.)

    //
    // Each of these is valid if the corresponding flag is set in dwStatus
    //
    REFERENCE_TIME rtTimestamp; // [out]
    REFERENCE_TIME rtTimelength; // [out]
} DMO_OUTPUT_DATA_BUFFER, *PDMO_OUTPUT_DATA_BUFFER;


//  Interface supported by media objects
[
    object,
    uuid(d8ad0f58-5494-4102-97c5-ec798e59bcf4)
]
interface IMediaObject : IUnknown
{

//
// Stream enumeration
//
        HRESULT GetStreamCount(
                [out] DWORD *pcInputStreams,
                [out] DWORD *pcOutputStreams
        );
        HRESULT GetInputStreamInfo(
                DWORD dwInputStreamIndex, // 0-based
                [out] DWORD *pdwFlags // HOLDS_BUFFERS
        );
        HRESULT GetOutputStreamInfo(
                DWORD dwOutputStreamIndex, // 0-based
                [out] DWORD *pdwFlags      // Media object sets to 0
        );

//
// Mediatypes
//
        //
        // GetType - iterate through media types supported by a stream.
        // Returns S_FALSE if the type index is out of range ("no more types").
        //
        HRESULT GetInputType(
                DWORD dwInputStreamIndex,
                DWORD dwTypeIndex, // 0-based
                [out] DMO_MEDIA_TYPE *pmt
        );
        HRESULT GetOutputType(
                DWORD dwOutputStreamIndex,
                DWORD dwTypeIndex, // 0-based
                [out] DMO_MEDIA_TYPE *pmt
        );

        //
        // SetType - tell the object the type of data it will work with.
        //
        HRESULT SetInputType(
                DWORD dwInputStreamIndex,
                [in] const DMO_MEDIA_TYPE *pmt,
                DWORD dwFlags // test only
        );
        HRESULT SetOutputType(
                DWORD dwOutputStreamIndex,
                [in]  const DMO_MEDIA_TYPE *pmt,
                DWORD dwFlags // test only
        );

        //
        // GetCurrentType - get the last mediatype supplied via SetType.
        // Returns S_FALSE if SetType has not been called.
        //
        HRESULT GetInputCurrentType(
                DWORD dwInputStreamIndex,
                [out] DMO_MEDIA_TYPE *pmt
        );
        HRESULT GetOutputCurrentType(
                DWORD dwOutputStreamIndex,
                [out] DMO_MEDIA_TYPE *pmt
        );

//
// SizeInfo
//
        //
        // GetSizeInfo - Get buffer size requirementes of a stream.
        //
        // If buffer size depends on the media type used, the object should
        // base its response on the most recent media type set for this stream.
        // If no mediatype has been set, the object may return an error.
        //
        HRESULT GetInputSizeInfo(
                DWORD dwInputStreamIndex,
                [out] DWORD *pcbSize, // size of input 'quantum'
                [out] DWORD *pcbMaxLookahead, // max total bytes held
                [out] DWORD *pcbAlignment  // buffer alignment requirement
        );
        HRESULT GetOutputSizeInfo(
                DWORD dwOutputStreamIndex,
                [out] DWORD *pcbSize, // size of output 'quantum'
                [out] DWORD *pcbAlignment  // buffer alignment requirement
        );

//
// Latency methods
//
        HRESULT GetInputMaxLatency(
                DWORD dwInputStreamIndex,
                [out] REFERENCE_TIME *prtMaxLatency
        );
        HRESULT SetInputMaxLatency(
                DWORD dwInputStreamIndex,
                REFERENCE_TIME rtMaxLatency
        );

//
// Streaming / state methods
//
        //
        // Flush() - discard any buffered data.
        //
        HRESULT Flush();

        //
        // Send a discontinuity to an input stream.  The object will not
        // accept any more data on this input stream until the discontinuity
        // has been completely processed, which may involve multiple
        // ProcessOutput() calls.
        //
        HRESULT Discontinuity(DWORD dwInputStreamIndex);

        //
        // If a streaming object needs to perform any time consuming
        // initialization before it can stream data, it should do it inside
        // AllocateStreamingResources() rather than during the first process
        // call.
        //
        // This method is NOT guaranteed to be called before streaming
        // starts.  If it is not called, the object should perform any
        // required initialization during a process call.
        //
        HRESULT AllocateStreamingResources();

        // Free anything allocated in AllocateStreamingResources().
        HRESULT FreeStreamingResources();

        // GetInputStatus - the only flag defined right now is ACCEPT_DATA.
        HRESULT GetInputStatus(
                DWORD dwInputStreamIndex,
                [out] DWORD *dwFlags // ACCEPT_DATA
        );

        //
        // Pass one new buffer to an input stream
        //
        HRESULT ProcessInput(
                DWORD dwInputStreamIndex,
                IMediaBuffer *pBuffer, // must not be NULL
                DWORD dwFlags, // DMO_INPUT_DATA_BUFFERF_XXX (syncpoint, etc.)
                REFERENCE_TIME rtTimestamp, // valid if flag set
                REFERENCE_TIME rtTimelength // valid if flag set
        );

        //
        // ProcessOutput() - generate output for current input buffers
        //
        // Output stream specific status information is returned in the
        // dwStatus member of each buffer wrapper structure.
        //
        HRESULT ProcessOutput(
                DWORD dwFlags, // DMO_PROCESS_OUTPUT_FLAGS
                DWORD cOutputBufferCount, // # returned by GetStreamCount()
        [in,out,size_is(cOutputBufferCount)]
                   DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, // one per stream
        [out] DWORD *pdwStatus  // TBD, must be set to 0
    );

        //  Locking - lock if bLock is TRUE, otherwise unlock
        HRESULT Lock(LONG bLock);
};


//
// Interface returned by the DMO enumeration API
//
[
object,
uuid(2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f)
]
interface IEnumDMO : IUnknown {
    HRESULT Next(
        DWORD cItemsToFetch,
        [out, size_is(cItemsToFetch), length_is(*pcItemsFetched)] CLSID *pCLSID,
        [out, size_is(cItemsToFetch), length_is(*pcItemsFetched), string] WCHAR **Names,
        [out] DWORD *pcItemsFetched
    );
    HRESULT Skip(
        DWORD cItemsToSkip
    );
    HRESULT Reset(void);
    HRESULT Clone(
        [out] IEnumDMO **ppEnum
    );
}


// Flags for IMediaObjectInPlace::Process
enum _DMO_INPLACE_PROCESS_FLAGS {
    DMO_INPLACE_NORMAL = 0x00000000,
    DMO_INPLACE_ZERO   = 0x00000001
};

[
object,
uuid(651b9ad0-0fc7-4aa9-9538-d89931010741)
]
interface IMediaObjectInPlace : IUnknown {

    // Proces - Given a buffer of size ulSize, put the output
    // of the DMO into the same buffer.
    HRESULT Process(
        [in] ULONG ulSize,
        [in,out,size_is(ulSize)] BYTE* pData,
        [in] REFERENCE_TIME refTimeStart,
        [in] DWORD dwFlags
    );

    // Create a copy of the In-Place Media Object. This allows
    // for very fast initialization of a number of In-Place objects
    // in a known state.
    HRESULT Clone(
            [out] IMediaObjectInPlace **ppMediaObject
    );

    // GetLatency - Returns a REFERENCE_TIME value
    // (1 tick = 100ns) which corresponds to the latency time
    // processing this effect will add to the graph. This assumes
    // the effect cost per buffer is a constant.
    HRESULT GetLatency(
    	[out] REFERENCE_TIME *pLatencyTime
    );
}

// Quality control status flags
enum _DMO_QUALITY_STATUS_FLAGS {
    DMO_QUALITY_STATUS_ENABLED = 0x00000001
};

[
object,
uuid(65abea96-cf36-453f-af8a-705e98f16260)
]
interface IDMOQualityControl : IUnknown {
    HRESULT SetNow(
        [in] REFERENCE_TIME rtNow
    );
    HRESULT SetStatus(
        [in] DWORD dwFlags
    );
    HRESULT GetStatus(
        [out] DWORD *pdwFlags
    );
}

// Flags for IVideoOutputOptimizations
enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS {
    DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x00000001
};

[
object,
uuid(be8f4f4e-5b16-4d29-b350-7f6b5d9298ac)
]
interface IDMOVideoOutputOptimizations : IUnknown {
    HRESULT QueryOperationModePreferences (
        ULONG ulOutputStreamIndex,
        DWORD *pdwRequestedCapabilities
    );
    HRESULT SetOperationMode (
        ULONG ulOutputStreamIndex,
        DWORD dwEnabledFeatures
    );
    HRESULT GetCurrentOperationMode (
        ULONG ulOutputStreamIndex,
        DWORD *pdwEnabledFeatures
    );
    HRESULT GetCurrentSampleRequirements (
        ULONG ulOutputStreamIndex,
        DWORD *pdwRequestedFeatures
    );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕中文字幕一区二区| 国产一区欧美日韩| 91精品婷婷国产综合久久性色 | 欧美日韩另类一区| 日日摸夜夜添夜夜添亚洲女人| 欧美二区乱c少妇| 成人激情图片网| 亚洲综合丝袜美腿| 久久精品在线观看| 欧美人xxxx| 色悠悠亚洲一区二区| 韩国av一区二区三区| 一区二区高清免费观看影视大全| 欧美一区二区人人喊爽| 99天天综合性| caoporm超碰国产精品| 日韩av在线播放中文字幕| 国产精品免费av| 久久综合久久久久88| 欧美日韩国产高清一区二区三区| 99在线精品免费| 成人免费高清在线观看| 粉嫩av一区二区三区| 国内精品嫩模私拍在线| 狠狠色丁香婷综合久久| 蜜臀av在线播放一区二区三区| 亚洲国产一区二区视频| 一区二区三区免费看视频| 亚洲三级久久久| 亚洲成人免费看| 亚洲成人av一区二区| 天天色 色综合| 蜜芽一区二区三区| 国产另类ts人妖一区二区| 精品午夜久久福利影院| 成人午夜在线视频| 91麻豆国产福利精品| 欧美精选在线播放| 久久久久99精品国产片| 亚洲少妇30p| 亚洲va在线va天堂| 国产在线不卡一卡二卡三卡四卡| 国模无码大尺度一区二区三区| 国产成人免费网站| 在线免费观看日韩欧美| 精品国产乱码久久久久久夜甘婷婷| 亚洲精品在线免费播放| 亚洲一二三区不卡| 国产一区二区精品久久| 在线观看精品一区| 精品国产乱码久久| 亚洲午夜电影在线观看| 国产成人精品免费| 欧美男同性恋视频网站| 国产精品看片你懂得| 久久国产精品99精品国产| 97久久人人超碰| 国产欧美日韩在线| 蜜臀av一区二区| 3751色影院一区二区三区| 国产精品久久精品日日| 激情五月激情综合网| 欧美日韩高清一区二区| 亚洲精品国久久99热| 国产成人在线网站| 欧美精品一区二区三区在线| 亚洲国产你懂的| 欧美日韩一区二区三区四区五区| 中文字幕+乱码+中文字幕一区| 国产激情91久久精品导航| 精品黑人一区二区三区久久| 麻豆精品一二三| 久久久精品蜜桃| 成人精品gif动图一区| 国产精品电影一区二区| www.欧美.com| 亚洲午夜视频在线观看| 欧美精品自拍偷拍| 国产麻豆精品一区二区| 国产精品色眯眯| 欧美在线观看禁18| 日韩国产在线一| 精品国免费一区二区三区| 国产成人精品亚洲日本在线桃色| 国产午夜精品美女毛片视频| 成人国产亚洲欧美成人综合网| 一区二区三区在线视频播放| 欧美日韩五月天| 国产精品伊人色| 亚洲一级在线观看| 26uuu亚洲| 欧美日韩在线免费视频| 国产成人欧美日韩在线电影| 亚洲精品成人精品456| 精品久久久久久综合日本欧美| 色综合咪咪久久| 国产一二三精品| 蜜臀av亚洲一区中文字幕| 日本一区二区成人在线| 日韩欧美国产成人一区二区| 91欧美一区二区| 国产成人av一区二区| 日韩高清欧美激情| 无吗不卡中文字幕| 亚洲高清中文字幕| 亚洲一区二区三区小说| 亚洲欧洲在线观看av| 国产精品高清亚洲| 国产网红主播福利一区二区| 久久亚洲综合色| 精品国产一区二区三区久久久蜜月| 欧美日韩一区小说| 5566中文字幕一区二区电影| 欧美日韩在线直播| 91麻豆精品国产91久久久使用方法| 色av成人天堂桃色av| 在线这里只有精品| 欧美三级一区二区| 538在线一区二区精品国产| 欧美精品在线一区二区三区| 91精品婷婷国产综合久久性色| 538在线一区二区精品国产| 日韩精品中文字幕一区二区三区| 日韩亚洲欧美一区| 国产精品女上位| 亚洲韩国精品一区| 国产99久久久久| 欧美色视频在线| 国产色综合久久| 三级在线观看一区二区| 国产一区免费电影| 欧美视频在线一区二区三区 | 1000精品久久久久久久久| 亚洲一区二区中文在线| 国产一区二区三区四| 在线精品视频一区二区| 精品女同一区二区| 亚洲图片自拍偷拍| 99re这里只有精品6| 欧美一级国产精品| 亚洲成在人线免费| 91丨九色丨国产丨porny| 久久综合九色综合久久久精品综合| 中文字幕一区在线| 国产成人自拍网| 2024国产精品视频| 日韩精品五月天| 欧美日韩五月天| 一区二区欧美在线观看| 99re热视频这里只精品| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲三级小视频| 国产电影一区二区三区| 欧美mv和日韩mv国产网站| 日韩不卡一区二区| 91精品国产综合久久久久久| 亚洲成在人线在线播放| 欧美日韩五月天| 久久国产精品色| 久久久www成人免费无遮挡大片| 经典三级一区二区| 国产欧美综合色| 色婷婷综合久久久久中文| 自拍偷拍亚洲欧美日韩| 欧美日韩大陆在线| 免费三级欧美电影| 欧美激情在线免费观看| 欧美主播一区二区三区美女| 亚洲小少妇裸体bbw| 日韩午夜av电影| 丁香六月综合激情| 午夜久久久久久久久| 2020国产精品| 欧美日韩精品欧美日韩精品| 激情欧美日韩一区二区| 亚洲一区二区三区三| 精品99一区二区三区| 欧美午夜不卡在线观看免费| 国产伦理精品不卡| 日韩不卡免费视频| 一区二区三区不卡在线观看 | 日本国产一区二区| 国产精品99久久久久久似苏梦涵| 亚洲乱码国产乱码精品精小说 | 久热成人在线视频| 亚洲在线视频一区| 日韩久久一区二区| 久久久久久9999| 精品国产一区二区三区忘忧草 | 91精品中文字幕一区二区三区| 风间由美一区二区av101| 国产自产视频一区二区三区| 午夜精品久久久久久久久久| 亚洲精品乱码久久久久久黑人 | 欧美激情综合网| 国产视频在线观看一区二区三区 | 亚洲国产精品高清| 国产精品女同一区二区三区| 久久精品男人的天堂| 国产亚洲精久久久久久|