MTK USB CAMERA (中芯微Z0301調試)
驅動的部分:難點在於 mtk 不支持原生的 menuconfig, 需要以下方法來配置:
保證kernel new 過,
將 /out/.config 拷貝到kernel文件夾,
TARGET_PRODUCT=projectnamemakeO=outmenuconfig/∗如果出現../mediatek/build/kernel/Makefile找不到的錯誤,請用TARGETPRODUCT= {project name} KBUILD_OUTPUT_SUPPORT=yes make O=out menuconfig
配置完成後,將.config 拷貝到mediatek文件夾, 然後重命名 platform ,重新 編譯 kernel 即可。
Dev/下出現 video0/1 等設備就表示內核配置OK了。
用開源的 simplewebcam 來測試,發現花屏。此時在 native 層將一幀幀的圖像dump到文件裏面,發現時 jpeg 格式,原生的軟件只支持YUV. 需要自己解碼。原生的代碼 external 下的 libjpeg庫 是老版本的,只支持文件的編解碼,不支持 memory 編解碼, 需要移植新版本。
- Ndk 編譯新版本庫, 編譯成靜態庫。當然動態庫也可以。 Ndk建議大家用服務器上的,win 下的設計到文件加密的問題,也讓我鬱悶了好久,最後放棄了。
將生產的靜態庫和頭文件拷貝到工程 jni目錄下,編寫 jni android.mk
以下是範本:LOCAL_PATH := $(call my-dir) # test lib, write by me include $(CLEAR_VARS) LOCAL_MODULE := first LOCAL_SRC_FILES := first.c LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/first.h include $(BUILD_SHARED_LIBRARY) ## third party so lib #include $(CLEAR_VARS) #LOCAL_MODULE := myjpeg #LOCAL_SRC_FILES := libmtkjpeg.so #LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include/mtkjpeg #include $(PREBUILT_SHARED_LIBRARY) ## prebuilt the static libs include $(CLEAR_VARS) LOCAL_MODULE := jpeg LOCAL_SRC_FILES := libjpeg.a include $(PREBUILT_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE:= ImageProc LOCAL_SRC_FILES := ImageProc.c LOCAL_LDLIBS:= -llog -ljnigraphics #LOCAL_SHARED_LIBRARIES := myjpeg first LOCAL_SHARED_LIBRARIES := first LOCAL_STATIC_LIBRARIES += jpeg include $(BUILD_SHARED_LIBRARY)
然後 在 jni 裏調用 jpeg解碼函數即可 實現功能。基本上就OK了。