MPEG4编码,调整分辨率:1080p->720p, 编码正常;720p->D1,编码异常,会报错:
[m3video] +++++++++++++++++++++++++debug++++++++++++++++++++++++
[m3video] 13459947: ENCODE: inputHeight:576, inputWidth:704, pitch[0]:704
[m3video] 13459948: ENCODE: algDynamicParamUpdate OK!!!!
[m3video] 13459948:!ERROR!:ENCLINK::links_m3video/iva_enc/encLink_mpeg4.c:[701]::INTERNAL ERROR:-1
[m3video] ALGPROCESS FAILED
[m3video] 13459948:WARN
[m3video] ENCLINK:ERROR in Enclink_MPEG4EncodeFrame.Status[-1]
[m3video] 13459948:WARN
[m3video] ENC : IVAHDID : 0 ENCLINK:ERROR in EncLink_SubmitBatch.Status[-1]
[m3video] 13459996:!ERROR!:ENCLINK::links_m3video/iva_enc/encLink_mpeg4.c:[701]::INTERNAL ERROR:-
分析:1、h264编码设置为VENC_CHN_BASELINE_PROFILE,图像分辨率改变时也H264会报错,设置VENC_CHN_HIGH_PROFILE时,图像分辨率改变时编码正常。
2、MPEG4仅支持simple profile。
基于上述理由,怀疑上面的报错是因MPEG4库内限制导致。求证!!!!
andy li1:
问题补充:图像分辨率是动态调整的
Chris Meng:
回复 andy li1:
你好,
图像分辨率动态切换不应该有问题的,你能否参考下的链接提供相关的error code?
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/52012.aspx
andy li1:
回复 Chris Meng:
HI,
这个帖子我看过了,没有mpeg4的错误代码相关介绍吧。
还有,我遇到的问题是,支持高分辨率(1080p->720p)之间动态切换,但高分辨率到低分辨率(1080p->D1),或低分辨率(D1->CIF)之间的切换就会异常。
xiang liu4:
回复 andy li1:
我也遇到了这个问题,楼主解决了吗?有思路交流下啊。。。
我感觉不应该是mpeg4编码库的问题,三码流模式下,有D1的MPEG4编码,是正常的
xiang liu4:
回复 andy li1:
谢谢,方法不错,我按这个方法测试了下,mpeg4编码可以动态切换到D1等其他分辨率了。但还是有些问题。切换分辨率后,我用vlc看了编码参数是正确的,图像也是正确的。如果vlc断开重新连接,编码参数就变了,图像也乱了。 楼主遇到了这种情况了吗?
andy li1:
回复 xiang liu4:
没有遇到过,怀疑是你vlc版本的问题。
建议先用h264测试下,如果是同样的问题,基本可以确定是vlc的问题。如果h264正常,你需要研究mpeg4
的参数设置问题了。
suyun cao:
回复 andy li1:
大牛,我现在用TI的DM385做一个编码器,目前输入其他一切图案和分辨率都能正确编码,但是在输入图案为附件Noise时候,在输入分辨率是1080i的情况下,在HIGH profile编码报错,无论编码码率是多大。而当输入图案是Cricle时候,编码码率在大于20M下,分辨率为1080P24时候编码报错,报错信息如下:
[m3video] 935110:!ERROR!:ENCLINK::links_m3video/iva_enc/encLink_h264.c:[464]::INTERNAL ERROR:-1 [m3video] ALGPROCESS FAILED [m3video] Number of Entries in Process List : 1 [m3video] Extended error for entry 0 : 0x10400 [m3video] 935111:WARN [m3video] ENCLINK:ERROR in Enclink_h264EncodeFrameBatch.Status[-1] for IVAHD_0 [m3video] 935111:WARN [m3video] ENC : IVAHDID : 0 ENCLINK:ERROR in EncLink_SubmitBatch.Status[-1]
之后再去切换输入分辨率或者输入图案,不能恢复正常编码,在M3端重新启动编码,一样不行,在上层应用把整个编码的Link删去再重建一个也是不行。
我仔细看了你说的EncLink_codecDynamicResolutionChange函数,貌似不能正确的动态监测到输入分辨率的变化,请指点江山。