본문 바로가기
[Developer]/Android

AndroidCodec 1st Morning

by 해피빈이 2011. 5. 23.

 

노태상 nadream@gmail.com

 

 C기반으로 Divx, tvix Player 소스 제공 가능.

이것을 토대로 만들어진 예로는 rock player가 있다.

Decompile -> ffmpeg, gstreamer로 변환(C기반)

cygwin을 이용해서 JNI를 통해 java로 변환하는 작업이 필요하다.

 

HAL : 하드웨어 추상화 층

이미지 코덱쪽에는 STL을 이용하는 방법을 배울 예정

오디오쪽은 ALSA를 알아야 한다.

 

앱을 개발하더라도 리눅스는 알아야 한다.

그것이 개발하는데에 더 수월하게 할것이다.

 

장비 C100, V210

** 커널 **

 

linphone.org

 

브라우저앱, 웹앱 두 종류가 있다. 전자는 속도가 빠르고 호환성이 뛰어나다. 후자도 호환성은 뛰어나나 속도가 느리다. 참고하자.

SQLite는 앱 개발자들에게 필수이다. 셋팅때문이다.

 

결국은 자바와 라이브러리와 C코드를 함께 보아야 할 것이다.

 

jQuery를 이용하면 웹앱(모바일 웹페이지)에서도 일반 앱과 흡사한 수준으로 구현이 가능하다.

 

3Page=

 

안드로이드 플랫폼 구조에서 Kernel레벨 코드에서 Binder, Power Management, Shared Memory Driver 중요하다.

삼성쪽의 보드를 사용한다면 OS레벨에서 MFC(Multi Format Codec)을 제공한다. API레벨로 이용하면 될 것이다.

 

어떤 행동을 하든 Libc를 통해서 한다.

Application Level에서는 Media Player, Album을 제외하곤 Google 기본 제공 앱이다.

 

BSD license는 소스코드공개의무없다.

Audio Flinger는 ALSA를 쓰면 된다.

 

5Page=

 

main framebuffer를 기억. 16배수.

 

android.gitckernel.org

alsa-utils-lib

 

thread처리가 잘 되어 있어서 Surface View를 이용하여 처리하면 좋다.

 

OMS쪽에 대한 것은 레지스터를 직접 건드리는게 많아서 알아두는게 중요하다.

 

필요한 도구 : cygwin, VirtualBOX, NDK, Ubuntu

sudo mount -t vboxsf 공유폴더명 /mnt

: /mnt에 내가 설정한 공유폴더가 마운트 된다. 이제 쓰면 된다.ㅎㅎ

 

ndk-build 커맨드를 잘 기억하라!

이것은 shell script로 구성되어있다.

Linux나 안드로이드는 ANSI-C를 사용하지 않는다.

cygwin을 이용하여 개발하려는 이유는 app에서 하려고 하기 때문이다.(NOT platform)

 

APP -

/src

/jni

/libs

/gen

/bin

/AndroidManifest.xml

로 구성되어있다.

 

ndk-build가 참조하는 폴더(프로젝트 폴더)에서 반드시 필요한 것은 Androidmanifest.xml 파일이다.

그리고 /jni 폴더 안에 Android.mk 파일을 생성하여야 한다.

 

위에 빨간색으로 표시된 것은 필수로 필요한 파일들이다.

 

  1. java class를 생성하고
  2. header(jni header)를 생성하고(수동생성이 가능하기도 하고, javah를 이용하여 자동생성도 된다.)
  3. function을 구현하여야 한다.

 

오픈소스 ffmpeg => 빌드할 필요가 있다.

기간내에 한번 빌드해보면 좋을것 같다.

 


Here's the general outline of how you work with the NDK tools:

  1. Place your native sources under <project>/jni/...
  2. Create <project>/jni/Android.mk to describe your native sources to the NDK build system
  3. Optional: Create <project>/jni/Application.mk.
  4. Build your native code by running the 'ndk-build' script from your project's directory. It is located in the top-level NDK directory:
    cd <project>
    <ndk>/ndk-build
    

    The build tools copy the stripped, shared libraries needed by your application to the proper location in the application's project directory.

  5. Finally, compile your application using the SDK tools in the usual way. The SDK build tools will package the shared libraries in the application's deployable .apk file.

 

위의 내용은 ndk를 시작하기 위해 필요한 과정이다.(from android developer site)

 

퀄컴칩을 개발할때 컴파일러는 범용이다.

최적화를 시키기 위해선 칩셋과 컴파일러를 동일한 것으로 사용하는것이 좋다.(범용으로 쓰면 최적화가 어렵다.)

 

Eclipse도 기반은 리눅스이다. cc1으로 컴파일 하는 것을 보면 알수있다.

 

만든 라이브러리는 두 위치가 있다.

  1. .so파일을 platform에서 포팅한 경우 /system/lib
  2. app에서 설치한 경우 /data/data/패키지명/libs/*.so

 

현재는 cygwin을 이용하여 ffmpeg.so파일을 컴파일 해보도록 하자.(앞으로의 활용측면)

 

 

이 글은 스프링노트에서 작성되었습니다.

반응형

'[Developer] > Android' 카테고리의 다른 글

AndroidCodec 2nd Morning  (0) 2011.05.24
AndroidCodec 1st Afternoon  (0) 2011.05.23
Android CTS(Android Compatibility Test Suite)  (0) 2010.12.01
Linux4Android 5th Afternoon  (0) 2010.11.12
Linux4Android 5th Morning  (0) 2010.11.12

댓글