OSDN Git Service

adjust README display style
[android-x86/external-stagefright-plugins.git] / README
1 ================================================================================
2 Stagefright Plugins for Android
3 ================================================================================
4
5 1. Enhance the Android multimedia framework providing additional Plugins for
6    user interaction
7 2. FFmpeg provides demuxers and av codecs;
8 3. SDL provides basic library: thread, mutex, and timer, but all of sdl should 
9    be removed;
10 4. NamExtractor is a extractor plugin, it would be loaded by Stagefright when 
11    Stagefright started.
12 5. NamExtractor will load FFmpegExtractor, MplayerExtractor and VLCExtractor.
13    but only FFmpegExtractor is implemented now.
14 6. FFmpegExtractor is the reference to "ffmpeg/ffplay" to achieve. 
15 7. libstagefright_soft_ffmpegvdec plugin is video decoder
16 8. libstagefright_soft_ffmpegadec plugin is audio decoder[TODO]
17
18 ================================================================================
19 Why is named nam[NamExtractor]?
20 ================================================================================
21
22 Namtso, or Lake Nam, is one of the three holy lakes in Tibet Autonomous Region
23 and should not be missed by any traveler to Tibet. In Tibetan, Namtso means
24 "Heavenly Lake." It is famous for its high altitude and imposing scenery.
25
26 I used to travel there in 2011 Sep.
27
28 ================================================================================
29 Requirements
30 ================================================================================
31
32 CyanogenMod 9.x (Ice Cream Sandwich)
33 http://wiki.cyanogenmod.com/wiki/Galaxy_Nexus_(GSM):_Compile_CyanogenMod_(Linux)
34
35 FFMPEG-0.11.1
36 git://android.git.linaro.org/platform/external/ffmpeg.git
37
38 SDL-1.3.0
39 git@github.com:omxcodec/android_external_sdl.git
40
41 ================================================================================
42  How to build
43 ================================================================================
44
45 1. Get the Source
46    clone cm-9.1.0 source from CyanogenMod git:
47        repo init -u git://github.com/CyanogenMod/android.git -b cm-9.1.0
48    plz ref: http://wiki.cyanogenmod.com/wiki/Galaxy_Nexus_(GSM):_Compile_CyanogenMod_(Linux)
49
50    clone my sources from the omxcodec{github} git!
51    in your "android/external" folder, run:
52    stagefright-plugins:
53        git clone git@github.com:omxcodec/stagefright-plugins.git stagefright-plugins
54    ffmpeg:
55        git clone git@github.com:omxcodec/android_external_ffmpeg.git ffmpeg -b linaro-0.11.1
56    sdl:
57        git clone git@github.com:omxcodec/android_external_sdl.git sdl
58
59    in your "android/external" folder, run:
60    cp stagefright-plugins/repo/local_manifest.xml ../.repo
61    cd ..      // go to android folder
62    repo sync  // sync "frameworks_base" code again!
63
64    "repo sync" sync "frameworks_base" code again! of course, you can merge my
65    android_external_ffmpeg code instread of "repo sync" frameworks_base. once you do,
66    so you should pay attention to the "USES_NAM" flag, it is only in the
67    "android/frameworks/base" directory
68  
69 2. Compile
70    add USES_NAM flag to COMMON_GLOBAL_CFLAGS in android build system
71        vi vendor/samsung/maguro/BoardConfigVendor.mk and add these lines to it
72            USES_NAM := true
73            ifdef USES_NAM
74                COMMON_GLOBAL_CFLAGS += -DUSES_NAM
75            endif
76
77    ffmpeg:
78    cd android/external/ffmpeg
79    mm ffmpeg  // NOT "mm", plz FIXME!
80
81    cd android/external/sdl
82    mm
83
84    cd android/external/stagefright-plugins
85    mm
86
87 3. Install
88    adb root
89    adb remount
90    adb sync // sync your android build system to your phone or pad
91    reboot   // reboot your phone or pad
92
93 4. Run
94    get test media files:
95        wget http://movies.apple.com/media/us/ipad/2012/tv-spots/apple-ipad-this_good-us-20120307_848x480.mov
96        wget http://movies.apple.com/media/us/ipad/2012/80ba527a-1a34-4f70-aae8-14f87ab76eea/tours/apple-ipad-feature-us-20120307_848x480.mp4
97
98    let us suppose your media files locate at "/sdcard/Movies/" folder.
99    one console window, you should run:
100        adb logcat
101    and other cosole window, you should run:
102    test NamExtractor and FFmpegExtractor plugins:
103        adb shell am start -a android.intent.action.VIEW -d file:///mnt/sdcard/Movies/apple-ipad-this_good-us-20120307_848x480.mov -t video/*
104        adb shell am start -a android.intent.action.VIEW -d file:///mnt/sdcard/Movies/apple-ipad-feature-us-20120307_848x480.mp4 -t video/*
105    test SoftFFmpegVideo decoder plugin:
106        cd android/external/stagefright-plugins/tools folder, run:
107        adb root
108        ./install // install my scripts
109        adb root && adb shell set-vdec-sw1 // let omxcode choose software decoder
110        adb shell am start -a android.intent.action.VIEW -d file:///mnt/sdcard/Movies/apple-ipad-this_good-us-20120307_848x480.mov -t video/*
111        adb shell am start -a android.intent.action.VIEW -d file:///mnt/sdcard/Movies/apple-ipad-feature-us-20120307_848x480.mp4 -t video/*
112
113    run it and enjoy!
114
115 ================================================================================
116  Known issues
117 ================================================================================
118 1. audio codec to be integrated
119 2. some media file do not have h263 extradata(FFmpegExtractor)
120 3. some .mov movies do not av resync when seeking
121
122 If you need help with the library, or just want to discuss nam related issues, 
123 you can contact me: Michael Chen (omxcodec@gmail.com)
124