大家好,我用dm385芯片接入两路1080p图像,编码link有四个通道,0,1是1080p,2,3通道是0,1通道缩放至D1分辨率的图像,我现在想实现按键拍照功能,按一下键,就将通道0的数据编码成一幅mjpeg图像,我使用Venc_snapshot(0,0)函数,在App_ipcBitsRecvStreamFxn中并没有mjpeg类型的数据生成,请问我该怎么办?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好,我用dm385芯片接入两路1080p图像,编码link有四个通道,0,1是1080p,2,3通道是0,1通道缩放至D1分辨率的图像,我现在想实现按键拍照功能,按一下键,就将通道0的数据编码成一幅mjpeg图像,我使用Venc_snapshot(0,0)函数,在App_ipcBitsRecvStreamFxn中并没有mjpeg类型的数据生成,请问我该怎么办?
我主要是想问下思路是否正确,是否需要在usecase的enclink中再增加一个mjpeg的通道。现在enclink中的四个通道都是用于h264编码。如果需要添加一个通道,那就必须dup一路数据源作为输入,而且还要设置mjpeg的输出帧率,那样的话就会一直有jpeg图像输出,与我想要的结果就不一样了。
你好;
需要再dup 一路视频处理的,并且设置为mjpeg编码;
你可以初始化这个编码通道全部都跳帧,这样就不会一直有输出,当你在调用 Venc_snapshot 才会有数据的输出;
/**
* \brief:
* Take a snapshot jpeg frame
* \input:
* vencChnId -- encoder channel id
* vencStrmID -- the stream id
* \output:
* NA
* \return
* TI_MEDIA_SUCCESS -- while success
* ERROR_CODE -- refer for err defination
*/
Int32 Venc_snapshotDump(VENC_CHN vencChnId, VENC_STRM vencStrmID)
你好:请问怎么设置编码通道全部跳帧?我将enclink_common.c中enclink_codec_set_ch_alg_default_dynamic_params函数的
pChAlgDynPrm->targetFrameRate = ENC_LINK_MJPEG_DEFAULT_ALGPARAMS_TARGETFRAMERATEX5000;
pChAlgDynPrm->refFrameRate = ENC_LINK_MJPEG_DEFAULT_ALGPARAMS_REFFRAMERATEX5000;
这两个参数改为0,以为就是输出为0了,但是这样改编码算法会报错。
不用直接修改编码器里面的参数;
在编码器配置完后,你通过下面的接口来配置这个通道的编码流的输出:
case VENC_FRAMERATE:
{
EncLink_ChFpsParams params;
params.chId = vencChnId;
/* New fps vaule in fps x 1000 formate */
params.targetFps = (1000 * ptEncDynamicParam->frameRate);
/* Corresponding bitrate value */
params.targetBitRate = ptEncDynamicParam->targetBitRate;
System_linkControl(gVencModuleContext.encId, ENC_LINK_CMD_SET_CODEC_FPS,
¶ms, sizeof(params), TRUE);
break;
}