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

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

?? hspdifin.cpp

?? WinCE5.0BSP for Renesas SH7770
?? CPP
字號:
//
//  Copyright(C) Renesas Technology Corp. 2002-2003. All rights reserved.
//
//  sample program for HSpdifRx for ITS-DS7
//
//  FILE     : HSpdifin.c
//  CREATED  : 2002.06.26
//  MODIFIED : 2003.12.25
//  AUTHOR   : Renesas Technology Corp.
//  HARDWARE : RENESAS ITS-DS7
//  HISTORY  : 
//             2003.06.20
//             - Created release code.
//                (based on sample program for HSpdifRx for ITS-DS4 Ver.1.0.0)
//             2003.12.25
//             - Supported .wav file.
//             - Added parameter.
//             - Supported recording time.
//

#include <windows.h>
#include "ioctl_its_ds7.h"
#include "wavefile.h"

#define BUFF_SIZE	0x8000
#define TIMEOUT_MAX	5

#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_RET;}

typedef struct {
  unsigned char FName[16];
  unsigned long Dmy1[2];
  unsigned long SamplingRate1;
  unsigned long SamplingRate2;
  unsigned short Dmy2;
  unsigned short BitsPerSample;
  unsigned long Dmy3;
  unsigned long Length;
} HEADER;

PBYTE Data;

