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

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

?? mediaobj.idl

?? vc6.0完整版
?? 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一区二区三区免费野_久草精品视频
精品国产乱码久久久久久图片| 国产综合久久久久久鬼色| 99久久久精品| 中文字幕一区在线观看视频| 成人午夜激情在线| 亚洲黄色录像片| 欧美久久久久免费| 久草中文综合在线| 久久精品日韩一区二区三区| 丁香婷婷综合激情五月色| 亚洲少妇中出一区| 欧美精品丝袜久久久中文字幕| 裸体一区二区三区| 国产精品成人免费精品自在线观看| 91免费在线看| 偷拍亚洲欧洲综合| 国产欧美日韩综合| 在线欧美小视频| 黄网站免费久久| 综合自拍亚洲综合图不卡区| 欧美日韩国产综合视频在线观看| 久久99国产乱子伦精品免费| 国产精品美女久久久久aⅴ| 91福利在线导航| 国产在线一区观看| 一区二区成人在线视频| 精品少妇一区二区三区| 不卡的av电影| 男人操女人的视频在线观看欧美| 国产午夜精品久久久久久久| 欧美视频一区在线观看| 国产成人精品一区二| 亚洲成av人片一区二区| 中文字幕欧美日韩一区| 在线观看91精品国产麻豆| 成人黄色片在线观看| 免费观看一级特黄欧美大片| 国产精品成人一区二区艾草| 日韩欧美国产电影| 欧洲av一区二区嗯嗯嗯啊| 黄色小说综合网站| 午夜视频在线观看一区二区| 国产精品国产a级| 欧美电视剧免费全集观看| 91玉足脚交白嫩脚丫在线播放| 热久久久久久久| 亚洲一区二区三区四区在线免费观看 | 制服丝袜日韩国产| 99精品黄色片免费大全| 狠狠网亚洲精品| 天堂va蜜桃一区二区三区漫画版| 国产精品免费aⅴ片在线观看| 日韩一二三区不卡| 欧美日本韩国一区| 色婷婷久久99综合精品jk白丝 | 成人综合婷婷国产精品久久蜜臀 | 国产一区二区三区观看| 日日夜夜精品视频天天综合网| 最好看的中文字幕久久| 欧美韩日一区二区三区| 精品成人免费观看| 日韩午夜中文字幕| 欧美日本一区二区在线观看| 色av成人天堂桃色av| 91免费在线视频观看| 99久久免费视频.com| 不卡一区二区三区四区| 国产精品99久久久久久久vr | 视频一区在线播放| 亚洲第一成人在线| 亚洲小说欧美激情另类| 亚洲精品日产精品乱码不卡| 亚洲欧美偷拍卡通变态| 国产精品午夜在线| 中文字幕欧美三区| 亚洲欧美在线另类| 亚洲人成网站色在线观看| 成人免费一区二区三区视频| 中文字幕亚洲综合久久菠萝蜜| 国产精品久久福利| 国产精品久久综合| 亚洲免费大片在线观看| 一区二区三区四区在线播放| 亚洲综合色自拍一区| 亚洲已满18点击进入久久| 亚洲影院理伦片| 日本视频在线一区| 韩国中文字幕2020精品| 国产成人av一区二区三区在线观看| 国产一区二区三区美女| 成人精品一区二区三区四区 | 欧美在线视频不卡| 欧美日韩成人在线| 亚洲精品一区二区三区精华液 | 91女人视频在线观看| 欧美艳星brazzers| 欧美一级在线观看| 久久久久久日产精品| 国产精品麻豆网站| 一区二区三区电影在线播| 亚洲国产视频一区二区| 久久99国内精品| 成人精品国产一区二区4080| 色94色欧美sute亚洲线路二| 91精品国产综合久久精品| 欧美精品一区视频| 亚洲免费毛片网站| 日本色综合中文字幕| 成人综合日日夜夜| 欧洲激情一区二区| 亚洲精品一区二区三区精华液| 中文字幕乱码一区二区免费| 亚洲国产一二三| 国产在线播放一区二区三区| av在线不卡免费看| 欧美精品1区2区3区| 欧美国产精品中文字幕| 亚洲国产aⅴ天堂久久| 韩国一区二区三区| 91免费国产在线观看| 欧美一级久久久| 国产精品久久久久久久久图文区 | 国产九色sp调教91| 在线一区二区三区四区五区| 久久日一线二线三线suv| 亚洲人成电影网站色mp4| 久久国产精品色| 色猫猫国产区一区二在线视频| 精品久久久久久久久久久院品网 | 中文字幕欧美激情| 麻豆精品在线看| 欧洲精品一区二区| 国产精品久久久一本精品| 日韩高清不卡一区| 91在线高清观看| 欧美激情一区在线观看| 欧美a一区二区| 欧美亚洲国产一卡| 国产精品每日更新在线播放网址| 日韩av一区二区三区四区| 色偷偷久久一区二区三区| 欧美国产乱子伦| 国产精品亚洲成人| 日韩亚洲欧美在线观看| 亚洲国产精品久久久男人的天堂 | 欧美性受极品xxxx喷水| 中文字幕在线不卡| 成人久久久精品乱码一区二区三区| 日韩精品专区在线影院重磅| 视频一区在线视频| 欧美年轻男男videosbes| 亚洲美女视频在线观看| 成人午夜激情在线| 中文字幕精品一区二区精品绿巨人 | 韩国一区二区三区| 日韩久久精品一区| 精品一区二区免费视频| 欧美一区日本一区韩国一区| 亚洲一区二区三区激情| 在线国产亚洲欧美| 一区二区三区在线播| 91搞黄在线观看| 一区二区三区视频在线观看| 91激情五月电影| 亚洲尤物在线视频观看| 欧美日韩一本到| 性欧美疯狂xxxxbbbb| 欧美高清你懂得| 日韩国产精品久久久久久亚洲| 欧美精品日韩综合在线| 日本欧美一区二区在线观看| 欧美一区二区三区四区视频| 麻豆精品在线观看| 久久九九影视网| 高清不卡在线观看| 国产调教视频一区| 成人高清视频在线| 亚洲人快播电影网| 欧美日韩日日夜夜| 奇米综合一区二区三区精品视频| 欧美大胆一级视频| 国产麻豆成人精品| 一色桃子久久精品亚洲| 日本久久一区二区| 亚洲va韩国va欧美va精品| 日韩视频不卡中文| 国产精品一区二区在线观看网站| 久久精品日韩一区二区三区| 99久久综合色| 日韩在线观看一区二区| 日韩亚洲欧美一区二区三区| 国产老肥熟一区二区三区| 中文字幕亚洲不卡| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 爽爽淫人综合网网站| 久久精品男人天堂av| 色综合一个色综合| 久久激五月天综合精品| 亚洲欧洲成人精品av97| 欧美福利电影网|