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

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

?? hwctxt.h

?? 三星2440 cpu WINCE 5.00板級支持包
?? H
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
#pragma once
//
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*++
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.

   
Module Name:	HWCTXT.H

Abstract:		Platform dependent code for the mixing audio driver.
  
Environment:	Samsung SC2440 CPU and Windows 3.0 (or later)
    
-*/

#include <s3c2440x.h>


#define OUTCHANNELS (2)
#define BITSPERSAMPLE (16)
#define SAMPLERATE  (44100)

// Inverse sample rate, in .32 fixed format, with 1 added at bottom to ensure round up.
#define INVSAMPLERATE ((UINT32)(((1i64<<32)/SAMPLERATE)+1))

typedef INT16 HWSAMPLE;
typedef HWSAMPLE *PHWSAMPLE;

// Set USE_MIX_SATURATE to 1 if you want the mixing code to guard against saturation
// This costs a couple of instructions in the inner loop
#define USE_MIX_SATURATE (1)
// The code will use the follwing values as saturation points
#define AUDIO_SAMPLE_MAX    (32767)
#define AUDIO_SAMPLE_MIN    (-32768)

#define AUDIO_DMA_PAGE_SIZE		2048					// Size in bytes			

//----- Used to track DMA controllers status -----
#define DMA_CLEAR			0x00000000
#define DMA_DONEA			0x00000008
#define DMA_STRTA			0x00000010
#define DMA_DONEB			0x00000020
#define DMA_STRTB			0x00000040
#define DMA_BIU				0x00000080					// Determines which buffer is in use: (A=0, B=1)

//----- Used for scheduling DMA transfers -----
#define  OUT_BUFFER_A		0							
#define  OUT_BUFFER_B		1
#define	 IN_BUFFER_A		0
#define  IN_BUFFER_B		1


class HardwareContext
{
public:
    static BOOL CreateHWContext(DWORD Index);
    HardwareContext();
    ~HardwareContext();

    void Lock()   {EnterCriticalSection(&m_Lock);}
    void Unlock() {LeaveCriticalSection(&m_Lock);}

    DWORD GetNumInputDevices()  {return 1;}
    DWORD GetNumOutputDevices() {return 1;}
    DWORD GetNumMixerDevices()  {return 1;}

    DeviceContext *GetInputDeviceContext(UINT DeviceId)
    {
        return &m_InputDeviceContext;
    }

    DeviceContext *GetOutputDeviceContext(UINT DeviceId)
    {
        return &m_OutputDeviceContext;
    }

    BOOL Init(DWORD Index);										
    BOOL Deinit();

    void PowerUp();
    void PowerDown();

    BOOL StartInputDMA();
    BOOL StartOutputDMA();

    void StopInputDMA();
    void StopOutputDMA();

    void InterruptThread();

    DWORD       GetOutputGain (void);
    MMRESULT    SetOutputGain (DWORD dwVolume);
    DWORD       GetInputGain (void);
    MMRESULT    SetInputGain (DWORD dwVolume);

    BOOL        GetOutputMute (void);
    MMRESULT    SetOutputMute (BOOL fMute);
    BOOL        GetInputMute (void);
    MMRESULT    SetInputMute (BOOL fMute);


protected:
    DWORD m_dwOutputGain;
    DWORD m_dwInputGain;
    BOOL  m_fInputMute;
    BOOL  m_fOutputMute;


    DWORD m_MicrophoneRouting;
    DWORD m_SpeakerRouting;
    DWORD m_InternalRouting;
    DWORD m_MasterOutputGain;

    BOOL InitInterruptThread();

    BOOL InitInputDMA();
    BOOL InitOutputDMA();
    BOOL Codec_channel();
    BOOL InitCodec();
    
    BOOL MapRegisters();
    BOOL UnmapRegisters();
    BOOL MapDMABuffers();
	BOOL UnmapDMABuffers();

    ULONG TransferInputBuffer(ULONG NumBuf);
    ULONG TransferOutputBuffer(ULONG NumBuf);
    ULONG TransferInputBuffers(DWORD dwDCSR);
    ULONG TransferOutputBuffers(DWORD dwDCSR);


