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了。