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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? strmctxt.h

?? windows CE 的BSP開發(fā)包.包含眾多的驅(qū)動(dòng)程序和OAL層的開發(fā)代碼
?? H
字號(hào):
#pragma once
// -----------------------------------------------------------------------------
//
//      THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
//      ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
//      THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
//      PARTICULAR PURPOSE.
//      Copyright (c) 1995-2000 Microsoft Corporation.  All rights reserved.
//
// -----------------------------------------------------------------------------

#define VOLSHIFT (32-BITSPERSAMPLE)

extern const DWORD GainMap[];

class StreamContext
{
public:
    LIST_ENTRY  m_Link;               // Link into list of streams

    StreamContext() {};
    virtual ~StreamContext() {};

    LONG AddRef();
    LONG Release();

    virtual HRESULT Open(DeviceContext *pDeviceContext, LPWAVEOPENDESC lpWOD, DWORD dwFlags);
    virtual DWORD Close();
    virtual DWORD GetPos(PMMTIME pmmt);

    virtual DWORD Run();
    virtual DWORD Stop();
    virtual DWORD Reset();
    virtual PBYTE Render(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast)=0;

    BOOL StillPlaying() {return (m_lpWaveHdrHead!=NULL);}
    DWORD GetByteCount() {return m_dwByteCount;}
    WAVEFORMATEX *GetWaveFormat() {return &m_WaveFormat;}
    DeviceContext *GetDeviceContext() { return m_pDeviceContext; }

    void DoDriverCallback(UINT msg, DWORD dwParam1, DWORD dwParam2)
    {
        m_pfnCallback(m_hWave,msg,m_dwInstance,dwParam1,dwParam2);
    }
    virtual DoCallbackReturnBuffer(LPWAVEHDR lpHdr)
    {
        DoDriverCallback(WOM_DONE,(DWORD)lpHdr,0);
    }
    virtual DoCallbackStreamOpened()
    {
        DoDriverCallback(WOM_OPEN,0,0);
    }
    virtual DoCallbackStreamClosed()
    {
        DoDriverCallback(WOM_CLOSE,0,0);
    }

    virtual DWORD QueueBuffer(LPWAVEHDR lpWaveHdr);
    PBYTE GetNextBuffer();

    // Default implementation
    void ReturnBuffer(LPWAVEHDR lpHdr)
    {
        lpHdr->dwFlags &= ~WHDR_INQUEUE;
        lpHdr->dwFlags |= WHDR_DONE;
        DoCallbackReturnBuffer(lpHdr);
    }

    DWORD GetGain()
    {
        return m_dwGain;
    }

    DWORD SetGain(DWORD dwGain)
    {
        m_dwGain = dwGain;
        GainChange();
        return MMSYSERR_NOERROR;
    }

    DWORD SetSecondaryGainClass(DWORD GainClass)
    {
        if (GainClass>=SECONDARYGAINCLASSMAX)
        {
            return MMSYSERR_ERROR;
        }
        m_SecondaryGainClass=GainClass;
        GainChange();
        return MMSYSERR_NOERROR;
    }

    DWORD MapGain(DWORD Gain);

    virtual void GainChange()
    {
        m_fxpGain = MapGain(m_dwGain);
    }

    static void ClearBuffer(PBYTE pStart, PBYTE pEnd) {memset(pStart,0,pEnd-pStart);}

    DWORD BreakLoop();

    DWORD ForceSpeaker (BOOL bForceSpeaker);

protected:
    LONG            m_RefCount;
    BOOL            m_bRunning;         // Is stream running or stopped

    DWORD           m_dwFlags;          // allocation flags
    HWAVE           m_hWave;            // handle for stream
    DRVCALLBACK*    m_pfnCallback;      // client's callback
    DWORD           m_dwInstance;       // client's instance data

    WAVEFORMATEX    m_WaveFormat;       // Format of wave data

    LPWAVEHDR   m_lpWaveHdrHead;
    LPWAVEHDR   m_lpWaveHdrCurrent;
    LPWAVEHDR   m_lpWaveHdrTail;
    PBYTE       m_lpCurrData;            // position in current buffer
    PBYTE       m_lpCurrDataEnd;         // end of current buffer

    DWORD       m_dwByteCount;          // byte count since last reset

    DeviceContext *m_pDeviceContext;   // Device which this stream renders to

    // Loopcount shouldn't really be here, since it's really for wave output only, but it makes things easier
    DWORD       m_dwLoopCount;          // Number of times left through loop