PTSTR usage_text[] =
{
    TEXT("usage:\r\n"),
    TEXT("       -f <filename>    outpout filename(.wav file or PCM raw data file)\r\n"),
    TEXT("       -b <bitsize>     sample bit size(16/20/24)\r\n"),
    TEXT("       -t <duration>	  recording time in milliseconds\r\n"),
    TEXT("       -m <mode>		  output file mode(0:pcm/1:wav)\r\n"),
    TEXT("       -?               help\r\n"),
    TEXT("note:\r\n"),
    TEXT("       HSPDIF supported only 44.1kHz stereo.\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,
    LPWSTR lpCmdLine,
	int nCmdShow)
{
HANDLE	hDevice=NULL;
HANDLE  hDriver;
DWORD	dwRet;
DWORD	dwData;
HANDLE	hFile=NULL;
//HEADER	Head;
DWORD	nCnt;
//DWORD	TickCnt, TransNum;
DWORD NoDataNum;
BOOL	RetCode;

PTSTR pOption;
TCHAR ws[] = TEXT(" \t");
int errors = 0;
PTSTR pszFilename = TEXT("spdifout.pcm");
DWORD	dwBitSize=16;
DWORD dwDuration = 5 * 1000;    // record for 5 seconds
DWORD dwMode = 0;
DWORD	dwRemain;
DWORD	dwBytesRecorded;
MMRESULT mr;

PBYTE pBufferBits=NULL;
DWORD dwBufferSize;
WAVEFORMATEX wfx;

	RETAILMSG(1, (TEXT("SPDIF recording start.\r\n")));

    // parse the command line
    for (pOption = _tcstok(lpCmdLine, 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;
            break;

        case 'b':
            dwBitSize = _ttoi(pParameter);
			switch(dwBitSize){
			case 16:
			case 20:
			case 24:
				break;
			default:
	            RETAILMSG(1, (TEXT("Illegal sample bit size %d\r\n"),dwBitSize));
	            errors++;
				break;
			}
            break;

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

        case 'm':
            dwMode = _ttoi(pParameter);
			if(dwMode < 0 || 1 < dwMode){
	            RETAILMSG(1, (TEXT("Illegal output file mode %d\r\n"),dwMode));
	            errors++;
				break;
			}
            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;
    }

    // set up the wave format structure
    wfx.cbSize = 0;
    wfx.wFormatTag = WAVE_FORMAT_PCM;
    wfx.wBitsPerSample = (WORD) dwBitSize;
    wfx.nSamplesPerSec = 44100;
    wfx.nChannels = (WORD) 2;
    wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8;
    wfx.nAvgBytesPerSec = wfx.nBlockAlign * wfx.nSamplesPerSec;

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

    // let user know what's going on
    RETAILMSG(1, (TEXT("Recording %5d ms to \"%s\": S%02d 44100Hz (%8d bytes)\r\n")
        , dwDuration
        , pszFilename
        , dwBitSize
        , dwBufferSize
        ));

	if(dwMode==0){
		// pcm
		hFile = CreateFile(pszFilename, GENERIC_WRITE, FILE_SHARE_WRITE,
						NULL, CREATE_ALWAYS, 0, NULL);
		if ( hFile == INVALID_HANDLE_VALUE ){
			RETAILMSG(1, (TEXT("File open failed. rc %d\r\n"), GetLastError()));
			return 0;
		}

	    pBufferBits = new BYTE[BUFF_SIZE];
	    if (pBufferBits == NULL) {
	        RETAILMSG(1, (TEXT("Unable to allocate chunk buffer\r\n")));
			CloseHandle(hFile);
	        goto ERROR_RET;
	    }
	}
	else{
		// wav
	    
	    // 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));
	        goto ERROR_RET;
	    }

	}
//	WriteFile(hFile, &Head, sizeof(HEADER), &nCnt, NULL);

//	DEBUGMSG(1, (TEXT("Sampling rate : %dHz BitsPerSample : %d\r\n"),
//			Head.SamplingRate1, Head.BitsPerSample));

	hDevice = CreateFile(
			TEXT("SPD1:"),
			GENERIC_READ,
			0,
			NULL,
			OPEN_EXISTING,
			FILE_ATTRIBUTE_NORMAL,
			NULL);
	if ( hDevice == INVALID_HANDLE_VALUE ){
		if ( GetLastError() == ERROR_DEV_NOT_EXIST ){
			//register spdif driver 
			hDriver = RegisterDevice(TEXT("SPD"), 1, TEXT("HSPDIF.DLL"), 0);
			if ( !hDriver ){
				RETAILMSG(1, (TEXT("Failed to register spdif device driver.\r\n")));
			}
			hDevice = CreateFile(TEXT("SPD1:"),
					GENERIC_READ,
					0, NULL, OPEN_EXISTING,
					FILE_ATTRIBUTE_NORMAL, NULL);
		}
		if ( hDevice == INVALID_HANDLE_VALUE ){
			RETAILMSG(1, (TEXT("Failed to open spdif device driver.\r\n")));
			CloseHandle(hFile);
			return 0;
		}
	}

	switch(dwBitSize){
	case 16:	dwData = SPDIF_SAMPLE_BIT_SIZE_16;	break;
	case 20:	dwData = SPDIF_SAMPLE_BIT_SIZE_20;	break;
	case 24:	dwData = SPDIF_SAMPLE_BIT_SIZE_24;	break;
	default:	break;
	}

	switch( dwData ){
		case SPDIF_SAMPLE_BIT_SIZE_16:
			RETAILMSG(1, (TEXT("Set SampleSize : 16\r\n")));
			break;

		case SPDIF_SAMPLE_BIT_SIZE_20:
			RETAILMSG(1, (TEXT("Set SampleSize : 20\r\n")));
			break;

		case SPDIF_SAMPLE_BIT_SIZE_24:
			RETAILMSG(1, (TEXT("Set SampleSize : 24\r\n")));
			break;

		default : 
			break;
	}

	RetCode = DeviceIoControl(hDevice, IOCTL_SPDIF_SET_RXSAMPLE_SIZE,
		&dwData, sizeof(DWORD), NULL, 0, &dwRet, NULL);
	if (RetCode == FALSE) {
		RETAILMSG(1, (TEXT("Error : IOCTL_SPDIF_SET_RXSAMPLE_SIZE\r\n")));
		CloseHandle( hFile );
		CloseHandle( hDevice );
		return 0;
	}

	RetCode = DeviceIoControl(hDevice, IOCTL_SPDIF_GET_RXSAMPLE_SIZE,
		NULL, 0, &dwData, sizeof(DWORD), &dwRet, NULL);
	if (RetCode == FALSE) {
		RETAILMSG(1, (TEXT("Error : IOCTL_SPDIF_GET_RXSAMPLE_SIZE\r\n")));
		CloseHandle( hFile );
		CloseHandle( hDevice );
		return 0;
	}

	switch( dwData ){
		case SPDIF_SAMPLE_BIT_SIZE_16: dwData = 16;break;
		case SPDIF_SAMPLE_BIT_SIZE_20: dwData = 20;break;
		case SPDIF_SAMPLE_BIT_SIZE_24: dwData = 24;break;
		default : dwData = 0;break;
	}
	RETAILMSG(1, (TEXT("Get SampleSize : %d\r\n"), dwData));

//	TickCnt = GetTickCount();
//	TransNum = 0;
	NoDataNum = 0;
	Data = pBufferBits;
	dwRemain = dwBufferSize;
	dwBytesRecorded=0;

	while(1){
		if(hFile){
			Data = pBufferBits;
		}
		nCnt = BUFF_SIZE;
		if(dwRemain < BUFF_SIZE){
			nCnt = dwRemain;
		}

		dwRet= 0;
		RetCode = DeviceIoControl(hDevice, IOCTL_SPDIF_RECEIVING_DATA,
			NULL, 0, Data, nCnt, &dwRet, NULL);
		if (RetCode == FALSE) {
			if (GetLastError() == ERROR_INVALID_PARAMETER) {
				RETAILMSG(1, (TEXT("Error : IOCTL_SPDIF_RECEIVING_DATA - Invalid Params.\r\n")));
				break;
			} else if (GetLastError() == ERROR_TIMEOUT) {
				RETAILMSG(1, (TEXT("Error : IOCTL_SPDIF_RECEIVING_DATA - TimeOut.\r\n")));
			}
		}
		if ( dwRet == 0 ){
			NoDataNum ++;
			if ( NoDataNum > TIMEOUT_MAX ){
				RETAILMSG(1, (TEXT("TimeOut. Stop recording.\r\n")));
				break;
			}
			continue;
		}
		
		dwBytesRecorded+=dwRet;
		if(hFile){
//			dwRet = BUFF_SIZE;
			WriteFile(hFile, Data, dwRet, &nCnt, NULL);
//			TransNum ++;
		}
		if(dwRemain<=dwRet){
			break;
		}
		dwRemain-=dwRet;
		if(!hFile){
			Data+=dwRet;
		}
		

//		DEBUGMSG(1, (TEXT("Spdif in %d  %d bytes received.\r\n"), TransNum, dwRet));
//		if ( nCnt != BUFF_SIZE )
//			break;

//		if ( TransNum == 100 )
//			break;
	}
	DeviceIoControl(hDevice, IOCTL_SPDIF_STOP_RECEIVE,
		NULL, 0, NULL, 0, &dwRet, NULL);
//	RETAILMSG(1, (TEXT("Number of received : %d Time(ms) : %d\r\n"),
//			TransNum, GetTickCount() - TickCnt));

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

	RETAILMSG(1, (TEXT("SPDIF recording finished. %s\r\n"),pszFilename));

ERROR_RET:
    if(pBufferBits) delete [] pBufferBits;
	if(hFile) CloseHandle( hFile );
	if(hDevice) CloseHandle( hDevice );
	return 0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
972aa.com艺术欧美| 亚洲国产精品二十页| 久久亚洲精华国产精华液| 亚洲乱码国产乱码精品精的特点| 男女视频一区二区| 91丨porny丨首页| 久久精品亚洲麻豆av一区二区| 午夜精品福利久久久| 色一区在线观看| 国产亚洲欧美色| 久久91精品久久久久久秒播| 欧美酷刑日本凌虐凌虐| 亚洲欧美日韩久久| 成人99免费视频| 国产欧美一区二区精品性色 | 亚洲精品成人少妇| 国产精品99久久久| 精品噜噜噜噜久久久久久久久试看| 亚洲一级二级三级在线免费观看| 日韩一区二区精品在线观看| 国产精品看片你懂得| 国产精品一区二区男女羞羞无遮挡| 91麻豆精品国产自产在线观看一区 | 欧美人伦禁忌dvd放荡欲情| 亚洲视频图片小说| 色综合天天综合色综合av| 中文字幕高清不卡| 不卡的电影网站| 欧美激情综合在线| 成人国产在线观看| 国产精品成人免费精品自在线观看| 国产成人av网站| 国产精品美女久久久久久久久| 国产成人av影院| 国产欧美日本一区二区三区| 成人国产电影网| 中文字幕一区免费在线观看 | 国产在线视视频有精品| 欧美成人三级在线| 国产福利91精品一区二区三区| 久久精品一区二区三区不卡牛牛 | 国产电影一区二区三区| 国产欧美日韩另类视频免费观看| 国产白丝精品91爽爽久久| 国产精品每日更新在线播放网址 | 成人丝袜18视频在线观看| 国产三级精品三级在线专区| 9i在线看片成人免费| 最新国产成人在线观看| 91久久人澡人人添人人爽欧美| 亚洲.国产.中文慕字在线| 日韩一级欧美一级| 国产高清一区日本| 亚洲一卡二卡三卡四卡| 日韩欧美亚洲一区二区| a美女胸又www黄视频久久| 亚洲自拍偷拍综合| 精品理论电影在线观看| 播五月开心婷婷综合| 亚洲一区二区欧美| 久久综合精品国产一区二区三区| 国产91在线|亚洲| 亚洲一区二区三区中文字幕| 精品美女在线播放| 日本道在线观看一区二区| 美女www一区二区| 亚洲女人****多毛耸耸8| 91精品国产欧美一区二区18 | 国产精品白丝av| 亚洲综合另类小说| 国产亚洲一二三区| 欧美色综合天天久久综合精品| 久久精品国产秦先生| 亚洲免费在线看| 精品久久久久久最新网址| 色婷婷综合五月| 国产黑丝在线一区二区三区| 午夜精品123| 亚洲天天做日日做天天谢日日欢| 91精品国产高清一区二区三区| 国产一区美女在线| 亚洲日韩欧美一区二区在线| 日韩欧美精品三级| 欧美日韩精品一区二区三区蜜桃| 国产suv一区二区三区88区| 日本亚洲视频在线| 一区二区三区日韩在线观看| 国产亚洲欧美一区在线观看| 日韩一区二区三区av| 欧美亚洲一区二区三区四区| 成人在线综合网站| 久草精品在线观看| 肉丝袜脚交视频一区二区| 亚洲欧美视频在线观看视频| 国产精品三级电影| 久久日韩粉嫩一区二区三区| 日韩一区二区在线观看| 欧美日韩国产高清一区二区三区| 色综合 综合色| 99久久国产综合精品女不卡| 国产精品69毛片高清亚洲| 国产在线精品一区二区三区不卡| 亚洲不卡一区二区三区| 亚洲三级久久久| 亚洲激情欧美激情| 中文字幕亚洲综合久久菠萝蜜| 久久久久久麻豆| 久久亚洲一级片| 国产丝袜美腿一区二区三区| 欧美精品一区二区三区久久久| 欧美一区二视频| 日韩午夜精品电影| 久久中文字幕电影| 久久综合av免费| 国产午夜精品久久久久久免费视 | 天堂蜜桃91精品| 日韩黄色一级片| 日韩成人精品在线| 久久激情五月激情| 国产成人欧美日韩在线电影| 丁香亚洲综合激情啪啪综合| 盗摄精品av一区二区三区| 成人精品国产福利| 色综合久久综合中文综合网| 91高清视频免费看| 91精品国产高清一区二区三区蜜臀| 欧美一区二区福利在线| 2欧美一区二区三区在线观看视频| 国产调教视频一区| 亚洲欧美日韩电影| 午夜欧美电影在线观看| 精品写真视频在线观看| 成人av午夜影院| 精品视频一区二区不卡| 日韩欧美国产三级| 国产精品嫩草影院av蜜臀| 亚洲综合色自拍一区| 日本中文字幕一区二区视频| 国产激情偷乱视频一区二区三区| 91在线看国产| 777午夜精品免费视频| 久久久久99精品一区| 亚洲激情图片一区| 国产在线播精品第三| 色综合天天性综合| 欧美一三区三区四区免费在线看| 26uuu亚洲婷婷狠狠天堂| 亚洲欧美色一区| 久久66热偷产精品| 91国产福利在线| 久久久久久一二三区| 一区二区欧美精品| 国产精品亚洲一区二区三区在线| 91免费看视频| 亚洲精品一区二区三区福利 | 国产精品久久久久久久久图文区 | 中文字幕精品—区二区四季| 亚洲国产日韩a在线播放性色| 国产精品资源在线| 欧美日韩国产另类一区| 国产精品久久久久婷婷二区次| 日韩电影一二三区| 色综合久久综合| 日本一区二区视频在线| 免费在线观看不卡| 欧美性大战xxxxx久久久| 国产精品久久久久一区二区三区 | 丝袜脚交一区二区| 99久久精品99国产精品| 久久网站热最新地址| 亚洲高清视频中文字幕| 91在线观看地址| 中文字幕av一区二区三区免费看 | 精品国偷自产国产一区| 亚洲高清一区二区三区| 91在线观看高清| 中文字幕不卡在线播放| 国产一区二区伦理| 欧美变态凌虐bdsm| 日韩和欧美一区二区三区| 欧美三级视频在线| 亚洲欧美日韩中文字幕一区二区三区| 激情文学综合网| 日韩欧美123| 人人狠狠综合久久亚洲| 欧美日韩国产在线观看| 一区二区三区国产| 色综合视频一区二区三区高清| 国产午夜精品久久久久久久| 国产主播一区二区| 26uuu色噜噜精品一区二区| 久久99国产精品尤物| 久久婷婷成人综合色| 国产一区二区免费看| 久久你懂得1024| 国产一区二区三区久久久| 亚洲精品一区二区精华| 国产精品资源站在线| 久久久精品国产免费观看同学| 国产精品一品二品|