    DWORD GetInterruptThreadPriority();

    DWORD m_DriverIndex;
    CRITICAL_SECTION m_Lock;

    BOOL m_Initialized;
    BOOL m_InPowerHandler;
    DWORD m_dwSysintrOutput;
    DWORD m_dwSysintrInput;

    InputDeviceContext m_InputDeviceContext;
    OutputDeviceContext m_OutputDeviceContext;

    PBYTE		m_Input_pbDMA_PAGES[2];
    PBYTE		m_Output_pbDMA_PAGES[2];

    BOOL m_InputDMARunning;
    BOOL m_OutputDMARunning;
    ULONG m_OutBytes[2];
    ULONG m_InBytes[2];

    WORD  m_nOutputVolume;					// Current HW Playback Volume 
    WORD  m_nInputVolume;					// Current HW Input (Microphone) Volume 

	HANDLE m_hAudioInterrupt;				// Handle to Audio Interrupt event.
    HANDLE m_hAudioInterruptThread;			// Handle to thread which waits on an audio interrupt event.

	//----------------------- Platform specific members ----------------------------------

	DWORD  m_OutputDMAStatus;					// Output DMA channel's status
	DWORD  m_InputDMAStatus;					// Input DMA channel's status

	BOOL AudioMute(DWORD channel, BOOL bMute);	
	//------------------------------------------------------------------------------------

};

void CallInterruptThread(HardwareContext *pHWContext);


//----------------------------------- Helper Functions and Macros ----------------------------------------

//======== Record =========
#define ioRecordPointerLow						(g_pDMAregs->DIDST1)
#define ioRecordPointerHigh						(g_pDMAregs->DIDST1)

#define RECORD_DMA_BUFFER_PHYS					(g_PhysDMABufferAddr.LowPart + 2 * AUDIO_DMA_PAGE_SIZE)

#define AUDIO_RESET_RECORD_POINTER()			{ioRecordPointerLow  = (RECORD_DMA_BUFFER_PHYS);	\
												 ioRecordPointerHigh = (RECORD_DMA_BUFFER_PHYS+ AUDIO_DMA_PAGE_SIZE); }

#define AUDIO_IN_CLEAR_INTERRUPTS()				(g_pDMAregs->DCON1 = g_pDMAregs->DCON1)

#define AUDIO_IN_DMA_ENABLE()					{ 	g_pDMAregs->DMASKTRIG1 = ENABLE_DMA_CHANNEL; \
													g_pDMAregs->DMASKTRIG1 &= STOP_DMA_TRANSFER; \
													g_pIISregs->IISFCON |= ( RECEIVE_FIFO_ACCESS_DMA  | RECEIVE_FIFO_ENABLE);	\
													g_pIISregs->IISCON  |= RECEIVE_DMA_REQUEST_ENABLE;	 }
													
#define AUDIO_IN_DMA_DISABLE()					{ 	StopI2SClock(); \
													g_pIISregs->IISCON &= ~RECEIVE_DMA_REQUEST_ENABLE;	\
													g_pIISregs->IISFCON &= ( RECEIVE_FIFO_ACCESS_DMA  | RECEIVE_FIFO_ENABLE);	\
													g_pDMAregs->DMASKTRIG1 |= STOP_DMA_TRANSFER;    }

#define SELECT_AUDIO_DMA_INPUT_BUFFER_A()		(g_pDMAregs->DIDST1 = (int)(g_PhysDMABufferAddr.LowPart+2*AUDIO_DMA_PAGE_SIZE) )
#define SELECT_AUDIO_DMA_INPUT_BUFFER_B()		(g_pDMAregs->DIDST1 = (int)(g_PhysDMABufferAddr.LowPart+3*AUDIO_DMA_PAGE_SIZE) )


//======== Playback =========
#define ioPlaybackPointerLow					(g_pDMAregs->DISRC2)
#define ioPlaybackPointerHigh					(g_pDMAregs->DISRC2)

