'기타 > 메신저' 카테고리의 다른 글
Wave분석 최종 (0) | 2011.03.04 |
---|---|
Wave 버젼 (0) | 2011.02.06 |
Wave파형분석및데이터출력(예광탄) (1) | 2011.01.25 |
개인 주간 계획서 1주차 (0) | 2011.01.20 |
개인 일일 보고서 1일차 (0) | 2011.01.20 |
Wave분석 최종 (0) | 2011.03.04 |
---|---|
Wave 버젼 (0) | 2011.02.06 |
Wave파형분석및데이터출력(예광탄) (1) | 2011.01.25 |
개인 주간 계획서 1주차 (0) | 2011.01.20 |
개인 일일 보고서 1일차 (0) | 2011.01.20 |
Wave Format 1) RIFF chunk
2) FMT sub-chunk
3) Data sub-chunk
SoundInfo 클래스는 RIFF Chunk(ParentChunk 클래스)와 FMT Sub-Chunk(SubChunk 클래스)와 Data Sub-Chunk(DataChunk)를 관리해주는 클래스이다.
SoundInfo.cpp 생성자에서 각각의 Chunk별로 데이터들을 얻는다.
SoundInfo::SoundInfo(HANDLE hFile) { parent_chunk=new ParentChunk(hFile); sub_chunk=new SubChunk(hFile); data_chunk=new DataChunk(hFile); }
ParentChunk의 데이터를 얻어온다.
각 Chunk별로 Wave파일의 속성이 맞는지 확인한다.
SubChunk의 데이터를 얻어온다.
DataChunk의 데이터를 얻어온다.
char *SoundInfo::GetDataMagic() { return data_chunk->GetDataMagicC(); } int SoundInfo::GetDataSize() { return data_chunk->GetDataSizeC(); } short* SoundInfo::GetData() { return data_chunk->GetDataC(); }
ParentChunk.cpp Filetype,filesize,mediatype을 읽어온다.
bool ParentChunk::IsAvailChunk() { return (strcmp(MAGIC_FILE_TYPE,filetype)==0)&&(strcmp(MAGIC_WAVE_TYPE,mediatype)==0); }
char *ParentChunk::GetFiletypeC() { return filetype; } int ParentChunk::GetFilesizeC() { return filesize; } char *ParentChunk::GetMediatypeC() { return mediatype; }
SubChunk.cpp
ChunkID,ChunkSize, PCMWAVEFORMAT의 값,채널수,샘필링수,초당 샘플 바이트,샘플당 바이트, 샘플당 비트수를 얻어온다. *단, pt(ChunkSize)가 18일 경우에는 SubChunk의 2바이트 이후 DataChunk사이와 SubChunk 사이에 ChunkData가 한 개 더 있다. 그래서 ChunkID와 ChunkSize와 Chunk데이터를 얻어왔다.
ChunkID(magic)이 “fmt”이 아니거나 format(PCMWAVEFORMAT)값이 1(Wave Format이 PCM 방식) 이 아닐 때 0을 리턴한다.
char *SubChunk::GetMagicC()//ChunkID { return magic; } int SubChunk::GetPtC()//ChunkSize { return pt; } short SubChunk::GetFormatC()//포맷 { return format; } short SubChunk::GetChannelcntC()//채널수 { return channelcnt; } int SubChunk::GetSamples_persecC()//초당샘플수 { return samples_persec; } int SubChunk::GetBytes_persecC() //초당바이트수- 평균값임 { return bytes_persec; } short SubChunk::GetSize_sampleC() //샘플1개의사이즈 { return size_sample; } short SubChunk::GetBits_persampleC()//샘플한개의비트수 { return bits_persample; } short *SubChunk::GetSize_extendC() { return size_extend; }
DataChunk.cpp
DataChunk::DataChunk(HANDLE hFile) { DWORD dwRead; ReadFile(hFile,magic,4,&dwRead,0); magic[4]=0; ReadFile(hFile,&datasize,4,&dwRead,0); data=(short *)malloc(datasize); ReadFile(hFile,data,datasize,&dwRead,0); }
ChunkID가 “DATA”가 아니면 0을 리턴한다.
bool DataChunk::IsAvailChunk() { return (strcmp(MAGIC_DATA_TYPE,magic)==0); } char *DataChunk::GetDataMagicC() { return magic; } int DataChunk::GetDataSizeC() { return datasize; } short* DataChunk::GetDataC() { return data; }
입력받은 Chunk들을 Edit박스에 나타내었고, 데이터들을 Lineto함수로 출력해주었다.
|
Wave분석 최종 (0) | 2011.03.04 |
---|---|
Wave 버젼 (0) | 2011.02.06 |
워크샵 가기전 파일 백업 (0) | 2011.01.26 |
개인 주간 계획서 1주차 (0) | 2011.01.20 |
개인 일일 보고서 1일차 (0) | 2011.01.20 |
WSAAsyncSelect (0) | 2011.02.21 |
---|---|
예비과정 발표점수 (0) | 2011.02.14 |
메신저(동시 메시지,파일 전송) (0) | 2011.01.17 |
다중파일전송 (0) | 2011.01.17 |
파일입출력(쓰레드구현) (0) | 2011.01.10 |
Native C++에서 C++/CLR 클래스 사용하기(CLR 옵션) (0) | 2015.03.06 |
---|---|
Native C++에서 C++/CLR 클래스 사용하기 (0) | 2015.03.06 |
비트학생관리 (0) | 2011.01.20 |
Native C++에서 C++/CLR 클래스 사용하기(CLR 옵션) (0) | 2015.03.06 |
---|---|
Native C++에서 C++/CLR 클래스 사용하기 (0) | 2015.03.06 |
콘솔싸이월드 (0) | 2011.01.20 |
개인 주간 계획서 | 작성자 : 김동영 | |||||||||||||
작성일 : 2011년 1월 20일 | ||||||||||||||
할일 | 한일 | |||||||||||||
이번주 할 일 | ||||||||||||||
할 일 | 1/20 목 |
1/21 금 | ||||||||||||
강사님 미팅 | 1 | |||||||||||||
제안서 작성 | 3 | 2 | ||||||||||||
조별스터디 | 1 | 2 | ||||||||||||
wav 파일 분석 | 2 | 4 | ||||||||||||
미니 프로젝트가 시작되었다. 제안서 작성에 중점을 두고 틈틈이 wav 파일 분석 공부를 해야겠다. | ||||||||||||||
Wave분석 최종 (0) | 2011.03.04 |
---|---|
Wave 버젼 (0) | 2011.02.06 |
워크샵 가기전 파일 백업 (0) | 2011.01.26 |
Wave파형분석및데이터출력(예광탄) (1) | 2011.01.25 |
개인 일일 보고서 1일차 (0) | 2011.01.20 |
개인 일일 보고서 | 작성자 : 김동영 | |||||||||||||
작성일 : 2011년 1월 20일 | ||||||||||||||
할일 | 한일 | |||||||||||||
이번주 한 일 | ||||||||||||||
한 일 | 1/20 목 |
1/21 금 | ||||||||||||
강사님 미팅 | 1 | |||||||||||||
제안서 작성 | 3 | 2 | ||||||||||||
3 | ||||||||||||||
조별스터디 | 1 | 2 | ||||||||||||
1 | ||||||||||||||
wav 파일 분석 | 2 | 4 | ||||||||||||
2 | ||||||||||||||
강사님께서 wav파일 포맷을 분석하여 파일 부분 진폭,주파수에 해당하는 곳에 점을 찍어 선으로 출력하라고 하셨다. 오늘은 wav파일의 정의 및 사용 용도를 확인하였다. | ||||||||||||||
Wave분석 최종 (0) | 2011.03.04 |
---|---|
Wave 버젼 (0) | 2011.02.06 |
워크샵 가기전 파일 백업 (0) | 2011.01.26 |
Wave파형분석및데이터출력(예광탄) (1) | 2011.01.25 |
개인 주간 계획서 1주차 (0) | 2011.01.20 |
예비과정 발표점수 (0) | 2011.02.14 |
---|---|
서버와 클라이언트 tcp,udp사용 (0) | 2011.01.20 |
다중파일전송 (0) | 2011.01.17 |
파일입출력(쓰레드구현) (0) | 2011.01.10 |
파일입출력(비동기화 미구현) (0) | 2011.01.10 |
예비과정 발표점수 (0) | 2011.02.14 |
---|---|
서버와 클라이언트 tcp,udp사용 (0) | 2011.01.20 |
메신저(동시 메시지,파일 전송) (0) | 2011.01.17 |
파일입출력(쓰레드구현) (0) | 2011.01.10 |
파일입출력(비동기화 미구현) (0) | 2011.01.10 |
예비과정 발표점수 (0) | 2011.02.14 |
---|---|
서버와 클라이언트 tcp,udp사용 (0) | 2011.01.20 |
메신저(동시 메시지,파일 전송) (0) | 2011.01.17 |
다중파일전송 (0) | 2011.01.17 |
파일입출력(비동기화 미구현) (0) | 2011.01.10 |