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

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

?? wavrec.cpp

?? WinCE5.0BSP for Renesas SH7770
?? CPP
字號:
//
//  Copyright(C) Renesas Technology Corp. 2004-2005. All rights reserved.
//
// OAL Test for ITS-DS7
//
// FILE     : WAVREC.CPP
// CREATED  : 2004.09.01
// MODIFIED : 2005.03.04
// AUTHOR   : Renesas Technology Corp.
// HARDWARE : RENESAS ITS-DS7
// HISTORY  : 
//            2004.09.01
//            - Created release code.
//              (based on SDK for WCE5.0)
//            2005.03.04
//            - Modified use a blank for a file name.
//            - Modified IOCTL_MIX_MESSAGE corresponded to WAV1:.
//

//
// 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.
//
#include <windows.h>
#include <dsound.h>
#include <wavedev.h>
#include <wavemdd.h>
#include "wavefile.h"

#define NELEMS(a) (sizeof(a)/sizeof((a)[0]))

#define MRCHECK(mr,str)\
    if ((mr != MMSYSERR_NOERROR)) { RETAILMSG(1, (TEXT(#str) TEXT(" failed. mr=%08x\r\n"), mr)); goto ERROR_DONE;}

MMRESULT
RecordWaveBuffer (PWAVEHDR pwh, DWORD dwDeviceId, PWAVEFORMATEX pwfx, DWORD dwDuration)
{ const DWORD dwTolerance = 1000;
  DWORD dwWait;
  HANDLE hevDone;
  HWAVEIN hwi;

    // create an event so we know when capture is completed
    hevDone = CreateEvent(NULL, FALSE, FALSE, NULL);
    if (hevDone == NULL) {
        RETAILMSG (1, (TEXT("Unable to create completion event\r\n")));
        return MMSYSERR_NOMEM;
    }

    // open the wave capture device
    MMRESULT mr = waveInOpen(&hwi, dwDeviceId, pwfx, (DWORD) hevDone, NULL, CALLBACK_EVENT);
    if (mr != MMSYSERR_NOERROR) {
        RETAILMSG(1, (TEXT("waveInOpen failed. mr=%08x\r\n"), mr));
        return mr;
    }

    // set up the WAVEHDR structure that describes the capture buffer

    // prepare the buffer for capture
    mr = waveInPrepareHeader(hwi, pwh, sizeof(WAVEHDR));
    MRCHECK(mr, waveInPrepareHeader);

    // submit the buffer for capture
    mr = waveInAddBuffer(hwi, pwh, sizeof(WAVEHDR));
    MRCHECK(mr, waveInAddBuffer);



    // start capturing
    RETAILMSG(1, (TEXT("Starting capture...\r\n")));
    mr = waveInStart(hwi);
    MRCHECK(mr, waveInStart);

    // wait for completion + 1 second tolerance
    dwWait= WaitForSingleObject(hevDone, dwDuration + dwTolerance); 
    if (dwWait != WAIT_OBJECT_0) {
        RETAILMSG(1, (TEXT("Timeout waiting for capture to complete, writing partialy file.\r\n")));
        mr = waveInReset(hwi);
        if (mr != MMSYSERR_NOERROR) {
            RETAILMSG(1, (TEXT("warning: waveInReset failed. mr=%08x\r\n"), mr));
        }
    }

    // now clean up: unprepare the buffer
    mr = waveInUnprepareHeader(hwi, pwh, sizeof(WAVEHDR));
    MRCHECK(mr, waveInUnprepareHeader);

ERROR_DONE:
    // close the capture device & free the event handle
    mr = waveInClose(hwi);
    if (mr != MMSYSERR_NOERROR) {
        RETAILMSG(1, (TEXT("warning: waveInClose failed. mr=%08x\r\n"), mr));
    }

    CloseHandle(hevDone);

    return mr;
}

MMRESULT
RecordWaveFile (PCTSTR pszFilename, DWORD dwDeviceId, PWAVEFORMATEX pwfx, DWORD dwDuration)
{ MMRESULT mr;
  PBYTE pBufferBits;
  DWORD dwBufferSize;

    // compute the size of the capture buffer
    // compute total # of samples & multiply by blocksize to get sample-aligned buffer size
    dwBufferSize = (dwDuration * pwfx->nSamplesPerSec / 1000) * pwfx->nBlockAlign;

    // let user know what's going on
    RETAILMSG(1, (TEXT("Recording %5d ms to \"%s\": %c%02d %5dHz (%8d bytes)\r\n")
        , dwDuration
        , pszFilename
        , pwfx->nChannels == 2 ? L'S' : L'M' 
        , pwfx->wBitsPerSample
        , pwfx->nSamplesPerSec
        , dwBufferSize
        ));
    
    // try to allocate the capture buffer
    pBufferBits = new BYTE [dwBufferSize];
    if (pBufferBits == NULL) {
        RETAILMSG (1, (TEXT("Unable to allocate %d bytes for %d ms of audio data\r\n"), dwBufferSize, dwDuration));
        return MMSYSERR_NOMEM;
    }
    WAVEHDR hdr;
    memset(&hdr, 0, sizeof(WAVEHDR));
    hdr.dwBufferLength = dwBufferSize;
    hdr.lpData = (char *) pBufferBits;

    mr = RecordWaveBuffer(&hdr, dwDeviceId, pwfx, dwDuration);
    MRCHECK(mr, RecordWaveBuffer);

    // finally, write the captured buffer to the file
    // note that we use hdr.dwBytesRecorded, not dwBuffersize.
    RETAILMSG(1, (TEXT("Capture completed. Writing %s\r\n"), pszFilename));
    mr = WriteWaveFile(pszFilename, pwfx, hdr.dwBytesRecorded, pBufferBits);
    MRCHECK(mr, WriteWaveFile);

ERROR_DONE:
    // free up the capture buffer and release the done event
    delete [] pBufferBits;

    // and we're done
    return mr;
}


PTSTR usage_text[] =
{
    TEXT("usage:\r\n"),
    TEXT("       -f <filename>    output filename\r\n"),
    TEXT("       -r <rate>        sample rate\r\n"),
    TEXT("       -b <8|16>        sample size in bits\r\n"),
    TEXT("       -c <1|2>         channels (mono/stereo)\r\n"),
    TEXT("       -t <duration>	  recording time in milliseconds\r\n"),
    TEXT("       -d <device>      device index\r\n"),
    TEXT("       -i <Mic|LineIn>  InputSelect (0:Mic / 1:LineIN)\r\n"),
    TEXT("       -?               help\r\n"),
};

void
Usage(void)
{ int i;

    for (i = 0; i < NELEMS(usage_text); i++) {
        RETAILMSG(1, (usage_text[i]));
    }
}

int 
WINAPI WinMain 
    ( HINSTANCE hInstance
    , HINSTANCE hPrevInstance
    , PTSTR pCmdLine
    , int nCmdShow
    )
{ PTSTR pOption;
  TCHAR ws[] = TEXT(" \t");
  int errors = 0;
    MMDRV_MESSAGE_PARAMS	Param;
    MIXERCONTROLDETAILS		mix;
    DWORD					details[2];
    HANDLE					h;
	TCHAR szWavDev[16];
	UINT cmdlen;
	PTSTR pNext;

    // The run parameters
    // Set up defaults to be overridden by command line
    PTSTR pszFilename = TEXT("wavrec.wav");
    DWORD dwDuration = 5 * 1000;    // record for 5 seconds
    DWORD dwChannels = 1;           // default to mono
    DWORD dwBitsPerSample = 16;     // default to 16-bit samples
    DWORD dwSampleRate = 11025;     // default to 11.025KHz sample rate
    DWORD dwDeviceId = 0;           // capture from device 0
    DWORD dwInputSelect = 0;        // Input Select
	BOOL bIsSelected=FALSE;

	cmdlen = _tcslen(pCmdLine);
    // parse the command line
    for (pOption = _tcstok(pCmdLine, ws); pOption != NULL; pOption = _tcstok(NULL, ws)) {
        if (pOption[0] != '/' && pOption[0] != '-') {
            RETAILMSG(1, (TEXT("Unrecognized argument %s\r\n"), pOption));
            errors++;
            continue;
        }
        PTSTR pParameter = _tcstok(NULL, ws);
        if (pParameter == NULL) {
            RETAILMSG(1, (TEXT("Missing parameter to option %s\r\n"), pOption));
        }
        switch (pOption[1]) {
        case 'f':
			pszFilename = pParameter;
			for(pNext=&pParameter[_tcslen(pParameter)+1];*pNext==' ' || *pNext=='\t';pNext++) ;

			// case:space in filename
			// "\CD-ROM Drive\xxx.wav"
			while(cmdlen > (UINT)(pParameter-pCmdLine+_tcslen(pParameter)) && *pNext != '-'){
				//skip(also filename)
				pParameter[_tcslen(pParameter)] = ' ';
				pParameter = _tcstok(NULL, ws);
				for(pNext=&pParameter[_tcslen(pParameter)+1];*pNext==' ' || *pNext=='\t';pNext++) ;
			}
            break;

        case 't':
            dwDuration = _ttoi(pParameter);
            break;

        case 'c':
            dwChannels = _ttoi(pParameter);
            break;

        case 'r':
            dwSampleRate = _ttoi(pParameter);
            break;

        case 'b':
            dwBitsPerSample = _ttoi(pParameter);
            break;

	case 'd':
	    dwDeviceId = _ttoi(pParameter);
	    break;

	case 'i':
	    dwInputSelect = _ttoi(pParameter);
		bIsSelected = TRUE;
	    break;

        case '?':
        case 'h':
            Usage();
            errors++;
            break;

        default:
            RETAILMSG(1, (TEXT("Unrecognized option %s\r\n"), pOption));
            errors++;
            break;
        }
    }

    if (errors > 0) {
        // we've already issued complaint, now just exit
        return -1;
    }

	if(bIsSelected){
	    _stprintf( szWavDev, TEXT("WAV%d:"), dwDeviceId );
		// Input Select (Mic / LineIN)
		h = CreateFile (
						szWavDev,
						GENERIC_READ | GENERIC_WRITE,
		               	0,
						NULL,
						OPEN_EXISTING,
						FILE_ATTRIBUTE_NORMAL,
						NULL
						);
		if( dwInputSelect == 0 ){
			details[0] = 0;		// Line IN
			details[1] = 1;		// Mic
		}
		else{
			details[0] = 1;		// Line IN
			details[1] = 0;		// Mic
		}
		mix.dwControlID  = 2;
		mix.cMultipleItems = 2;
		mix.paDetails = details;
		Param.uDeviceId  = dwDeviceId;
		Param.uMsg       = MXDM_SETCONTROLDETAILS;
		Param.dwUser     = 0;
		Param.dwParam1   = (DWORD)&mix;
		Param.dwParam2   = 0;

		DeviceIoControl( h, IOCTL_MIX_MESSAGE, (PBYTE)&Param, (DWORD)sizeof(Param), 0, 0, 0, 0 );

		CloseHandle ( h );
	}

    // set up the wave format structure
    WAVEFORMATEX wfx;
    wfx.cbSize = 0;
    wfx.wFormatTag = WAVE_FORMAT_PCM;
    wfx.wBitsPerSample = (WORD) dwBitsPerSample;
    wfx.nSamplesPerSec = dwSampleRate;
    wfx.nChannels = (WORD) dwChannels;
    wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8;
    wfx.nAvgBytesPerSec = wfx.nBlockAlign * wfx.nSamplesPerSec;

    // we're all set: go do the real work
    RecordWaveFile(pszFilename, dwDeviceId, &wfx, dwDuration);

    return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲欧洲一区高清在线观看| 日韩久久精品一区| 国产精品影视在线| 久久国产尿小便嘘嘘| 日韩av电影天堂| 图片区日韩欧美亚洲| 亚洲网友自拍偷拍| 亚洲国产精品嫩草影院| 一区二区三区四区不卡在线 | 久久看人人爽人人| 日韩精品一区在线| 久久午夜免费电影| 日本一区二区免费在线观看视频| 久久久青草青青国产亚洲免观| 久久一区二区三区四区| 久久久久久久久久久久久女国产乱| 久久精品日韩一区二区三区| 久久久一区二区| 国产欧美日产一区| 亚洲蜜臀av乱码久久精品 | 日韩黄色免费电影| 水蜜桃久久夜色精品一区的特点| 五月婷婷激情综合网| 另类小说一区二区三区| 国产一区在线精品| 99久久国产综合色|国产精品| 成人高清免费观看| 欧美在线|欧美| 欧美va天堂va视频va在线| 国产视频一区二区在线| 亚洲男人的天堂在线aⅴ视频| 一区二区欧美国产| 激情图区综合网| 一本一本久久a久久精品综合麻豆| 欧美三级视频在线观看| 久久久久久黄色| 亚洲精品老司机| 精品一区二区三区欧美| 国产一区二区在线观看免费| 色综合久久久久久久久久久| 在线不卡免费欧美| 国产精品美女久久久久av爽李琼| 一区二区三国产精华液| 精品一区二区三区av| 91美女蜜桃在线| 精品动漫一区二区三区在线观看| 国产精品久久久久婷婷二区次| 亚洲v日本v欧美v久久精品| 另类综合日韩欧美亚洲| 一本大道久久精品懂色aⅴ| 欧美一区二区三区不卡| 亚洲欧洲精品一区二区精品久久久| 亚洲成人动漫在线观看| 国产91精品欧美| 日韩一区二区在线观看| 亚洲日穴在线视频| 激情六月婷婷久久| 欧美老肥妇做.爰bbww| 亚洲人成伊人成综合网小说| 国产成人免费在线观看不卡| 日韩视频中午一区| 亚洲综合图片区| 成人av一区二区三区| 精品999在线播放| 麻豆精品一区二区av白丝在线| 91成人在线观看喷潮| 自拍偷拍亚洲激情| 国产成人午夜精品影院观看视频| 日韩一区二区三区视频在线| 同产精品九九九| 欧美视频一区二区三区在线观看| 亚洲欧美激情一区二区| 99久久精品免费| 中文字幕精品—区二区四季| 国产不卡视频一区二区三区| 久久综合久久久久88| 精品亚洲国内自在自线福利| 日韩女优毛片在线| 国模大尺度一区二区三区| 91精品免费在线| 日本视频中文字幕一区二区三区| 欧美裸体一区二区三区| 日本午夜精品一区二区三区电影| 91麻豆精品国产91久久久久久久久| 亚洲综合区在线| 欧美日韩国产一级| 日日夜夜免费精品视频| 91精品国产综合久久婷婷香蕉| 日韩成人午夜电影| 精品国产乱码久久久久久老虎| 捆绑调教一区二区三区| 久久综合九色欧美综合狠狠| 国产一区二区三区免费播放| 国产欧美一区二区精品秋霞影院| 成人动漫视频在线| 亚洲久本草在线中文字幕| 91国内精品野花午夜精品| 视频一区二区中文字幕| 日韩欧美国产精品一区| 国产不卡免费视频| 一区二区三区日韩精品视频| 欧美最猛性xxxxx直播| 捆绑紧缚一区二区三区视频| 久久久www成人免费毛片麻豆| 成人精品视频网站| 午夜欧美视频在线观看| 久久综合久久综合久久综合| 91美女蜜桃在线| 精品夜夜嗨av一区二区三区| 中文字幕在线观看不卡| 91精品国产综合久久精品性色| 国产成人av电影| 午夜伦理一区二区| 国产清纯白嫩初高生在线观看91 | 久久久久久久久久看片| 色999日韩国产欧美一区二区| 日韩成人精品在线| 日韩码欧中文字| 精品国免费一区二区三区| 色88888久久久久久影院按摩| 九色综合狠狠综合久久| 亚洲免费高清视频在线| 欧美va亚洲va在线观看蝴蝶网| 色婷婷久久99综合精品jk白丝| 久久99精品久久久久久国产越南| 国产精品美女久久久久久久久| 欧美电影在线免费观看| 91老师国产黑色丝袜在线| 麻豆精品视频在线观看视频| 亚洲综合网站在线观看| 国产色产综合色产在线视频| 欧美巨大另类极品videosbest| 成人黄页在线观看| 精品中文字幕一区二区小辣椒| 亚洲影视在线观看| 日韩理论电影院| 中文字幕第一页久久| 欧美精品一区二区久久久| 欧美疯狂做受xxxx富婆| 欧美亚洲日本国产| 色噜噜夜夜夜综合网| 成人一区在线观看| 国产精品一区二区三区99| 秋霞电影一区二区| 日本欧美一区二区三区乱码| 偷拍日韩校园综合在线| 亚洲一区二区三区不卡国产欧美| 国产精品福利一区二区三区| 国产无遮挡一区二区三区毛片日本| 日韩欧美精品三级| 精品蜜桃在线看| 久久综合狠狠综合久久激情| 精品国产网站在线观看| 久久亚洲私人国产精品va媚药| 欧美成人猛片aaaaaaa| 日韩视频免费直播| 日韩欧美一级二级三级| 精品日韩99亚洲| 久久网这里都是精品| 国产亚洲制服色| 国产精品高潮久久久久无| 亚洲欧洲日韩女同| 一区二区三区**美女毛片| 天天综合天天综合色| 日韩精品一二区| 国产揄拍国内精品对白| 丁香婷婷综合激情五月色| 99精品视频在线观看免费| 色香蕉成人二区免费| 欧美精品视频www在线观看| 欧美一二三区在线观看| 久久综合九色综合97婷婷| 亚洲视频在线一区观看| 五月天激情综合| 国产一区二区三区免费看| 91蜜桃传媒精品久久久一区二区| 在线这里只有精品| 欧美一区二区精品久久911| 久久综合99re88久久爱| 亚洲免费色视频| 日韩精品专区在线| 91在线观看免费视频| 99视频精品在线| 在线播放中文一区| 久久免费的精品国产v∧| 一区二区久久久久久| 人人超碰91尤物精品国产| 国产999精品久久久久久绿帽| 色婷婷精品久久二区二区蜜臂av | 欧美日韩免费不卡视频一区二区三区| 欧美日本不卡视频| 日本一区二区三区电影| 日韩精品欧美精品| 99精品视频在线观看| 日韩欧美一二三四区| 一区二区三区四区在线免费观看| 狠狠色丁香婷综合久久| 欧美影院午夜播放| 日本一区免费视频| 久久精品999|