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

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

?? strmctxt.h

?? realtek562x系列驅動源碼。wince
?? H
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
/* 
** Copyright 2000-2003 Intel Corporation All Rights Reserved.
**
** Portions of the source code contained or described herein and all documents
** related to such source code (Material) are owned by Intel Corporation
** or its suppliers or licensors and is licensed by Microsoft Corporation for distribution.  
** Title to the Material remains with Intel Corporation or its suppliers and licensors. 
** Use of the Materials is subject to the terms of the Microsoft license agreement which accompanied the Materials.  
** No other license under any patent, copyright, trade secret or other intellectual
** property right is granted to or conferred upon you by disclosure or
** delivery of the Materials, either expressly, by implication, inducement,
** estoppel or otherwise 
** Some portion of the Materials may be copyrighted by Microsoft Corporation.
*/
#pragma once

// Define the format of the m_Delta value. By default, we'll use
// 17.15 format. This may seem weird, but there's a problem using
// 16.16 format with the SRC code-- in the following equation where
// we use the fractional part to calculate the interpolated sample:
//        OutSamp0 = PrevSamp0 + (((CurrSamp0 - PrevSamp0) * CurrT) >> DELTAFRAC);
// If CurrT is a 16-bit fraction value, and if (CurrSamp0-PrevSamp0) overflow a
// signed 16-bit number (which they can), then the result can overflow a 32-bit
// value and cause a click.

// We could use 64-bit math to overcome that, but it would be a few extra instructions in the inner loop.
//
// On the other hand, we want as much accuracy in the fractional part as possible,
// as that determines how close we are to the target rate during sample rate conversion.
// Therefore, using 17.15 format is the best we can do.

#define DELTAINT  (17)                // was 24
#define DELTAFRAC (32 - DELTAINT)

// Define 1.0 value for Delta
#define DELTA_OVERFLOW (1<<DELTAFRAC) // was 0x100

