TI E2E Community
Multimedia Software Codecs
Multimedia Software Codecs forum
DM365 H.264 encoder 2.10.00.06 codec-specific error flags
We're testing an in house encoder application that uses TI's H.264 Platinum encoder (v. 2.10.00.06) on a DM365 eval board. The example application that comes bundled with the encoder works, so I know the right pieces are in place in Linux.
When we try to run our encoder application, though, VIDENC1_control with a command of XDM_SETPARAMS fails. The extendedError field in the returned VIDENC1_Status is 0x00000004, which according to the documentation for XDM_ErrorBit, is codec specific. Wonderful, except the documentation (dm365_h264enc_02_10_00_06_production\packages\ti\sdo\codecs\h264enc\docs\h264_encoder_dm365_userguide.pdf) that comes with the encoder doesn't document any codec specific error bits.
Setting CE_DEBUG to any level over 1 results in a program crash at the VIDENC1_control() call, so is of no use.
Could somebody please explain to me what that bit signifies, or better yet point me to the documentation that has the error fields listed?
I'm passing in NULL for the dynamic parameters to this call, by the way, which should tell the codec to use default values, correct? It didn't like what we tried to pass in before (extendedError=0x0000a00e ... has three undocumented bits set!). Strangely, CE_DEBUG over a level of 1 in this case does not cause a program crash, but doesn't turn up anything odd... VIDENC_control() just returns with 0xffffffff for no apparent reason.
Thanks in advance for any help,
We also provide debug library along with the package. Can you please rename the encoder debug library with the normal library and rebuild yur app. Having done that, pls let us know the log.
Also, the encoder version which you are using is old, you may like to get to a new version. http://software-dl.ti.com/dsps/dsps_public_sw/codecs/DM36x/index_FDS.html
Frank TalbotI'm passing in NULL for the dynamic parameters to this call, by the way, which should tell the codec to use default values, correct? It didn't like what we tried to pass in before (extendedError=0x0000a00e ... has three undocumented bits set!). Strangely, CE_DEBUG over a level of 1 in this case does not cause a program crash, but doesn't turn up anything odd... VIDENC_control() just returns with 0xffffffff for no apparent reason.
dynamicParams is a required argument to VIDENC1_control(), you can't pass NULL.
Thanks for the reply, Chris, that at least clears that problem up. Somebody might want to add that as a precondition to the documentation, as at least this version doesn't indicate that: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ce/2_26_01_09/exports/codec_engine_2_26_01_09/docs/html/group__ti__sdo__ce__video1___v_i_d_e_n_c1.html#gaf24ed59a2cf8589af04868d2c3a3ea09
That still leaves me with the problem of deciphering what bits 0-2 signify, though, since I still get an extendedError of 0x0000a00e
Thanks, I will try the new version soon, after I get this one working.
I have renamed the debug library so that it takes the place of the release library. Here is the pertinent output:
CODEC_DEBUG_ENABLE: HDVICP resoruce allotedCODEC_DEBUG_ENABLE: Inside Encoder Handle Structure Activate Call -> H264VENC_TI_activateCODEC_DEBUG_ENABLE: Inside IRES Call to Activate All Resources -> H264VENC_TI_activateAllResourcesCODEC_DEBUG_ENABLE: Control Call With SETPARAM CommandCODEC_DEBUG_ENABLE: Error Check Target FramerateCODEC_DEBUG_ENABLE: Inside IRES Call to Deactivate All Resources -> H264VENC_TI_deactivateAllResourcesCODEC_DEBUG_ENABLE: Inside Encoder Handle Structure Deactivate Call -> H264VENC_TI_deactivateceapp_init-> ERROR: can't control XDM_SETPARAMS for h264enc status = -1 ext=0x0000a00e
So, it looks like my target framerate is bad?
Yes target frame rate going wrong. What value you are setting for targetFrameRate and MaxFrameRate?.
below is the text from User guide
This fatal error is returned invidencStatus.extendedError during XDM_SETPARAMS control call if targetFrameRate in dynamic params exceeds maxFrameRate or is less than 0 or not a multiple of 500. Control call returns IVIDENC1_EFAIL
Sorry for the delay in my response.
I was setting the targetFrameRate and maxFrameRate to the NTSC color standard of 29.97. Setting it to 30 fixed the problem.
I see that line now in the documentation; it would be nice if it had also been enumerated with the rest of the extendedError definitions... they also don't give you the actual numerical values that correspond to each symbol. I had to look those up in ti/sdo/codecs/h264enc/ih264venc.h Not a huge deal, but it would be nice if the codec documentation had spelled that out along with the standard extendedError values.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.