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

8127 RDK_V2.8 如何实现720P

在Full Feature的usecase里,修改D1那条流实现720P,代码如下:

pCameraOutPrm = &pCameraInstPrm->outParams[1];  

pCameraOutPrm->dataFormat = SYSTEM_DF_YUV420SP_VU;  

pCameraOutPrm->scEnable = FALSE;

pCameraOutPrm->scOutWidth = 1280;   // 720

pCameraOutPrm->scOutHeight = 720;   // 480

pCameraOutPrm->standard = SYSTEM_STD_720P_60;   // SYSTEM_STD_NTSC;//SYSTEM_STD_PAL;  

pCameraOutPrm->outQueId = 1;

但从VLC连接看,分辨率还是D1,并没有实现720P,而串口打印信息:

[m3video]  13297: ENCODE: Creating CH1 of 1280 x 720, pitch = (1280, 1280) [PROGRESSIVE] [NON-TILED  ], bitrate = 2000 Kbps …

没有错误提示,貌似是配置进去了。

请问,v2.8是否支持这样配置,如果支持,是否还有哪里要修改?

谢谢。

Pei Jacky

Pei Jacky:

请问TI的工程师或其他做这个的朋友,能否给些建议?

Chris Meng:

请问你需要的主码流和附码流分别是多大分辨率和帧率?

除了上面的修改,你还需要修改ISS驱动部分,把RSZB的输出分辨率改为720P。

你可以先尝试着主码流下修改。

Pei Jacky:

回复 Chris Meng:

编辑有问题,请看下面帖子回复

Pei Jacky:

回复 Chris Meng:

我们用的版本是V2.8.0,这个版本的分辨率已经不需要修改ISS驱动了吧。

我做过如下修改:

分辨率修改:

1.MJPEG_1080P –> MJPEG_720P,板子能正常工作;

2.H264_1080P –> H264720P,失败。

3.两条1080P都改成720P,失败。

(2)、(3)的错误应该是720p那条流引起的,

出错代码位置:

encLink_h264.c

enclink_h264_set_algObject()

UTILS_assert((status->videnc2Status.bufInfo.minOutBufSize[i].bytes < algCreateParams->mvDataSize));

h264那条从1080p改到720p后,bufInfo.minOutBufSize[1].bytes的值没变,都是148172;

而 algCreateParams->mvDataSize的值随着分辨率由194400变为了86400。所以这里校验会错(148172<86400).

奇怪的是,将h264_1080P改为1600×900,板子能正常工作,上面校验的两个值都发生的了变化且能保证校验通过,不知道为什么720P的时候minOutBufSize[1].byte没有变,和1080p时一样。

4.将D1改成CIF,失败,串口信息:

[m3video]  11314: ENCODE: Creating CH1 of 360 x 120, pitch = (360, 360) [PROGRESSIVE] [NON-TILED  ], bitrate = 2000 Kbps …  

[m3video] 11422:!ERROR!:ENCLINK::links_m3video/iva_enc/encLink_h264.c:[195]::INTERNAL ERROR:-1  

[m3video] ALGCONTROL FAILED:CMD:1  

[m3video] ERROR: XDM_UNSUPPORTEDPARAM = 14,  

[m3video] ERROR: XDM_FATALERROR = 15  

[m3video] ERROR: IH264ENC_UNSUPPORTED_VIDENC2DYNAMICPARAMS = 30,

以上!

所以,如果要求高清的支持1080P和720P,其他支持D1和CIF,应该能支持吧,那么720P和CIF该如何实现?

H264编码修改(profile):

由High profile的修改Main profile和BaseLine profiel,没有成功。

修改代码如下:

======code========

1. Venc_params_init() :

// pContext->h264Profile[chId] = VENC_CHN_HIGH_PROFILE;

if(chId==0)

   pContext->h264Profile[chId] = VENC_CHN_MAIN_PROFILE;

2. MultiCh_createTriStreamFullFtr():

// case 8: pLinkChPrm->format = (i==0)? IVIDEO_H264HP:IVIDEO_H264HP; break;  //"TRIPLE_H264"

case 8: pLinkChPrm->format = (i==0)? IVIDEO_H264MP:IVIDEO_H264MP; break;  //"TRIPLE_H264"

======code========

附件是修改profile的错误信息

8127是否支持Main profile和Baseline profile编码,如果支持,如何修改?

以上用的都是在fullfeature usecase.

Chris Meng:

回复 Pei Jacky:

能否在最新的v3.2代码上尝试是否有还有类似的问题?

DM8127的h264enc支持baseline/MP/HP。附件的错误提示已经提示你配置的问题在哪里,一个是SCALINGMATRIXPRESET,一个是TRANSFORMBLOCKSIZE。

请查看h264enc user guide,你可以看到这两个错误的具体解释,以及这两个参数目前的配置只有HP才支持,需要修改

scalingMatrixPreset=0

IH264ENC_TransformBlockSize=IH264_TRANSFORM_4x4

Pei Jacky:

回复 Chris Meng:

Hi, Chris Meng

对于Error:

IH264ENC_PROFILE_INCOMPLAINT_TRANSFORMBLOCKSIZE = 3