#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);
        m_bMono = m_pDeviceContext->GetMono();
    }

    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_bMono;

    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
{
private:
    PBYTE Render2Mono  (PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);
    PBYTE Render2Stereo(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);
public:
    PBYTE Render2(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);
};
class OutputStreamContextS16 : public OutputStreamContext
{
private:
    PBYTE Render2Mono  (PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);
    PBYTE Render2Stereo(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);
public:
    PBYTE Render2(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);
};


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲国产一区二区三区| 国产欧美日韩亚州综合| 国产精品福利一区| 狠狠色丁香婷综合久久| 欧美日免费三级在线| 亚洲成人黄色小说| 99riav久久精品riav| 国产精品久久久久久久久快鸭 | 91久久一区二区| 夜夜嗨av一区二区三区中文字幕| caoporn国产一区二区| 中文字幕在线观看不卡视频| 国产在线观看免费一区| 久久久精品免费观看| 国产成人在线免费| 国产精品久久毛片a| 91首页免费视频| 亚洲夂夂婷婷色拍ww47 | 国产伦精品一区二区三区在线观看| 91在线观看地址| 日韩av电影免费观看高清完整版在线观看| 欧美色精品在线视频| 久久国产福利国产秒拍| 国产肉丝袜一区二区| 99国产精品久久久久久久久久| 午夜欧美视频在线观看| 欧美精品一区二区久久婷婷| 成人在线视频一区| 亚洲成人自拍一区| 国产亚洲一本大道中文在线| 欧美日韩国产综合一区二区三区| 免费在线一区观看| 最新日韩av在线| 精品国产伦理网| 欧美日韩一级片在线观看| 成人午夜av在线| 天堂成人国产精品一区| 精品国产乱码久久| 欧美性淫爽ww久久久久无| 97精品国产97久久久久久久久久久久| 日本亚洲欧美天堂免费| 国产成人免费视频一区| 欧美性生交片4| 2019国产精品| 亚洲成av人综合在线观看| 国产综合色视频| 欧美吻胸吃奶大尺度电影| 精品国产亚洲在线| 亚洲自拍偷拍网站| 国产美女一区二区| 777奇米成人网| 一区二区视频在线| 精品在线你懂的| 欧美人伦禁忌dvd放荡欲情| 国产精品久久久久影院色老大 | 国产精品视频yy9299一区| 亚洲国产精品一区二区www| 成人永久aaa| 久久久久亚洲蜜桃| 丝袜诱惑亚洲看片| 欧美在线影院一区二区| 久久久99免费| 国产九色精品成人porny| 在线成人午夜影院| 亚洲一区在线观看免费观看电影高清| 国产 欧美在线| 欧美韩日一区二区三区| 老汉av免费一区二区三区| 欧美伦理影视网| 婷婷久久综合九色综合伊人色| 欧洲精品在线观看| 亚洲欧美日韩精品久久久久| 91免费观看视频在线| 中文字幕中文字幕在线一区| www.亚洲人| 中文字幕在线观看一区二区| av成人动漫在线观看| 亚洲天堂av老司机| 日本久久一区二区三区| 亚洲国产日韩综合久久精品| 欧美性做爰猛烈叫床潮| 亚洲成人一二三| 欧美不卡激情三级在线观看| 韩国三级在线一区| 中文字幕一区二区三区在线观看 | 成人高清视频在线观看| 亚洲欧美日韩一区二区 | 91福利资源站| 免费观看30秒视频久久| 国产午夜三级一区二区三| 99国产欧美久久久精品| 午夜一区二区三区在线观看| 日韩欧美国产电影| 91天堂素人约啪| 美国一区二区三区在线播放| 国产精品久久久久一区| 欧美性一二三区| 国内成人自拍视频| 亚洲一区二区偷拍精品| 精品国产电影一区二区| 国产黄人亚洲片| 欧美精品高清视频| 亚洲综合男人的天堂| 日韩欧美在线不卡| 色菇凉天天综合网| 激情久久五月天| 亚洲mv在线观看| 国产精品久久看| 精品久久人人做人人爰| 欧美综合天天夜夜久久| 顶级嫩模精品视频在线看| 日韩av电影天堂| 亚洲v中文字幕| 亚洲视频图片小说| 国产精品国产三级国产| 26uuu欧美| 欧美成人一级视频| 日韩美女在线视频| 欧美日韩电影在线| 在线免费亚洲电影| 91视频观看免费| 成人免费视频一区| 国产成人精品影视| 久草在线在线精品观看| 精品一区二区三区影院在线午夜| 性做久久久久久免费观看欧美| 亚洲精品成人少妇| 一区二区在线观看免费视频播放| 中文字幕av不卡| 亚洲女女做受ⅹxx高潮| 亚洲精品成人在线| 丝袜亚洲另类欧美综合| 午夜电影一区二区三区| 亚洲一二三四区| 五月激情六月综合| 蜜桃91丨九色丨蝌蚪91桃色| 蜜桃av一区二区在线观看| 国产尤物一区二区在线| 成人97人人超碰人人99| 一本色道**综合亚洲精品蜜桃冫| 色悠久久久久综合欧美99| 欧美日韩国产首页在线观看| 日韩欧美一级特黄在线播放| 久久久久久亚洲综合影院红桃| 国产精品无码永久免费888| 亚洲视频一区在线| 久久精品99国产精品| 成人av影院在线| 欧美日韩精品免费观看视频| 久久在线观看免费| 亚洲一区在线观看视频| 国产真实乱子伦精品视频| 色综合久久久久综合体桃花网| 91精品国产综合久久福利| 国产精品视频线看| 亚洲国产精品久久不卡毛片 | 成人午夜碰碰视频| 欧美唯美清纯偷拍| 国产精品丝袜在线| 日本麻豆一区二区三区视频| 色8久久人人97超碰香蕉987| wwww国产精品欧美| 日日夜夜精品视频免费| 不卡的av中国片| 久久一日本道色综合| 日韩电影免费在线看| 色天天综合色天天久久| 国产亚洲欧美中文| 蜜桃一区二区三区四区| 欧美酷刑日本凌虐凌虐| 亚洲午夜一二三区视频| 91美女精品福利| 中文字幕一区二区视频| 国产成人精品亚洲777人妖| 欧美一区二视频| 婷婷中文字幕综合| 欧美精品日韩综合在线| 亚洲va中文字幕| 欧美日韩在线三区| 婷婷丁香激情综合| 制服丝袜国产精品| 麻豆91在线观看| 日韩免费一区二区| 国产精品一级片| 久久综合久久久久88| 成人一区在线观看| 成人欧美一区二区三区白人| 欧美色综合网站| 久久99精品久久久久久国产越南 | 亚洲色欲色欲www| 欧美性色欧美a在线播放| 一区av在线播放| 日韩欧美一级片| 91在线视频在线| 美女脱光内衣内裤视频久久网站| 久久婷婷国产综合精品青草 | 91久久精品一区二区| 日韩电影网1区2区| 日韩美女久久久| 精品人伦一区二区色婷婷|