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

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

?? wavefile.cpp

?? WinCE5.0BSP for Renesas SH7770
?? CPP
字號(hào):
//
// 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.
//
// wavefile.cpp

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

// -----------------------------------------------------------------------------
//                              FileHeader
// -----------------------------------------------------------------------------
typedef struct
{
   DWORD   dwRiff;     // Type of file header.
   DWORD   dwSize;     // Size of file header.
   DWORD   dwWave;     // Type of wave.
} RIFF_FILEHEADER, *PRIFF_FILEHEADER;


// -----------------------------------------------------------------------------
//                              ChunkHeader
// -----------------------------------------------------------------------------
typedef struct
{
   DWORD   dwCKID;        // Type Identification for current chunk header.
   DWORD   dwSize;        // Size of current chunk header.
} RIFF_CHUNKHEADER, *PRIFF_CHUNKHEADER;

/*  Chunk Types  
*/
#define RIFF_FILE       mmioFOURCC('R','I','F','F')
#define RIFF_WAVE       mmioFOURCC('W','A','V','E')
#define RIFF_FORMAT     mmioFOURCC('f','m','t',' ')
#define RIFF_CHANNEL    mmioFOURCC('d','a','t','a')

BOOL
ReadChunk(HANDLE fh, DWORD dwChunkType, PVOID * ppBuffer, DWORD * pdwSize, PDWORD pdwBytesLeft)
{ DWORD dwBytesRead;
  PVOID pBuffer;
  RIFF_CHUNKHEADER Chunk;

    if ((!pdwBytesLeft) || (*pdwBytesLeft <= 0) || (!pdwSize) || (!ppBuffer)) {
        RETAILMSG(1, (TEXT("Invalid parameter to ReadChunk()\r\n")));
        return FALSE;
    }

    // now scan for the format chunk
    while (*pdwBytesLeft > 0) {
        // now read the wave header (or what we hope is the wave header)
        if (! ReadFile(fh, &Chunk, sizeof(Chunk), &dwBytesRead, NULL) || dwBytesRead < sizeof(Chunk)) {
            RETAILMSG(1, (TEXT("Error reading chunk header\n")));
            return FALSE;
        }
        *pdwBytesLeft -= dwBytesRead;
/*
        RETAILMSG(1, (TEXT("Chunk: \"%c%c%c%c\" size=0x%08x\r\n"), 
            (Chunk.dwCKID >>  0) & 0xff, 
            (Chunk.dwCKID >>  8) & 0xff, 
            (Chunk.dwCKID >> 16) & 0xff, 
            (Chunk.dwCKID >> 24) & 0xff, 
            Chunk.dwSize));
*/
        if (Chunk.dwCKID == dwChunkType) {
            // found the desired chunk
            break;
        }
        // skip the data we don't know or care about...
        if (0xFFFFFFFF == SetFilePointer (fh, Chunk.dwSize, NULL, FILE_CURRENT)) {
            RETAILMSG(1,  (TEXT("Error setting file pointer while scanning for chunk\n")));
            return FALSE;
        }
        *pdwBytesLeft -= Chunk.dwSize;
    }
    // found the desired chunk.
    // allocate a buffer and read in the data
    pBuffer = new BYTE[Chunk.dwSize];
    if (pBuffer == NULL) {
        RETAILMSG(1, (TEXT("Unable to allocate chunk buffer\r\n")));
        return FALSE;
    }
    if (! ReadFile(fh, pBuffer, Chunk.dwSize, &dwBytesRead, NULL) || dwBytesRead < Chunk.dwSize) {
        delete [] pBuffer;
        RETAILMSG(1, (TEXT("Unable to read chunk data\r\n")));
        return FALSE;
    }
    *pdwBytesLeft -= dwBytesRead;
    *ppBuffer = pBuffer;
    *pdwSize = Chunk.dwSize;
    return TRUE;
}