    DWORD       m_dwGain;
    DWORD       m_SecondaryGainClass;
    DWORD       m_fxpGain;

    BOOL        m_bForceSpeaker;
};

class WaveStreamContext : public StreamContext
{
public:
    HRESULT Open(DeviceContext *pDeviceContext, LPWAVEOPENDESC lpWOD, DWORD dwFlags);

    DWORD GetRate(DWORD *pdwMultiplier);
    virtual DWORD SetRate(DWORD dwMultiplier) = 0;
    PBYTE Render(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);
    virtual PBYTE Render2(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast)=0;

protected:
    PCM_TYPE m_SampleType;       // Enum of sample type, e.g. M8, M16, S8, S16
    ULONG    m_SampleSize;       // # of bytes per sample in client buffer
    DWORD    m_DeltaT;   // Sample rate conversion factor
    DWORD    m_dwMultiplier;
    LONG     m_PrevSamp[OUTCHANNELS];
    LONG     m_CurrSamp[OUTCHANNELS];
    LONG     m_CurrT;
};

class InputStreamContext : public WaveStreamContext
{
public:
    DWORD SetRate(DWORD dwMultiplier);
    DWORD Stop();   // On input, stop has special handling
    PBYTE Render2(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);
    virtual DoCallbackReturnBuffer(LPWAVEHDR lpHdr)
    {
        DoDriverCallback(WIM_DATA,(DWORD)lpHdr,0);
    }
    virtual DoCallbackStreamOpened()
    {
        DoDriverCallback(WIM_OPEN,0,0);
    }
    virtual DoCallbackStreamClosed()
    {
        DoDriverCallback(WIM_CLOSE,0,0);
    }
};

class OutputStreamContext : public WaveStreamContext
{
public:
    HRESULT Open(DeviceContext *pDeviceContext, LPWAVEOPENDESC lpWOD, DWORD dwFlags);
    DWORD Reset();

    DWORD SetRate(DWORD dwMultiplier);
};

