audio input and output

28
1 Audio input and output Speaker: Ching Ch en Chang Date:2006.10.30

Upload: noleta

Post on 24-Jan-2016

34 views

Category:

Documents


1 download

DESCRIPTION

Audio input and output. Speaker: Ching Chen Chang Date:2006.10.30. Outline. Multi-Media API (Input) Wave File Format Multi-Media API (Output) Sample program record1.cpp. WAVEFORMATEX. typedef struct { WORD wFormatTag ; WORD nChannels ; DWORD nSamplesPerSec ; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Audio input and output

1

Audio input and output

Speaker: Ching Chen Chang

Date:2006.10.30

Page 2: Audio input and output

2

Outline

Multi-Media API (Input) Wave File Format Multi-Media API (Output) Sample program record1.cpp

Page 3: Audio input and output

3

WAVEFORMATEX

typedef struct { WORD wFormatTag; WORD nChannels; DWORD nSamplesPerSec; DWORD nAvgBytesPerSec; WORD nBlockAlign; WORD wBitsPerSample; WORD cbSize; } WAVEFORMATEX; This structure defines the format of waveform-audio data.

Page 4: Audio input and output

4

WAVEHDR

typedef struct { LPSTR lpData; DWORD dwBufferLength; DWORD dwBytesRecorded; DWORD dwUser; DWORD dwFlags; DWORD dwLoops; struct wavehdr_tag* lpNext; DWORD reserved; } WAVEHDR; This structure defines the header used to identify a waveform-a

udio buffer.

Page 5: Audio input and output

5

waveInOpen()

MMRESULT waveInOpen(HWAVEIN &ihandle, UINT DeviceID, WAVEFORMATEX &waveformat, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen );

Open a specified waveform input device for recording.

uDeviceID : WAVE_MAPPER fdwOpen :CALLBACK_WINDOW ,CALLBACK_THREAD

Return MMSYSERR_NOERROR means success

Page 6: Audio input and output

6

waveInPrepareHeader()

MMRESULT waveInPrepareHeader( HWAVEIN ihandle, WAVEHDR &wh, UINT cbwh );

Prepares a buffer for waveform input. Returns MMSYSERR_NOERROR if successf

ul.

Page 7: Audio input and output

7

waveInAddBuffer()

MMRESULT waveInAddBuffer( HWAVEIN ihandle, WAVEHDR &wh, UINT cbwh );

Sends an input buffer to the specified waveform-audio input device.

Returns MMSYSERR_NOERROR if successful.

Page 8: Audio input and output

8

waveInStart()

MMRESULT waveInStart( HWAVEIN ihandle );

Starts input on the specified waveform input device.

Returns MMSYSERR_NOERROR if successful.

Page 9: Audio input and output

9

waveInReset()

MMRESULT waveInReset( HWAVEIN ihandle );

Stops input on a specified waveform input device and resets the current position to 0.

Returns MMSYSERR_NOERROR if successful.

Page 10: Audio input and output

10

waveInUnprepareHeader()

MMRESULT waveInUnprepareHeader( HWAVEIN ihandle, WAVEHDR &wh, UINT cbwh );

Cleans up the preparation performed by waveInPrepareHeader.

Returns MMSYSERR_NOERROR if successful.

Page 11: Audio input and output

11

waveInClose()

MMRESULT waveInClose( HWAVEIN ihandle);

Closes the specified waveform-audio input device.

Returns MMSYSERR_NOERROR if successful.

Page 12: Audio input and output

12

Wave File Format

Page 13: Audio input and output

13

MMCKINFO

typedef struct { FOURCC ckid; DWORD cksize; FOURCC fccType; DWORD dwDataOffset; DWORD dwFlags; } MMCKINFO; The structure contains information about a chunk in

a RIFF file.

Page 14: Audio input and output

14

mmioOpen()

HMMIO mmioOpen( LPSTR Filename, MMIOINFO mmioinfo, DWORD dwOpenFlags );

The mmioOpen function opens a file for unbuffered or buffered I/O.

Returns a handle of the opened file. If the file cannot be opened, the return value is NULL.

dwOpenFlags :MMIO_CREATE 、 MMIO_WRITE、

MMIO_READ …etc.

Page 15: Audio input and output

15

mmioCreateChunk()

MMRESULT mmioCreateChunk( HMMIO hmmio, MMCKINFO &ck, UINT wFlags );

The mmioCreateChunk function creates a chunk in a RIFF file that was opened by using the mmioOpen function.

wFlags :MMIO_CREATERIFF Returns MMSYSERR_NOERROR if successf

ul

Page 16: Audio input and output

16

mmioFOURCC()

FOURCC mmioFOURCC( CHAR ch0, CHAR ch1, CHAR ch2, CHAR ch3 );

The mmioFOURCC macro converts four characters into a four-character code.

Returns the four-character code created from the given characters.

Page 17: Audio input and output

17

mmioWrite()

LONG mmioWrite( HMMIO hmmio, char _huge* pch, LONG cch );

The mmioWrite function writes a specified number of bytes to a file opened by using the mmioOpen function

Returns the number of bytes actually written.

Page 18: Audio input and output

18

mmioAscend()

MMRESULT mmioAscend( HMMIO hmmio, MMCKINFO &ck, UINT wFlags );

The mmioAscend function ascends out of a chunk in a RIFF file

wFlags : must be zero. Returns MMSYSERR_NOERROR if successf

ul

Page 19: Audio input and output

19

mmioClose()

MMRESULT mmioClose( HMMIO hmmio, UINT wFlags );

Returns zero if successful or an error otherwise.

Page 20: Audio input and output

20

waveOutOpen()

MMRESULT waveOutOpen( HWAVEOUT &ohandle, UINT uDeviceID, WAVEFORMATEX &wf, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen );

Opens a specified waveform output device for playback.

Returns MMSYSERR_NOERROR if successful.

Page 21: Audio input and output

21

waveOutPrepareHeader()

MMRESULT waveOutPrepareHeader( HWAVEOUT ohandle, WAVEHDR &wh, UINT cbwh );

Prepares a waveform data block for playback. Returns MMSYSERR_NOERROR if successf

ul.

Page 22: Audio input and output

22

waveOutWrite()

MMRESULT waveOutWrite( HWAVEOUT ohandle, WAVEHDR &wh, UINT cbwh );

Sends a data block to the specified waveform output device.

Returns MMSYSERR_NOERROR if successful.

Page 23: Audio input and output

23

waveOutReset()

MMRESULT waveOutReset( HWAVEOUT ohandle );

Stops playback on a specified waveform output device and resets the current position to 0.

Returns MMSYSERR_NOERROR if successful.

Page 24: Audio input and output

24

waveOutUnprepareHeader()

MMRESULT waveOutUnprepareHeader( HWAVEOUT ohandle, WAVEHDR &wh, UINT cbwh );

Cleans up the preparation performed by waveOutPrepareHeader.

Returns MMSYSERR_NOERROR if successful.

Page 25: Audio input and output

25

waveOutClose( )

MMRESULT waveOutClose( HWAVEOUT ohandle );

Closes the specified waveform output device. Returns MMSYSERR_NOERROR if successf

ul.

Page 26: Audio input and output

26

Sample Program

Record Produce the Wave file Play the record voice nChannels=1 nSamplesPerSec=8000 wBitsPerSample=8 Demo http://ms11.voip.edu.tw/~beautidays/recordcode.txt

Page 27: Audio input and output

27

Reference(1/2)

Wavefomat

http://ccrma.stanford.edu/CCRMA/Courses/422

/projects/WaveFormat/

http://www.sonicspot.com/guide/wavefiles.html Multimedia FILE I/Ohttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/h

tm/_win32_multimedia_file_i_o.asp

Page 28: Audio input and output

28

Reference(2/2)

Waveform Audio http://msdn.microsoft.com/library/default.asp?url=/library/en-us/mu

ltimed/htm/_win32_about_waveform_audio.asp