#define AUDIO_RESET_PLAYBACK_POINTER()			{ioPlaybackPointerLow  = (g_PhysDMABufferAddr.LowPart);	\
												 ioPlaybackPointerHigh = (g_PhysDMABufferAddr.LowPart + AUDIO_DMA_PAGE_SIZE); }   

#define AUDIO_OUT_CLEAR_INTERRUPTS()			(g_pDMAregs->DCON2 = g_pDMAregs->DCON2)

#define AUDIO_OUT_DMA_ENABLE()					{ 	StartI2SClock(); \
													g_pDMAregs->DMASKTRIG2 |= ENABLE_DMA_CHANNEL;  }
													
#define AUDIO_OUT_DMA_DISABLE()					{ StopI2SClock();  g_pDMAregs->DMASKTRIG2 &= ~ENABLE_DMA_CHANNEL; }

#define SELECT_AUDIO_DMA_OUTPUT_BUFFER_A()		(g_pDMAregs->DISRC2 = (int)(g_PhysDMABufferAddr.LowPart) )
#define SELECT_AUDIO_DMA_OUTPUT_BUFFER_B()		(g_pDMAregs->DISRC2 = (int)(g_PhysDMABufferAddr.LowPart+AUDIO_DMA_PAGE_SIZE) )

//------------------------------------------ Externs ----------------------------------------------
extern HardwareContext *g_pHWContext;


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆精品一区二区三区| 欧美日韩在线电影| 欧美综合在线视频| 2020国产精品自拍| 亚洲中国最大av网站| 国产乱妇无码大片在线观看| 欧美午夜宅男影院| 中文成人av在线| 久久成人av少妇免费| 欧美日韩精品一区二区天天拍小说 | 久久亚洲一级片| 亚洲成人你懂的| 99久久免费精品| 国产欧美一区二区三区鸳鸯浴| 亚洲成国产人片在线观看| 国产99一区视频免费| 日韩精品一区二区三区老鸭窝| 亚洲综合在线视频| 在线观看亚洲精品| 亚洲欧美电影院| 99综合电影在线视频| 久久久www免费人成精品| 青草国产精品久久久久久| 欧美日韩1234| 亚洲1区2区3区视频| 色婷婷精品大在线视频| 亚洲日本在线天堂| 色哟哟日韩精品| 亚洲精品ww久久久久久p站| 99免费精品在线观看| 中文字幕不卡一区| heyzo一本久久综合| 中文字幕在线不卡视频| 91在线观看美女| 一区二区三区四区在线免费观看 | 在线观看国产91| 亚洲永久免费视频| 欧美日韩三级一区| 天天免费综合色| 宅男在线国产精品| 久久精品噜噜噜成人88aⅴ | 麻豆传媒一区二区三区| 精品理论电影在线| 国产成人免费视| 国产精品人人做人人爽人人添| 波多野结衣在线aⅴ中文字幕不卡| 日本一区二区电影| 色又黄又爽网站www久久| 亚洲最色的网站| 91精品视频网| 国产一区二区成人久久免费影院 | 99综合影院在线| 香蕉av福利精品导航| 91精品国产综合久久久久久| 日韩福利电影在线| 久久久午夜精品理论片中文字幕| 丁香天五香天堂综合| 亚洲精品v日韩精品| 欧美一级片在线看| 成人中文字幕合集| 亚洲自拍都市欧美小说| 精品美女在线播放| 99国产精品99久久久久久| 午夜av区久久| 国产精品美日韩| 91精品国产综合久久久蜜臀粉嫩| 国产v日产∨综合v精品视频| 亚洲国产中文字幕在线视频综合| 精品欧美黑人一区二区三区| 99re这里都是精品| 精品一区二区三区免费视频| 亚洲视频狠狠干| 精品动漫一区二区三区在线观看 | 国产精品一级在线| 亚洲激情自拍视频| 久久久亚洲精品石原莉奈| 91国内精品野花午夜精品| 韩国精品免费视频| 亚洲国产欧美一区二区三区丁香婷| 精品国产乱子伦一区| 一本到不卡精品视频在线观看 | 日产欧产美韩系列久久99| 国产精品久久久久影院色老大| 9191久久久久久久久久久| 不卡一区二区三区四区| 日韩高清不卡一区二区三区| 中文字幕亚洲一区二区va在线| 日韩精品一区二区三区中文不卡| 91视频免费看| 国产69精品久久99不卡| 久久精品噜噜噜成人av农村| 亚洲国产视频一区| 亚洲人成人一区二区在线观看| 精品国产免费久久| 日韩精品一区在线| 欧美一区二区三区四区五区| 欧美影视一区二区三区| 成人av片在线观看| 国产成人精品三级| 国产精品综合av一区二区国产馆| 日本少妇一区二区| 亚洲超丰满肉感bbw| 亚洲免费成人av| 综合婷婷亚洲小说| 国产精品久久久爽爽爽麻豆色哟哟| 久久久美女毛片| 26uuu亚洲| 精品国产一区二区三区忘忧草| 宅男在线国产精品| 日韩精品一区在线| 精品国产一区二区精华| 精品999久久久| 国产婷婷一区二区| 国产精品久久久久桃色tv| 中文成人综合网| 亚洲色图丝袜美腿| 亚洲欧洲综合另类在线| 国产精品久久久久影院老司| 亚洲欧洲另类国产综合| 中文字幕亚洲成人| 一区二区成人在线| 亚洲成av人片在线| 日本不卡视频一二三区| 狠狠色丁香婷婷综合久久片| 精品一区二区免费在线观看| 国产一区二区三区四区五区入口| 国内外成人在线| 99久久综合色| 欧美午夜精品一区二区蜜桃| 91精品欧美综合在线观看最新 | 欧美国产日韩一二三区| 国产精品伦理在线| 亚洲另类一区二区| 午夜精彩视频在线观看不卡| 日韩精品一级二级 | 日本久久电影网| 欧美精品久久99| 精品不卡在线视频| 日韩毛片视频在线看| 午夜精品久久久久久久久| 精品一区中文字幕| 色综合久久综合网97色综合| 欧美男女性生活在线直播观看| 日韩女优视频免费观看| 1024成人网| 麻豆国产一区二区| 日本韩国精品在线| 欧美一级高清片| 国产欧美日韩精品在线| 亚洲电影你懂得| 国产剧情一区在线| 欧美性xxxxx极品少妇| 久久久国产精华| 亚洲成人一区二区| 成人美女在线观看| 在线不卡的av| 国产精品久久久久久久久搜平片 | 色婷婷av一区二区三区大白胸 | 蜜桃视频在线一区| 91在线精品一区二区| 日韩一区二区三区免费看| 国产精品久久久久久亚洲毛片| 日精品一区二区三区| youjizz久久| 亚洲精品在线观看视频| 婷婷成人激情在线网| 成人免费精品视频| 日韩午夜在线影院| 亚洲福利视频一区| 菠萝蜜视频在线观看一区| 日韩一级免费观看| 综合分类小说区另类春色亚洲小说欧美| 日韩vs国产vs欧美| 欧洲精品一区二区三区在线观看| 国产日韩欧美不卡在线| 免费观看在线色综合| 欧美日韩卡一卡二| 亚洲精品少妇30p| 成人午夜激情影院| 久久久久久久久久久久久久久99| 午夜精品成人在线| 欧美三级日韩三级国产三级| 1024亚洲合集| 成人av电影免费观看| 久久综合九色综合97婷婷女人| 午夜国产精品影院在线观看| 91国产丝袜在线播放| 成人免费在线观看入口| 成人精品视频一区二区三区尤物| 精品国内片67194| 久久se这里有精品| 欧美精品一区男女天堂| 青青草91视频| 精品乱人伦小说| 国产曰批免费观看久久久| 久久综合色综合88| 国产美女精品人人做人人爽| 2024国产精品| 国产精品99久久久久| 日本一区二区三区电影|