C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[1997] 늦어서 죄송합니다...
문보석 [] 3784 읽음    1999-09-27 00:00
안녕하세요...

답변 잘 봤습니다...

추석은 잘 보내셨는지요...

임프님 말씀대로 전에 로레벨수준의 waveinstart 등의 api를 써서

작업을 해보려고 했습니다...

다음은 녹음하는 부분입니다...

    WaveRecord.wf.wFormatTag = 1;
    WaveRecord.wf.nChannels = 1;
    WaveRecord.wf.nSamplesPerSec = 8000;
    WaveRecord.wf.nBlockAlign = 1;
    WaveRecord.wf.nAvgBytesPerSec = 8000 * WaveRecord.wf.nChannels * WaveRecord.wf.nBlockAlign;
    WaveRecord.wBitsPerSample = 8;

    lDatasize = (DWORD)WaveRecord.wf.nAvgBytesPerSec * ctime;

    WaveDataBlockIn1 = ::GlobalAlloc(GMEM_MOVEABLE,lDatasize);
    pWaveIn1 = (LPBYTE)::GlobalLock(WaveDataBlockIn1);
//    pWaveOut1 = pWaveIn1;

    waveInOpen((LPHWAVEIN)&hWaveInn1,WAVE_MAPPER,(tWAVEFORMATEX*)&WaveRecord,0L,0L,0L);

    WaveHeaderIn1.lpData = (LPSTR)pWaveIn1;
    WaveHeaderIn1.dwBufferLength = lDatasize;
    WaveHeaderIn1.dwFlags = 0L;
    WaveHeaderIn1.dwLoops = 0L;
    WaveHeaderIn1.dwBytesRecorded = 0;//lDatasize;

    waveInPrepareHeader(hWaveInn1,&WaveHeaderIn1,sizeof(WaveHeaderIn1));
    waveInAddBuffer(hWaveInn1,&WaveHeaderIn1,sizeof(WaveHeaderIn1));

    waveInStart(hWaveInn1);

    while( WaveHeaderIn1.dwBytesRecorded != lDatasize )
        Application->ProcessMessages();

    waveInReset(hWaveInn1);

    waveInUnprepareHeader(hWaveInn1,&WaveHeaderIn1,sizeof(WaveHeaderIn1));
    waveInClose(hWaveInn1);

위에서 pWaveIn1 이라는 것이 녹음이 시작되서 자료가 저장되는

부분의 시작 포인터입니다...

물론 웨이브포맷으로 저장되있겠죠...

이 부분부터 원하는 만큼 버퍼에 옮기고 다시 다른장소의 메모리

블록으로 옮겨서 편집을 해보려고 하거든요...

근데 이부분에서 저는 간단히 버퍼를 char Buf[SIZE] 로 잡고

strncpy( Buf , (char *)pWaveIn1 , SIZE)를 써서 다시 다른

메모리 블록으로 옮기니까 자료가 영 엉망인지 출력 자체가 안되더군

요...

음.... 제 설명이 너무 두서가 없어서리.... 이거원....

조언을 부탁드리겠습니다...

안녕히계세요...



+ -

관련 글 리스트
1997 늦어서 죄송합니다... 문보석 3784 1999/09/27
2005     Re:늦어서 죄송합니다... 박지훈.임프 3793 1999/09/28
2004     자답... 문보석 3401 1999/09/28
2006         답변을 쓰는 중에 자답을... 꽈당~ ^^;; 박지훈.임프 3335 1999/09/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.