class OutputStreamContextM8 : public OutputStreamContext
{
public:
    PBYTE Render2(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);
};
class OutputStreamContextM16 : public OutputStreamContext
{
public:
    PBYTE Render2(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);
};
class OutputStreamContextS8 : public OutputStreamContext
{
public:
    PBYTE Render2(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);
};
class OutputStreamContextS16 : public OutputStreamContext
{
public:
    PBYTE Render2(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);
};


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产剧情一区在线| 欧美女孩性生活视频| 久久疯狂做爰流白浆xx| 午夜精品一区二区三区三上悠亚| 国产精品久久精品日日| 中文字幕第一区综合| 国产欧美视频在线观看| 亚洲国产精品传媒在线观看| 国产欧美日韩精品一区| 亚洲国产岛国毛片在线| 国产欧美一区二区精品久导航| 久久久久久免费| 精品久久久久一区| 国产午夜三级一区二区三| 久久久久久久久久久99999| 国产午夜精品一区二区 | 中文字幕一区av| 一区精品在线播放| 亚洲靠逼com| 亚洲国产成人av网| 日欧美一区二区| 韩国成人在线视频| 国产 日韩 欧美大片| 北岛玲一区二区三区四区| 91小视频在线| 欧美久久久久免费| 欧美v亚洲v综合ⅴ国产v| 久久久www免费人成精品| 中文字幕在线播放不卡一区| 亚洲第一狼人社区| 伦理电影国产精品| 国产精品一区在线观看乱码 | 大白屁股一区二区视频| 99精品视频在线观看| 欧美日韩在线播放| 精品欧美乱码久久久久久| 国产欧美1区2区3区| 亚洲免费在线观看| 日本免费在线视频不卡一不卡二| 韩国三级在线一区| 97久久超碰国产精品电影| 欧美男同性恋视频网站| 国产丝袜欧美中文另类| 亚洲一区二区精品久久av| 久久精品国产久精国产| 成人av在线电影| 欧美日韩国产电影| 中文字幕 久热精品 视频在线| 亚洲高清视频的网址| 国产精品资源网站| 欧美视频中文字幕| 久久久亚洲午夜电影| 亚洲欧美另类在线| 精品一区二区三区欧美| 一本久道久久综合中文字幕| 日韩精品一区国产麻豆| 亚洲视频资源在线| 九色|91porny| 欧美艳星brazzers| 国产欧美日韩中文久久| 日韩精品91亚洲二区在线观看| 成人午夜激情在线| 精品三级在线看| 亚洲一二三四在线| 国产99久久久国产精品| 91精品国产麻豆国产自产在线 | 国产丝袜在线精品| 日韩精品色哟哟| 91免费看片在线观看| 久久综合一区二区| 日韩电影在线看| 91丨porny丨最新| 久久久久久免费毛片精品| 日本麻豆一区二区三区视频| 色综合一个色综合亚洲| 久久精品人人做人人爽人人| 老汉av免费一区二区三区| 欧美亚洲免费在线一区| 日韩一区在线播放| 国产精品资源在线看| 日韩欧美激情一区| 天天亚洲美女在线视频| 日本乱码高清不卡字幕| 欧美国产乱子伦| 国产高清在线观看免费不卡| 欧美第一区第二区| 日韩制服丝袜先锋影音| 91国内精品野花午夜精品| 中文字幕亚洲一区二区va在线| 韩日欧美一区二区三区| 欧美一级艳片视频免费观看| 日韩精品1区2区3区| 欧美三级三级三级爽爽爽| 一区二区三区在线视频免费| 99热在这里有精品免费| 国产欧美一区二区精品秋霞影院| 国产麻豆视频一区| 久久久青草青青国产亚洲免观| 精品一区二区三区久久久| 欧美www视频| 国内久久精品视频| 欧美精品一区二区在线观看| 久久精品国产免费| 26uuu久久综合| 国产一区二区三区香蕉| 久久综合九色综合欧美98 | 日韩欧美国产系列| 免费人成精品欧美精品| 91精品国产一区二区| 日韩高清在线电影| 日韩精品一区二区三区视频 | 日本不卡一二三| 日韩欧美亚洲另类制服综合在线| 青青草国产精品97视觉盛宴 | 亚洲一区二区三区四区五区黄 | 日韩视频免费直播| 久久国产人妖系列| 2020国产精品久久精品美国| 国产一区欧美一区| 日本一区二区久久| 91丨九色丨蝌蚪富婆spa| 亚洲综合图片区| 91 com成人网| 韩国中文字幕2020精品| 国产免费成人在线视频| 91污片在线观看| 亚洲动漫第一页| 欧美一区二区三区视频| 狠狠色狠狠色综合系列| 欧美激情一区二区三区蜜桃视频| a亚洲天堂av| 亚洲高清免费在线| 精品少妇一区二区三区在线播放| 国产美女精品一区二区三区| 中文字幕在线观看不卡| 欧美日韩在线播| 国产九九视频一区二区三区| 中文字幕字幕中文在线中不卡视频| 欧美在线视频你懂得| 免费一级欧美片在线观看| 国产精品日产欧美久久久久| 精品视频一区三区九区| 久久av资源站| 1000精品久久久久久久久| 欧美三级在线视频| 国内欧美视频一区二区| 亚洲视频一二区| 日韩一级免费观看| 国产成人免费9x9x人网站视频| 亚洲最大成人网4388xx| 欧美videos中文字幕| 99精品国产99久久久久久白柏| 亚洲va欧美va天堂v国产综合| 欧美精品一区二区三| 91蜜桃视频在线| 精品一区二区三区在线观看| 亚洲视频免费观看| 精品久久久久av影院| 91免费看`日韩一区二区| 久久国产乱子精品免费女| 综合网在线视频| 精品少妇一区二区三区在线视频| 色av成人天堂桃色av| 国内久久精品视频| 亚洲国产精品嫩草影院| 国产精品日韩精品欧美在线| 日韩欧美一级二级三级 | 国产精品国产三级国产aⅴ无密码| 欧美精品一卡两卡| 福利一区二区在线观看| 奇米精品一区二区三区在线观看一| 中国av一区二区三区| 日韩一区二区高清| 色狠狠av一区二区三区| 国产另类ts人妖一区二区| 日韩成人一区二区三区在线观看| 中文字幕一区不卡| 久久久久一区二区三区四区| 678五月天丁香亚洲综合网| av在线一区二区| 国产精品主播直播| 麻豆国产一区二区| 亚洲国产另类精品专区| 国产精品久久久久一区| 欧美不卡一二三| 欧美乱妇20p| 欧美在线高清视频| 99久久精品国产一区| 国产成人av福利| 蜜桃在线一区二区三区| 日本一不卡视频| 亚洲成人综合视频| 亚洲精品成人在线| 最新中文字幕一区二区三区 | 亚洲图片另类小说| 欧美国产日韩a欧美在线观看| 2020国产精品| 久久综合色一综合色88| 精品少妇一区二区| 日韩美女一区二区三区四区|