IH264ENC_PROFILE_INCOMPLAINT_SCALINGMATRIXPRESET = 5

我已经修改掉了,修改代码

encLink_h264.c

line:653:  staticParams->transformBlockSize = IH264_TRANSFORM_4x4;//IH264_TRANSFORM_8x8 ;

line:661:  staticParams->rateControlParams.scalingMatrixPreset =

                       IH264_SCALINGMATRIX_NONE;//IH264_SCALINGMATRIX_NORMAL;

line:738:  staticParams->transformBlockSize  = IH264_TRANSFORM_4x4;//IH264_TRANSFORM_8x8 ;

line:752:  staticParams->transformBlockSize = IH264_TRANSFORM_4x4;//IH264_TRANSFORM_8x8 ;

line:1080:  dynamicParams->rateControlParams.scalingMatrixPreset =

                       IH264_SCALINGMATRIX_NONE;//IH264_SCALINGMATRIX_NORMAL;

下面的错误我找不到如何修改!!:

[m3video] ALGCONTROL FAILED:CMD:6

[m3video] ERROR: XDM_UNSUPPORTEDPARAM = 14,

[m3video] ERROR: XDM_FATALERROR = 15

[m3video] ERROR: IH264ENC_UNSUPPORTED_INTRACODINGPARAMS = 23,

[m3video] 11216:!ERROR!:ENCLINK::links_m3video/iva_enc/encLink_h264.c:[195]::INTERNAL ERROR:-1

[m3video] ALGCONTROL FAILED:CMD:9

[m3video] ERROR: XDM_UNSUPPORTEDPARAM = 14,

[m3video] ERROR: XDM_FATALERROR = 15

[m3video] ERROR: IH264ENC_UNSUPPORTED_INTRACODINGPARAMS = 23,

[m3video] 11216:!ERROR!:ENCLINK::links_m3video/iva_enc/encLink_h264.c:[195]::INTERNAL ERROR:-1

[m3video] ALGCONTROL FAILED:CMD:3

[m3video] ERROR: XDM_UNSUPPORTEDPARAM = 14,

[m3video] ERROR: XDM_FATALERROR = 15

[m3video] ERROR: IH264ENC_UNSUPPORTED_INTRACODINGPARAMS = 23,

[m3video]  

[m3video] 11217:ERR::linkID:10000024::channelID:0::errorCode:-5::FileName:links_m3video/iva_enc/encLink_h264.c::linuNum:1336::errorCondition:(algStatus == XDM_EOK)

[m3video] ENCLINK_H264:HEAPID:0        USED:1896

[m3video]  11218: Assertion @ Line: 907 in links_m3video/iva_enc/encLink_common.c: retVal == ENC_LINK_S_SUCCESS : failed !!!

<h264_user_guide>上对于讲IH264ENC_IntraCodingParams中任何参数配置不正确就好出现IH264ENC_UNSUPPORTED_INTRACODINGPARAMS 错误,我没找到具体是哪个参数配置不正确!

对于这个问题,有没有一个具体的文档,配置MP和BP都需要配置哪些地方?

Chris Meng:

回复 Pei Jacky:

Jacky,

在h264enc 的user guide里面有清楚的描述这个问题是在没有配置为HP/MP的时候使用了cabac。

解决方法就是不使用cabac,而是cavlc。

IH264ENC_PROFILE_INCOMPLAINT_ENTROPYCODINGMODE

Bit 6 – Profile in-complaint entropycoding mode setting.

This error is set when cabac is used without IH264_HIGH_PROFILE/MAIN_PROFILE.

This is create time error

Pei Jacky:

回复 Chris Meng:

Hi, Chris

IH264ENC_PROFILE_INCOMPLAINT_ENTROPYCODINGMODE

这个错误从哪看出来的?

串口打印没有这个啊?

Chris Meng:

回复 Pei Jacky:

抱歉,搜错关键字了。请问你熵变化(ENTROPYCODING)设置正确么?

如果配置正确还有上面的错误,能否共享一下你所有的参数配置?

Pei Jacky:

回复 Chris Meng:

我的配置都是默认的,(IPNC V2.8.0 Fullfeature usecase)

只是在Venc和mcfw usecase做了下面修改:

======code========

1. Venc_params_init() :

// pContext->h264Profile[chId] = VENC_CHN_HIGH_PROFILE;

  pContext->h264Profile[chId] = VENC_CHN_MAIN_PROFILE;

2. MultiCh_createTriStreamFullFtr():

// case 8: pLinkChPrm->format = (i==0)? IVIDEO_H264HP:IVIDEO_H264HP; break;  //"TRIPLE_H264"

case 8: pLinkChPrm->format = (i==0)? IVIDEO_H264MP:IVIDEO_H264MP; break;  //"TRIPLE_H264"

======code========

TI的开发不是基于MCFW和link的吗,对于这个BP、MP的配置,TI是否做过相关测试?如果做过,能否告知修改方式?

我觉得更快的方法就是您那边也做一下相关的修改。

赞(0)
未经允许不得转载:TI中文支持网 » 8127 RDK_V2.8 如何实现720P
分享到: 更多 (0)