leopardDm365 mt9p031 encode-demo输出

来源:互联网 发布:informix 创建数据库 编辑:程序博客网 时间:2024/06/10 23:25

leopardDm365 mt9p031 encode-demo输出

环境:开发板Leopardboard.org dm365

sdk包:DVSDK4.02

摄像头模块:LI-5M03(mt9p031)

本文档目的:使用sdk包里面的encode,demo程序输出摄像头的图像到显示器(composite 输出模式)

步骤:

1、编译内核时,指定开发板输出模式为composite,camera输入为mt9p031;

2、修改sdk包内

ti-dvsdk/dmai_2_20_00_15/packages/ti/sdo/dmai/linux/dm365/Capture.c文件

修改Capture_create函数,

        把else {
            ctrl.value = 0x5F4;
        }

改成  else {
            ctrl.value = 0x002fffff;
        }

3、修改ti-dvsdk/dmai_2_20_00_15/packages/ti/sdo/dmai/linux/dm365/Resize.c文件

修改函数Previewer_continuous_config

        prev_cont_config.input.colp_elep= IPIPE_BLUE;
        prev_cont_config.input.colp_elop= IPIPE_GREEN_BLUE;
        prev_cont_config.input.colp_olep= IPIPE_GREEN_RED;
        prev_cont_config.input.colp_olop= IPIPE_RED;

改成

prev_cont_config.input.colp_elep= IPIPE_GREEN_BLUE;
prev_cont_config.input.colp_elop= IPIPE_BLUE;
prev_cont_config.input.colp_olep= IPIPE_RED;
prev_cont_config.input.colp_olop= IPIPE_GREEN_RED;

4、重新编译dmai,执行

sudo make dmai_clean

sudo make dmai

5、修改ti-dvsdk/dvsdk-demos_4_02_00_01/dm365/encode/Main.c文件

注释内容(或者删除)1

#if 0 //add dongxf
    /* Launch interface app */
    if (args.osd) {
        if (launchInterface(&args) == FAILURE) {
            exit(EXIT_FAILURE);
        }
    }
#endif //add dongxf

注释内容(或者删除)2

#if 0 // 2add dongxf
    /* Create the user interface */
    uiAttrs.osd = args.osd;
    uiAttrs.videoStd = args.videoStd;


    hUI = UI_create(&uiAttrs);


    if (hUI == NULL) {
        cleanup(EXIT_FAILURE);
    }
    /* Get configuration from QT interface if necessary */
    if (args.osd) {
        status = getConfigFromInterface(&args, hUI, &stopped);
        if (status == FAILURE) {
            ERR("Failed to get valid configuration from the GUI\n");
            cleanup(EXIT_FAILURE);
        }
        else if (stopped == TRUE) {
            cleanup(EXIT_SUCCESS);
        }
    }
#endif //add dongxf

注释内容(或者删除)3

 //   uiSetup(hUI, &args); //3 add dongxf

修改:    把numThreads = 1;
改成numThreads = 0; //add dongxf

注释内容(或者删除)4

#if 0
    /* Main thread becomes the control thread */
    ctrlEnv.hRendezvousInit    = hRendezvousInit;
    ctrlEnv.hRendezvousCleanup = hRendezvousCleanup;
    ctrlEnv.hPauseProcess      = hPauseProcess;
    ctrlEnv.keyboard           = args.keyboard;
    ctrlEnv.time               = args.time;
    ctrlEnv.hUI                = hUI;
    ctrlEnv.engineName         = engine->engineName;
    ctrlEnv.osd                = args.osd;


    ret = ctrlThrFxn(&ctrlEnv);


    if (ret == THREAD_FAILURE) {
        status = EXIT_FAILURE;
    }
#endif

并在这后面加上一个getcha();否则程序运行一会就会结束了。

注释内容(或者删除)5

#if 0 //add dongxf
    if (args.osd) {
        int rv;
        if (hUI) {
            /* Stop the UI */
            UI_stop(hUI);
        }
        wait(&rv);      /* Wait for child process to end */
    }
#endif //add dongxf

注释内容(或者删除)6

#if 0 //add dongxf
    if (hUI) {
        UI_delete(hUI);
    }
#endif //add dongxf

修改:

把captureEnv.videoInput         = args.videoInput;

改成captureEnv.videoInput =Capture_Input_CAMERA;//固定设置为mt9p031输入

6、修改ti-dvsdk/dvsdk-demos_4_02_00_01/dm365/encode/Capture.c

修改函数Void *captureThrFxn(Void *arg)

hCapture = Capture_create(hBufTab, &cAttrs);

    前面增加 cAttrs.onTheFly == TRUE;//add

7、修改完成后,重新编译

执行sudo make demos_clean

sudo make demos

之后把执行文件encode拷贝到开发板

执行

fbset -disable
./encode -v test.264 -y 1 -I 4 -k

   

8、需要注意的是启动开发板前需要把摄像头模块装好,并接好输出

leopard关联的sdk包是不可用以直接编译的,所以需要单独安装一个dvsdk4.02到其他的目录下

安装的时候关联编译器。安装好之后,进入sdk包目录,先执行sudo make 

9、这里面的步骤:只能显示图像和编码,为了方便,已经把控制进程去掉,其他的各种效果,

     需要自己仔细调试。

10、本文章欢迎转载,烦请注明出处,谢谢。

make by dongxf 2012-09-21

enjoy you~














原创粉丝点击