MMRESULT
ReadWaveFile(LPCTSTR pszFilename, PWAVEFORMATEX * ppWFX, PDWORD pdwBufferSize, PBYTE * ppBufferBits)
{ RIFF_FILEHEADER FileHeader;
  DWORD dwBytesRead;
  DWORD dwBufferSize;
  DWORD dwFormatSize;
  PBYTE pBufferBits = NULL;
  PWAVEFORMATEX pwfx = NULL;
  DWORD dwBytesInChunk;
  HANDLE fh;
  MMRESULT mmRet = MMSYSERR_ERROR;

    fh = CreateFile(pszFilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    if( fh == INVALID_HANDLE_VALUE ) {
        RETAILMSG(1, (TEXT("Error opening %s. Error code = 0x%08x\n"), pszFilename, GetLastError()));
        return mmRet;
    }

    // Read file and determine sound format
    // Start with RIFF header:

    if (! ReadFile(fh, &FileHeader, sizeof(FileHeader), &dwBytesRead, NULL) || dwBytesRead < sizeof(FileHeader)) {
        RETAILMSG(1, (TEXT("Error reading file header\n")));
        goto ERROR_EXIT;
    }

    if ( FileHeader.dwRiff != RIFF_FILE || FileHeader.dwWave != RIFF_WAVE) {
        RETAILMSG(1, (TEXT("Invalid wave file header\n")));
        goto ERROR_EXIT;
    }

    dwBytesInChunk = FileHeader.dwSize;

    // load the wave format
    if (! ReadChunk(fh, RIFF_FORMAT, (PVOID*) &pwfx, &dwFormatSize, &dwBytesInChunk)) {
        RETAILMSG(1, (TEXT("Unable to read format chunk\r\n")));
        goto ERROR_EXIT;
    }
    if (dwFormatSize < sizeof(PCMWAVEFORMAT)) {
        RETAILMSG(1, (TEXT("Format record too small\r\n")));
        goto ERROR_EXIT;
    }

    // load the wave data
    if (! ReadChunk(fh, RIFF_CHANNEL, (PVOID*) &pBufferBits, &dwBufferSize, &dwBytesInChunk)) {
        RETAILMSG(1, (TEXT("Unable to read format chunk\r\n")));
        goto ERROR_EXIT;
    }

    *ppWFX = pwfx;
    *pdwBufferSize = dwBufferSize;
    *ppBufferBits = pBufferBits;

    // Success
    mmRet = MMSYSERR_NOERROR;
    goto EXIT;

ERROR_EXIT:
    delete [] pBufferBits;
    delete [] pwfx;
EXIT:
    CloseHandle(fh);
    return mmRet;   
}



MMRESULT
WriteWaveFile (LPCTSTR pszFilename, PWAVEFORMATEX pWFX, DWORD dwBufferSize, PBYTE pBufferBits)
{ RIFF_FILEHEADER FileHeader;
  RIFF_CHUNKHEADER WaveHeader;
  RIFF_CHUNKHEADER DataHeader;
  DWORD dwBytesWritten;
  HANDLE fh;
  MMRESULT mmRet = MMSYSERR_ERROR;

    
    // Fill in the file, wave and data headers
    WaveHeader.dwCKID = RIFF_FORMAT;
    WaveHeader.dwSize = sizeof(WAVEFORMATEX) + pWFX->cbSize;

    // the DataHeader chunk contains the audio data
    DataHeader.dwCKID = RIFF_CHANNEL;
    DataHeader.dwSize = dwBufferSize;

    // The FileHeader
    FileHeader.dwRiff = RIFF_FILE;
    FileHeader.dwWave = RIFF_WAVE;
    FileHeader.dwSize = sizeof(WaveHeader) + WaveHeader.dwSize + sizeof(DataHeader) + DataHeader.dwSize;


    // Open wave file
    fh = CreateFile(pszFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, 0, NULL);
    if( fh == INVALID_HANDLE_VALUE ) {
        RETAILMSG(1, (TEXT("Error opening %s. Error code = 0x%08x\n"), pszFilename, GetLastError()));
        return mmRet;
    }

    // write the riff file
    if (! WriteFile(fh, &FileHeader, sizeof(FileHeader), &dwBytesWritten, NULL)) {
        RETAILMSG(1, (TEXT("Error writing file header\r\n")));
        goto ERROR_EXIT;
    }

    // write the wave header
    if (! WriteFile(fh, &WaveHeader, sizeof(WaveHeader), &dwBytesWritten, NULL)) {
        RETAILMSG(1, (TEXT("Error writing wave header\r\n")));
        goto ERROR_EXIT;
    }

    // write the wave format
    if (! WriteFile(fh, pWFX, WaveHeader.dwSize, &dwBytesWritten, NULL)) {
        RETAILMSG(1, (TEXT("Error writing wave format\r\n")));
        goto ERROR_EXIT;
    }

    // write the data header
    if (! WriteFile(fh, &DataHeader, sizeof(DataHeader), &dwBytesWritten, NULL)) {
        RETAILMSG(1, (TEXT("Error writing PCM data header\r\n")));
        goto ERROR_EXIT;
    }

    // write the PCM data
    if (! WriteFile(fh, pBufferBits, DataHeader.dwSize, &dwBytesWritten, NULL)) {
        RETAILMSG(1, (TEXT("Error writing PCM data\r\n")));
        goto ERROR_EXIT;
    }

    // Success
    mmRet = MMSYSERR_NOERROR;

ERROR_EXIT:
    CloseHandle(fh);
    return mmRet;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月天欧美精品| 中文字幕一区免费在线观看| 日韩成人免费电影| 91精品在线观看入口| 强制捆绑调教一区二区| 久久免费美女视频| a亚洲天堂av| 亚洲v中文字幕| 精品国产乱码久久久久久久| 激情都市一区二区| 国产精品日韩成人| 欧美精品在线观看播放| 日韩av在线播放中文字幕| 日韩视频一区二区三区 | 久久九九99视频| 国产成人精品亚洲777人妖| 国产精品欧美一区二区三区| 91国偷自产一区二区使用方法| 亚洲成a人v欧美综合天堂 | 欧美r级电影在线观看| 国产精品一二三区在线| 亚洲综合男人的天堂| 日韩欧美aaaaaa| 94-欧美-setu| 另类中文字幕网| 亚洲欧美一区二区视频| 制服丝袜在线91| 成人免费视频免费观看| 日韩精品一区第一页| 国产精品色在线观看| 欧美一卡二卡三卡| av不卡一区二区三区| 久久9热精品视频| 亚洲精选在线视频| 国产午夜精品久久| 6080国产精品一区二区| 成人黄色在线网站| 男人的天堂亚洲一区| 亚洲精品免费在线| 久久久99久久| 日韩一区二区中文字幕| 色综合一个色综合亚洲| 国产成人在线看| 奇米在线7777在线精品| 樱花草国产18久久久久| 日本一二三四高清不卡| 精品国产一区二区三区四区四| 在线亚洲欧美专区二区| 成人av网址在线| 国产在线观看一区二区| 日韩激情视频网站| 伊人夜夜躁av伊人久久| 亚洲欧洲日产国产综合网| 久久在线免费观看| 日韩一区二区三区视频在线观看| 一本大道综合伊人精品热热| 成人在线视频首页| 国产寡妇亲子伦一区二区| 免费观看在线综合| 日韩不卡免费视频| 肉肉av福利一精品导航| 亚洲成av人片www| 亚洲小说欧美激情另类| 亚洲免费在线视频| 亚洲欧美日韩一区| 最新国产精品久久精品| 欧美激情综合在线| 国产精品欧美久久久久一区二区| 久久久美女艺术照精彩视频福利播放| 日韩女优av电影| 日韩亚洲欧美在线观看| 日韩欧美一级特黄在线播放| 欧美一卡2卡三卡4卡5免费| 91精品国产aⅴ一区二区| 欧美日韩亚洲另类| 67194成人在线观看| 欧美一区二区三区电影| 日韩一区二区中文字幕| 精品欧美乱码久久久久久| 欧美成人性战久久| 337p粉嫩大胆色噜噜噜噜亚洲| www成人在线观看| 久久久久国产精品麻豆| 国产精品伦理在线| 亚洲码国产岛国毛片在线| 亚洲午夜三级在线| 日韩中文字幕不卡| 国产美女在线观看一区| 高清在线不卡av| 91看片淫黄大片一级在线观看| 在线观看视频一区二区| 日韩午夜电影在线观看| 欧美精品一区二区蜜臀亚洲| 国产午夜精品久久| 亚洲嫩草精品久久| 日本中文字幕一区二区有限公司| 美女视频一区二区三区| 床上的激情91.| 色婷婷综合久久久久中文一区二区| 欧美影院一区二区| 日韩视频永久免费| 国产精品你懂的| 午夜精品久久久久久久久久| 精品一二三四在线| 91黄色激情网站| 日韩精品中午字幕| 综合久久久久综合| 老司机精品视频线观看86| 99久久精品国产一区| 欧美日韩一区二区三区在线| 精品国产网站在线观看| 亚洲日本电影在线| 久久精品国产亚洲高清剧情介绍 | 久久福利视频一区二区| 成人一区二区视频| 欧美撒尿777hd撒尿| 久久精品欧美一区二区三区麻豆 | 中文字幕制服丝袜成人av| 亚洲无线码一区二区三区| 国产美女在线观看一区| 欧美丝袜自拍制服另类| 国产欧美日韩不卡免费| 免费在线成人网| 色哟哟一区二区在线观看| 精品国产乱码久久久久久免费| 亚洲黄色小说网站| 国产福利精品一区| 欧美一级理论片| 亚洲中国最大av网站| 成人午夜大片免费观看| 日韩网站在线看片你懂的| 亚洲综合自拍偷拍| 成人手机在线视频| 日韩美女在线视频 | 中文字幕在线不卡国产视频| 免费精品99久久国产综合精品| 色综合久久中文字幕综合网| 久久青草欧美一区二区三区| 午夜精品一区在线观看| 在线免费精品视频| 亚洲欧美在线aaa| 成人综合在线观看| 26uuuu精品一区二区| 麻豆精品在线看| 欧美精三区欧美精三区| 亚洲一区二区高清| 一本大道av伊人久久综合| 国产精品水嫩水嫩| 顶级嫩模精品视频在线看| 久久―日本道色综合久久| 免费成人小视频| 欧美一区二区三区在线看| 亚洲一区二区在线播放相泽 | 性做久久久久久久免费看| 欧美视频中文字幕| 亚洲一区二区高清| 欧美在线观看视频在线| 亚洲最新视频在线观看| 一本到不卡精品视频在线观看 | 亚洲精品免费播放| 91一区二区在线观看| 国产精品国产三级国产三级人妇| 国产精品69毛片高清亚洲| 国产喂奶挤奶一区二区三区| 国产精品乡下勾搭老头1| 久久久久久久久久久电影| 国产福利一区在线| 日本一二三不卡| 99re8在线精品视频免费播放| 自拍偷拍国产亚洲| 欧美性受极品xxxx喷水| 亚洲va欧美va天堂v国产综合| 欧美精品久久一区| 美女网站在线免费欧美精品| 精品国产乱码久久久久久久| 国产成人午夜电影网| 国产精品无遮挡| 91免费看片在线观看| 亚洲一区二区三区视频在线| 91精品国产综合久久婷婷香蕉| 精品中文av资源站在线观看| 国产日韩精品一区二区浪潮av| 成人国产精品免费观看视频| 亚洲欧美在线视频| 欧美日韩国产成人在线91| 免费三级欧美电影| 国产欧美一区二区精品秋霞影院| 波多野结衣一区二区三区| 亚洲综合一二区| 日韩美一区二区三区| 高清在线不卡av| 亚洲国产美国国产综合一区二区| 在线电影欧美成精品| 国产成人a级片| 亚洲一区二区在线观看视频| 精品盗摄一区二区三区| 91丝袜美女网| 久久aⅴ国产欧美74aaa| 中文字幕一区二区三中文字幕| 欧美日韩高清在线|