gallery3 설치
http://howto.homelinux.com/gallery3/
Graphics tools 설치
#sudo apt-get install imagemagick
Android Xotof 에서 보려면
admin->modules 에서 REST API Module 옵션을 활성화 해주어야 한다.
gallery3 설치
http://howto.homelinux.com/gallery3/
Graphics tools 설치
#sudo apt-get install imagemagick
Android Xotof 에서 보려면
admin->modules 에서 REST API Module 옵션을 활성화 해주어야 한다.

안드로이드용 xbmc가 있어 갤럭시 S2 폰에 설치해봤다.
구글 플레이 스토어에 없고 xbmc-korea 에서 다운 받아 설치해야한다.
화면이 작아 버튼 누르기가 힘들고 해상도가 큰 비디오은
제대로 재생이 되지 않고 가끔 버뻑거리지만 쓸만 하다.
갤럭시 S2용 HDMI 케이블이 있다면 TV에 연결해서 봐도 좋을것 같다.
xbmc에 대한 자세한 내용은 다음 사이트를 참조
Linaro 기반 안드로이드에서는 init.rc 파일이 boot.tar.bz2 압축 파일내 uInitrd 에 CPIO 사용하여 저장 되어 있다.
init.rc 수정 방법은 다음과 같다.
tar xjf boot.tar.bz2
mkdir unpacked && cd unpacked
dd if=../boot/uInitrd bs=64 skip=1 | gunzip -c | sudo cpio -i -d -H newc –no-absolute-filenames
sudo vi init.rc
sudo find . | sudo cpio -o -H newc | gzip -c > ../initrd.new
mkimage -A arm -O linux -C gzip -T ramdisk -d ../initrd.new ../boot/uInitrd
rm ../initrd.new
cd ..
rm boot.tar.bz2 && tar cjf boot.tar.bz2 boot
또는 boot.tar.bz2가 저장되어 있는 mmc 파티션에 마운트 하여 uInitrd 파일을 풀어 수정 하면 된다.
Android에서 SVC 디코딩 성능이 나오지 않아 OpenMP 사용하기 위해 android toolchian를 받아 OpenMP 페치를 하여 빌드 하였다.
빌드 후 OpenMP 를 적용하여 빌드하여 실행 했더니 특정 함수에서만 실행 OpenMP가 적용되고 특정 루틴에서는 프로그램이 죽는 현상이 발생하였다.
원인를 찾아 보니 pthread에 내에 있는 함수에서 OpenMP를 적용하면 프로그램이 죽는 현상이었다. 다시 페치 파일을 찾아 pthread에서 OpenMP를 적용해도 프로그램이 죽지 않았다.
그런데 OpenMP를 적용해도 성능이 향상되지 않는다.
문제의 원인를 모르겠다. 디코딩 성능은 안나오는데 CPU 부하는 50% 정도 밖에 되지 않고 OpenMP를 적용해도 성능은 그대로다.
typedef struct XADataFormat_RawImage_ {
XAuint32 formatType;
XAuint32 colorFormat;
XAuint32 height;
XAuint32 width;
XAuint32 stride;
} XADataFormat_RawImage;
| Field | Description |
| formatType | The format type, which must always be XA_DATAFORMAT_RAWIMAGE for this structure. |
| colorFormat | Raw image color format. Refer to XA_COLORFORMAT macros. |
| height | Frame height (vertical) resolution. |
| width | Frame width (horizontal) resolution. |
| stride | Number of bytes in a line of the image. |
#define XA_DATAFORMAT_MIME ((XAuint32) 0x00000001) #define XA_DATAFORMAT_PCM ((XAuint32) 0x00000002) #define XA_DATAFORMAT_RAWIMAGE ((XAuint32) 0x00000003)
#define XA_COLORFORMAT_UNUSED ((XAuint32) 0x00000000) #define XA_COLORFORMAT_MONOCHROME ((XAuint32) 0x00000001) #define XA_COLORFORMAT_8BITRGB332 ((XAuint32) 0x00000002) #define XA_COLORFORMAT_12BITRGB444 ((XAuint32) 0x00000003) #define XA_COLORFORMAT_16BITARGB4444 ((XAuint32) 0x00000004) #define XA_COLORFORMAT_16BITARGB1555 ((XAuint32) 0x00000005) #define XA_COLORFORMAT_16BITRGB565 ((XAuint32) 0x00000006) #define XA_COLORFORMAT_16BITBGR565 ((XAuint32) 0x00000007) #define XA_COLORFORMAT_18BITRGB666 ((XAuint32) 0x00000008) #define XA_COLORFORMAT_18BITARGB1665 ((XAuint32) 0x00000009) #define XA_COLORFORMAT_19BITARGB1666 ((XAuint32) 0x0000000A) #define XA_COLORFORMAT_24BITRGB888 ((XAuint32) 0x0000000B) #define XA_COLORFORMAT_24BITBGR888 ((XAuint32) 0x0000000C) #define XA_COLORFORMAT_24BITARGB1887 ((XAuint32) 0x0000000D) #define XA_COLORFORMAT_25BITARGB1888 ((XAuint32) 0x0000000E) #define XA_COLORFORMAT_32BITBGRA8888 ((XAuint32) 0x0000000F) #define XA_COLORFORMAT_32BITARGB8888 ((XAuint32) 0x00000010) #define XA_COLORFORMAT_YUV411PLANAR ((XAuint32) 0x00000011) #define XA_COLORFORMAT_YUV420PLANAR ((XAuint32) 0x00000013) #define XA_COLORFORMAT_YUV420SEMIPLANAR ((XAuint32) 0x00000015) #define XA_COLORFORMAT_YUV422PLANAR ((XAuint32) 0x00000016) #define XA_COLORFORMAT_YUV422SEMIPLANAR ((XAuint32) 0x00000018) #define XA_COLORFORMAT_YCBYCR ((XAuint32) 0x00000019) #define XA_COLORFORMAT_YCRYCB ((XAuint32) 0x0000001A) #define XA_COLORFORMAT_CBYCRY ((XAuint32) 0x0000001B) #define XA_COLORFORMAT_CRYCBY ((XAuint32) 0x0000001C) #define XA_COLORFORMAT_YUV444INTERLEAVED ((XAuint32) 0x0000001D) #define XA_COLORFORMAT_RAWBAYER8BIT ((XAuint32) 0x0000001E) #define XA_COLORFORMAT_RAWBAYER10BIT ((XAuint32) 0x0000001F) #define XA_COLORFORMAT_RAWBAYER8BITCOMPRESSED ((XAuint32) 0x00000020) #define XA_COLORFORMAT_L2 ((XAuint32) 0x00000021) #define XA_COLORFORMAT_L4 ((XAuint32) 0x00000022) #define XA_COLORFORMAT_L8 ((XAuint32) 0x00000023) #define XA_COLORFORMAT_L16 ((XAuint32) 0x00000024) #define XA_COLORFORMAT_L24 ((XAuint32) 0x00000025) #define XA_COLORFORMAT_L32 ((XAuint32) 0x00000026) #define XA_COLORFORMAT_18BITBGR666 ((XAuint32) 0x00000029) #define XA_COLORFORMAT_24BITARGB6666 ((XAuint32) 0x0000002A) #define XA_COLORFORMAT_24BITABGR6666 ((XAuint32) 0x0000002B)
Wiki : http://howto.homelinux.com/wiki/AndroidFFMPEG#OpenMAXAL
/** PCM-type-based data format definition where formatType must be SL_DATAFORMAT_PCM*/
typedef struct SLDataFormat_PCM_ {
SLuint32 formatType;
SLuint32 numChannels;
SLuint32 samplesPerSec;
SLuint32 bitsPerSample;
SLuint32 containerSize;
SLuint32 channelMask;
SLuint32 endianness;
} SLDataFormat_PCM;
Eclipse에서 안드로이드 JNI/NDK 빌드 환경 구축 방법에 대한 소개 링크
http://permadi.com/blog/2011/09/setting-up-android-jni-projects-in-windows-eclipse-and-sequoyah/
1. Eclipse와 Android SDK 설치
2. Install Eclipse C/C++ Development Tools
– Eclipse menu -> Help->Install New Software
– Select Indigo or CDT updates site
– Select Programming Languages
– Select/check C/C++ Development Tools
3. Install Sequoyah Plug in
– Eclipse menu -> Help->Install New Software
– Add Work with: http://download.eclipse.org/sequoyah/updates/2.0/
– uncheck Group items By Category
– Select All and Install
4. Install Android NDK
5. Add the PATH of Android NDK
– NDK 설치 한 PATH를 윈도우 환경 변수에 추가
6. Add Android NDK path into the Eclipse Android Preferences
– Eclipse menu -> Windows -> Preferences
– Android->Native Development – NDK Location 에 NDK 설치 경로 입력
7. Install Cygwin
– cygwin 이 설치 되어 있지 않으면 설치 한다. 이 때 Devel category의 make tool은 반드시 포함시켜주어야 한다.
8. Restart Eclipse
9. C/C++ build 환경 설정
– Eclipse menu -> Project -> Properties
– C/C++ Build : Build Settings : Build Command 에 “bash c:android-ndk-r7bndk-build” 설정
– C/C++ Build : Environment : PATH 에 “bash.exe” 가 있는 “c:cygwin/bin” 풀더 추가
PDK에 사용하는 API 함수나 클래스는 안드로이드 NDK 개발 환경에서는 사용할 수 없다.
이럴 때는 PDK에서 개발 해야 한다.
PDK 소스를 받아 make 를 사용하여 먼저 빌드 한다.
추가하려는 소스를 external 풀더에 새로 풀더를 만들고 Android.mk 파일을 수정 해 준다.
NDK와 PDK의 Android.mk 는 유사 하지만 PDK에서는 다음을 추가 해 준다.
LOCAL_MODULE_TAGS := optional
그리고 logcat 관련 하여 NDK 에서는 <android/log.h> 를 include 해 주었지만
PDK 에서는 LOG_TAG를 정의해 주고 <utils/Log.h> 를 추가 해 주어야 한다.
#define LOG_TAG “MyApplication”
#include <utils/Log.h>
Android.mk 에는 log 관련하여 libutils를 추가하고 사용하려는 API에 따라 더 추가 한다.
LOCAL_STATIC_LIBRARIES := libutils
빌디 방법은 먼저 다음과 같이 build/envsetup.sh 를 실행해 준다.
chmod +x ./build/envsetup.sh
source ./build/envsetup.sh
빌드는 mmm 명령을 사용하는데 Android.mk 가 위치하는 경로를 넣어 준다. (envsetup.sh 를 먼저 실행 후)
mmm external/MyApplication
android-sdk 를 64bit ubuntu에 설치 하였다.
그런데 adb가 실행 되지 않는다.
원인은 32bit 라이브러리가 기본으로 설치가 안되어서 라이브러리를 못 찾아 실행이 안되었다.
시스템->관리->시냅틱 패키지 관리자 에서 ia32-libs 를 검색하여 설치 해준면 해결된다.