G.711 코덱 정보 및 소스 (Encoding & Decoding)

by Blogger 하얀쿠아
2012.02.02 09:56 수행 프로젝트 이력/참여자주도형 정보공유 시스템 [2011.12~2012.02]
G.711 코덱정보
(인코딩 & 디코딩)

참조 : 
http://en.wikipedia.org/wiki/G.711 

G.711

음성에 있어서의 ITU 표준 / H.323환경에서 음성전달 전송방식의 기본 오디오 코덱 표준안이다. G.711은 64Kbps에서 3KHz의 전화급 오디오 품질을 제공하기 위하여 PCM 오디오 엔코딩과 미국, 유럽에서 주로 이용하는 U-law 또는 A-law 방식을 사용한다. 펄스코드변조 (Pulse Code Modulation, PCM) 방식은 샘플들을 미국 방식인U-law 또는 유럽 방식인 A-law 양자화 방식을 이용하여 한정된 재구성 세트 중의 하나로 양자화를 시켜주는 파형 코딩 방식이다. G.711 표준은 전화 대화 코딩을 위한 표준 방식으로 8Bit PCM을 정의하고 있다.
 

G.711 aLaw 방식

16비트 PCM값을 8bit G.711데이터 값으로 압축한다. Sign bit와 마지막 3bit를 값 무시. 나머지 12bit값을 8bit로 변환한다.
 

G.711 uLaw 방식

16비트 PCM값을 8bit G.711데이터 값으로 압축한다. Sign bit와 마지막 2bit를 값 무시. 나머지 13bit값을 8bit로 변환한다.
 

G.711 Optimization

* 공개 Source 기반을 바탕 연산횟수 최소화 
   Binary Search

* Mapping Table 작성 
  장점 - 빠른 처리속도

  단점 - 좀 더 많은 메모리 사용
 

* 구현 방식 비교(단위 tic) 

(음수)-32768 ~ 32767의 16비트 음성 Data 값을 G.711코덱에 통과시켜 압축된 Data를 table[0]~table[65536]에 할당하여 table을 미리 만들고 이 table을 이용하여 아래와 같이 인덱싱을 하였다(이중 인덱싱) Ddata[i] = table[SrcData[i]+32768]; 실제구현은 다음과 같이 0~32767의 값(table[32767]~table[65536]) 을 table[0]~table[32766]에 할당하고 (음수)-32768~(음수)-1의 값( table[0] ~table[32768])을 table[32767]~table[65536]에 할당하여 table을 만들고 이table을 이용하여 아래와 같이 인덱싱을 한다. Ddata[i] = table[SrcData[i]]; (기존의 SrcData[i] 는 short로 받았으나unsigned short(-32768=32769)로 받는다.) 


G.711은 초당 64Kbps 즉,8000 Byte 이므로 20ms는 160Byte이다


64kbps


64000bps


8000byte


1000ms : 8000byte = 20 : x


x = 160byte 




 
이 댓글을 비밀 댓글로