標籤:
目標問題
對於jpeg的編碼為什麼不用libjpeg而是用mpeg(沒錯就是這電影老古董格式)裡代碼?
其實發現就連wmv等等一些平時用不著的破東西,都是和mpeg老古董共用一套代碼。jpeg和mpeg沒什麼關係吧?overhead不大嗎?
為什麼mjpeg(就是連續的jpeg)編碼輸出時,編碼第N+1副圖時才真正的輸出第N幅圖的jpeg編碼結果?
每得到一副原圖輸入資料,那麼記憶體就似乎被copy到新記憶體,然後廢棄,巨大的圖片的時候,這種copy很浪費CPU,如何讓他不要copy而是直接用原始記憶體。反正一幅幅圖來也不著急,幹嘛要copy 呢。
先編一個android裡用的ffmpeg命令列,要debug版的,關鍵是configure時加上
--enable-debug --disable-stripping
例如:
從NDK裡準備一個標準的gcc tool chain以便後面的跨平台編譯。
echo ---------------make standard GCC Tool Chain from Android NDK--------------------ls -d ./std_toolchain && { echo ./std_toolchain already exist; exit 0; }printenv ANDROID_NDK_ROOT > /dev/null || { echo please export ANDROID_NDK_ROOT=root_dir_of_your_android_ndk; exit 1; }PLATFORM=$(basename $(ls -d $ANDROID_NDK_ROOT/platforms/android-8)); test -z $PLATFORM && exit 1TOOLCHAIN=$(basename $(ls -d $ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-[4-5].* | tail -n 1)); test -z $TOOLCHAIN && exit 1WORK_SYSTEM=$(basename $(ls -d $ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-[4-5].*/prebuilt/* | tail -n 1)); test -z $WORK_SYSTEM && exit 1$ANDROID_NDK_ROOT/build/tools/make-standalone-toolchain.sh --install-dir=./std_toolchain --platform=$PLATFORM --toolchain=$TOOLCHAIN --system=$WORK_SYSTEM --arch=arm --verboseecho ""; echo ok; echo ""export PATH="$PWD/std_toolchain/bin:$PATH"export CC=arm-linux-androideabi-gcc
然後到ffmpeg的源碼下執行configure
./configure --enable-cross-compile --cross-prefix=arm-linux-androideabi- --target-os=linux --arch=armv7 --cpu=armv7-a --disable-doc --disable-ffplay --disable-ffprobe --disable-ffserver --disable-symver --enable-debug --disable-stripping --disable-everything --enable-static --enable-protocol=pipe --enable-filter=scale --enable-filter=crop --enable-filter=transpose --enable-demuxer=rawvideo --enable-decoder=rawvideo --enable-muxer=image2 --enable-muxer=image2pipe --enable-muxer=mjpeg --enable-encoder=mjpeg
只是一個例子而已,只留下了rawvideo輸入格式和mjpeg輸出格式的支援。
然後make, 得到ffmpeg。
傳到android的/data/local/tmp/上。
(一些更具體的準備性質的步驟參照Android native debug: 手動使用gdbserver遠端偵錯C代碼)
然後,開始啟動gdbserver,
待續。
欠揍的ffmpeg,調試android裡的ffmpeg (1)