StageCraft 내에서 사용중인 aac library와 동일한 소스는 구하지 못하고,

대신 http://www.audiocoding.com/ 에서 제공중인 aac decoder를 찾아서

mipsel 용으로 빌드(cross compile) ..

 

*Faad2-2.7 libfaad\.libs 폴더에 빌드 되어있는 libfaad.a 라이브러리도 사용.

 

---------------------------------------------------------------------------------------------------------------------------------------

사용 방법 :

샘플 app :

1) libFaad_out\output\faad

2) libFaad_out\output\libfaad.so.2

3) NFS 환경에서 debug -> sh 진입


  $cp libfaad.so.2 /mnt/lib/

5) main의 첨부된 테스트용 aac/mp4파일(ct_faac0adts.aac, fishH264_30fps_medium.mp4)을 준비

6) Decoding 실행    

$ ./faad –o outfile.wav ct_faac-adts.aac

 

7) 결과

-  19.992(15.032) 가량의 acc(mp4) 컨텐츠 decoding 2.52(6.24) 소요됨

 

Case 1 ) aac to wav decoding

 

  Case 2 ) mp4 to wav decoding

 

---------------------------------------------------------------------------------------------------------------------------------------

 

라이브러리 API 사용 방법 :

라이브러리 :

libfaad.so.2 (shared object)

헤더 :

faad.h , neaacdec.h

 

사용 API :

1)헤더 포함

#include neaacdec.h

 

2)코덱 헤더 선언

NeAACDecHandle decoder;

 

 

3)디코더 오픈

decoder = NeAACOpen();

 

 

4)디코더 초기화

NeAACDecInit2(decoder, buffer, bufferSize, &samplerate, &channels);

 

 

5)오디오 관련 설정

NeAACDecAudioSpecificConfig(buffer, bufferSize, &mp4ASC);

 

 

6)디코딩

NeAACDecDecode(decoder, &frameInfo, buffer, bufferSize);

 

 

7)디코더 종료

NeAACDecClose(decoder);

 

 


 

*자세한 샘플은 위의 frontend 폴더의 sample app 코드 참조.

 

 

 

---------------------------------------------------------------------------------------------------------------------------------------

라이브러리 빌드 방법 :



$ ./configure host=mipsel-linux prefix=$TPREFIX without-frontend without-mp4v2 without-fp nfp

$ make

- .env (env 파일은 libfaad 에 맞게 수정했습니다. – C0에서도 사용해도 됨.)

- fixed point 디코딩 방식으로 빌드 옵션을 설정.

(config.h#define FIXED_POINT 추가 필요)

 

 

---------------------------------------------------------------------------------------------------------------------------------------

 

 

wvpack 포팅 완료.

이것으로 (APE, FLAC, TTA, MPC, WV등)
왠만한 major 사의 mp3p 정도의 audio codec 재생 능력을 갖추게 된거다.

멀티미디어 플레이어의 framework 구조가
File I/O 쪽에 동시에 2개 open 해서 Queue 하는게
좀 그래서 일단 하이브리드 모드는 보류했다

wavpack.com

WavPack은 오디오 파일을 .wv 확장자로 압축한다. .WAV파일 형식을 가진 8비트, 16, 24 그리고 32 비트 부동소수점 오디오 파일을 압축할 수 있다. 서라운드 사운드 스트림을 지원하며, 높은 주파수의 샘플링 레이트를 지원한다. 다른 무손실 오디오 압축 코덱과 마찬가지로 압축률은 소스에 따라 변한다. 하지만, 일반적인 팝 음악 파일에 대해서 보통 30% 내지 70%의 압축률을 보여준다. 또한, 클래식 음악에는 더 좋은 압축률을 보여주고, 다이내믹 레인지가 큰 소스에 대해서도 더 나은 압축률을 보여준다.

WavPack은 "하이브리드" 모드를 지원한다. 하이브리드 모드는 손실 압축 파일 하나(.wv)와 "손실 보정용"(correction) 파일 하나(.wvc)로 이루어진다. 이 두 개의 손실 압축 파일과 손실 보정용 파일을 가지고서 완벽히 손실 없이 원음을 압축해제 할 수 있다. 아니면 비교적 작은 크기의 고품질 손실 압축 파일(.wv)만 활용할 수도 있다.

이러한 방법은 손실압축 코덱과 무손실압축 코덱의 이점을 모두 가져다 준다. 현재 이러한 "하이브리드" 기능은 OptimFROG와 WavPack만이 지원하고 있다.



최초 fixed point 옵션 없이 포팅 완료 했을 때,
디코딩 속도가 wave out 속도에 미치지 못하여서,
소리가 뚝뚝 끊겼다.

찾아낸 Fixed Point 라이브러리 사용 옵션을 이용하여
다시 포팅하니 잘 동작 했다.

아래에 관련 자료를 찾았는데, 아쉽게도.해당 자료가 삭제 되어있다.
fixed point library 사용하기   2008.09.23
변환 속도가 빠른 동영상 인코더는 fixed point 연산을 이용한다.
물론, 그중에는 미리 계산된 변환 테이블을 이용하는...264 코덱)임베디드에서 실수형을 쓰는 것보단
 fixed point 연산으로 변환해서 쓰는 것이 더 빠르다. 수작업으로...

http://monac.egloos.com 


Adobe의 Spec을 둘러보고, A/V 파싱하는 파서 제작. (완료한지 좀 됐다.)

VP6 + mp3 조합.
mp3는 잘 재생되고, VP6코덱을 타겟에 심을 예정,,
오디오 트랙 1개짜리 단순한 구조라서 avi나 mkv 등에 비해서 훨씬 수월하다.



gsplayer용 TTA codec 파일 재생 플러그인. ( windows CE, mobile armv4I )
(계속 미루다가 마무리 해버렸다,,)


https://sourceforge.net/projects/gstta/
에서도 다운 받을 수 있다. 

- 변경사항 -

Seek 기능 추가.
재생시 주기적으로 튐 증상 제거.
(디코딩 쓰레드 추가, 디코딩 큐와 오디오 큐의 완충용 큐 추가.)

TTA Codec Library를 WinCE 용으로 포팅 중..
(아무래도 기능 추가하라고 할 것으로 예상되므로.. 미리미리..)

try - catch 옵션에서의 warning 처리는 /GX 빌드옵션 추가 한다.

FLAC이나 APE에 비해 단순한 구조로 구성되어 porting 자체는 간단하다.

                                 TTA 파일 재생용 winamp 플러그인.
                                   

+ Recent posts