TI中文支持网
TI专业的中文技术问题搜集分享网站

dm388,ipnc_rdk_3.8 5MP 和LCD输出的问题

大家好,

我使用DM388开发平台,希望完成以下功能,实现5MP像素图像采集,JPEG编码,1080P LCD图像显示,sensor是IMX172。

我进行了以下尝试:

第一个尝试:在MultiCh_createTriStreamFullFtr()基础上修改

            //在502行,出入以下代码

           //设置sensor 输出分辨率为5MP
            pCameraInstPrm->sensorOutWidth    = 2560;
            pCameraInstPrm->sensorOutHeight = 1920;
            pCameraInstPrm->standard = SYSTEM_STD_5MP_2560_1920;

          //在550行,插入以下代码,

         //设置第一路输出图像分辨率为5MP

          pCameraOutPrm->scOutWidth = 2560;
          pCameraOutPrm->scOutHeight = 1920;

第二个尝试,在MultiCh_createStreamCaptureDisplay()中

         希望第一路CAMERALINK输出5MP图像,然后放入编码LINK,

        第二路CAMERALINK输出1080P图像,放入LCD接口

        但是在displaylink初始化阶段就fail了。

也在lowpower的usercase下进行过尝试(full 模式下运行lowpower 的usercase),也没有成功。

我对TI的解决方案不了解,请大家给一些建议,或者一些参考资料,谢谢啦。

       

Chris Meng:

你好

请问你第二路cameralink输出1080p是如何配置的?display link fail有具体打印什么错误么?

需要实现输出,必须使用full feature,low power 下hdvpss没有打开,没有显示。

Hu Yan:

回复 Chris Meng:

您好,Chris Meng,

非常感谢您的回复!

我是在full模式下启动的, Vsys_create()中启动自定义的usercase。

cameraPrm两路输出

第一路 2560*1920 —>dupLink 1 —>ipcOutVpss —>ipcInVideo  —->encLink—>ipcBitsOut —->ipcBitsInHostPrm0

第二路1920*1080—–>dupLink2 —>sclrLinnk (为了以后接低分辨率的屏幕)—->displayLink

系统运行时,启动一个线程,隔一段时间采用ret = GetAVData(AV_OP_GET_MJPEG_SERIAL, -1, &av_data )抓取jpeg图片。

但是抓取到的图片都是1080P的,而不是5MP的。

我怀疑是encLink的初始配置有误,请您指导解决问题的思路或者提供一些参考资料,不胜感激。

