MTK USB CAMERA (中芯微Z0301調試)

MTK USB CAMERA (中芯微Z0301調試)

  1. 驅動的部分:難點在於 mtk 不支持原生的 menuconfig, 需要以下方法來配置:
    保證kernel new 過,
    將 /out/.config 拷貝到kernel文件夾,
    TARGET_PRODUCT=projectnamemakeO=outmenuconfig/../mediatek/build/kernel/MakefileTARGETPRODUCT= {project name} KBUILD_OUTPUT_SUPPORT=yes make O=out menuconfig
    配置完成後,將.config 拷貝到mediatek文件夾, 然後重命名 platform ,重新 編譯 kernel 即可。
    Dev/下出現 video0/1 等設備就表示內核配置OK了。
    用開源的 simplewebcam 來測試,發現花屏。此時在 native 層將一幀幀的圖像dump到文件裏面,發現時 jpeg 格式,原生的軟件只支持YUV. 需要自己解碼。

  2. 原生的代碼 external 下的 libjpeg庫 是老版本的,只支持文件的編解碼,不支持 memory 編解碼, 需要移植新版本。

  3. Ndk 編譯新版本庫, 編譯成靜態庫。當然動態庫也可以。 Ndk建議大家用服務器上的,win 下的設計到文件加密的問題,也讓我鬱悶了好久,最後放棄了。
  4. 將生產的靜態庫和頭文件拷貝到工程 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了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章