encLink的初始配置,我参考的是full模式下的usercase,配置如下

        /* Video Encoder Link params */        MULTICH_INIT_STRUCT(EncLink_CreateParams, encPrm);        {            EncLink_ChCreateParams *pLinkChPrm;            EncLink_ChDynamicParams *pLinkDynPrm;            VENC_CHN_DYNAMIC_PARAM_S *pDynPrm;            VENC_CHN_PARAMS_S *pChPrm;                    for (i = 0; i < VENC_PRIMARY_CHANNELS; i++)            {                pLinkChPrm    = &encPrm.chCreateParams[i];                pLinkDynPrm = &pLinkChPrm->defaultDynamicParams;                        pChPrm        = &gVencModuleContext.vencConfig.encChannelParams[i];                pDynPrm     = &pChPrm->dynamicParam;                printf("YanHu:codec_combo == %d\n",gUI_mcfw_config.demoCfg.codec_combo);                switch(gUI_mcfw_config.demoCfg.codec_combo) {                    case 0: pLinkChPrm->format = IVIDEO_H264HP; break; //"SINGLE_H264"                    case 1: pLinkChPrm->format = IVIDEO_MPEG4SP; break; //"SINGLE_MPEG4"                    case 2: pLinkChPrm->format = IVIDEO_MJPEG; break; //"SINGLE_JPEG"                    case 3: pLinkChPrm->format = (i==0)? IVIDEO_H264HP:IVIDEO_MJPEG; break; //"H264_JPEG"                    case 4: pLinkChPrm->format = (i==0)? IVIDEO_MPEG4SP:IVIDEO_MJPEG; break; //"MPEG4_JPEG"                    case 5: pLinkChPrm->format = (i==0)? IVIDEO_H264HP:IVIDEO_H264HP; break; //"DUAL_H264"                    case 6: pLinkChPrm->format = (i==0)? IVIDEO_MPEG4SP:IVIDEO_MPEG4SP; break; //"DUAL_MPEG4"                    case 7: pLinkChPrm->format = (i==0)? IVIDEO_H264HP:IVIDEO_MPEG4SP; break;  //"H264_MPEG4"                    case 8: pLinkChPrm->format = (i==0)? IVIDEO_H264HP:IVIDEO_H264HP; break;  //"TRIPLE_H264"                    case 9: pLinkChPrm->format = (i==0)? IVIDEO_MPEG4SP:IVIDEO_MPEG4SP; break; //"TRIPLE_MPEG4"                    default: pLinkChPrm->format = IVIDEO_H264HP;                }                        pLinkChPrm->profile                 = gVencModuleContext.vencConfig.h264Profile[i];                pLinkChPrm->dataLayout                = IVIDEO_PROGRESSIVE;                pLinkChPrm->fieldMergeEncodeEnable    = FALSE;                pLinkChPrm->enableAnalyticinfo        = pChPrm->enableAnalyticinfo;                pLinkChPrm->maxBitRate                = pChPrm->maxBitRate;                pLinkChPrm->encodingPreset            = pChPrm->encodingPreset;                pLinkChPrm->rateControlPreset        = IVIDEO_USER_DEFINED; //pChPrm->rcType;                pLinkChPrm->enableHighSpeed         = FALSE;                pLinkChPrm->enableWaterMarking        = pChPrm->enableWaterMarking;                pLinkChPrm->StreamPreset            = gUI_mcfw_config.StreamPreset[i];                        pLinkDynPrm->intraFrameInterval     = pDynPrm->intraFrameInterval;                pLinkDynPrm->targetBitRate            = pDynPrm->targetBitRate;                pLinkDynPrm->interFrameInterval     = 1;                pLinkDynPrm->mvAccuracy             = IVIDENC2_MOTIONVECTOR_QUARTERPEL;                pLinkDynPrm->inputFrameRate         = pDynPrm->inputFrameRate;                pLinkDynPrm->rcAlg                    = pDynPrm->rcAlg;                pLinkDynPrm->qpMin                    = pDynPrm->qpMin;                pLinkDynPrm->qpMax                    = pDynPrm->qpMax;                pLinkDynPrm->qpInit                 = pDynPrm->qpInit;                pLinkDynPrm->vbrDuration            = pDynPrm->vbrDuration;                pLinkDynPrm->vbrSensitivity         = pDynPrm->vbrSensitivity;                        encPrm.numBufPerCh[i] = 4;                gVencModuleContext.encFormat[i] = pLinkChPrm->format;            }        }            encPrm.chCreateParams[0].defaultDynamicParams.inputFrameRate = 30;                        encPrm.vsEnable = gUI_mcfw_config.vsEnable;                        encPrm.isVaUseCase = 0;           // for (i = VENC_PRIMARY_CHANNELS; i < (VENC_CHN_MAX – 1); i++)

          for (i =0; i < (VENC_CHN_MAX – 1); i++) 

        强制设置三个编码通道都为JPEG编码            {                encPrm.chCreateParams[i].format = IVIDEO_MJPEG;                encPrm.chCreateParams[i].profile = 0;                encPrm.chCreateParams[i].dataLayout = IVIDEO_PROGRESSIVE;                encPrm.chCreateParams[i].fieldMergeEncodeEnable = FALSE;                encPrm.chCreateParams[i].defaultDynamicParams.intraFrameInterval = 0;                encPrm.chCreateParams[i].encodingPreset = 0;                encPrm.chCreateParams[i].enableAnalyticinfo = 0;                encPrm.chCreateParams[i].enableWaterMarking = 0;                encPrm.chCreateParams[i].defaultDynamicParams.inputFrameRate = 30;                encPrm.chCreateParams[i].rateControlPreset = 0;                encPrm.chCreateParams[i].defaultDynamicParams.targetBitRate =                    100 * 1000;                encPrm.chCreateParams[i].defaultDynamicParams.interFrameInterval = 0;                encPrm.chCreateParams[i].defaultDynamicParams.mvAccuracy = 0;                gVencModuleContext.encFormat[i] = encPrm.chCreateParams[i].format;            }            encPrm.inQueParams.prevLinkId = ipcInVideoId;            encPrm.inQueParams.prevLinkQueId = 0;            encPrm.outQueParams.nextLink = gVencModuleContext.ipcBitsOutRTOSId;

赞(0)
未经允许不得转载:TI中文支持网 » dm388,ipnc_rdk_3.8 5MP 和LCD输出的问题
分享到: 更多 (0)