zhiweiqiang33 发表于 2014-9-9 10:07:43

在DM6467上编码 IDR frame


使用dm6467编码h264的时候,需要指定特定帧为idr frame。 但是TI提供的编码库似乎存在问题。
在DynParams->forceFrame = IVIDEO_IDR_FRAME,在VIDENC1_control(, XDM_SETPARAMS );之后能够编码出i frame, 但是并不包含 SPS 和 PPS header。


TI提供了一个work around, 流程如下:

In the encoder thread, When IDR frame is to be inserted
1. Set the following:
dynamicParams.generateHeader = XDM_GENERATE_HEADER;
dynamicParams.forceFrame = IVIDEO_NA_FRAME;
2. Call VIDENC1_control() for XDM_SETPARAMS. This will set the parameter to generate header (SPS and PPS)
3. call VIDENC1_process(). This will be a process call just to create header
4. Set the following:
dynamicParams.generateHeader = XDM_ENCODE_AU;
dynamicParams.forceFrame = IVIDEO_IDR_FRAME;
5. Call VIDENC1_control() for XDM_SETPARAMS. This will set Force IDR Frame parameter
6. call VIDENC1_process(). This will generate an IDR frame
7. Set the following:
dynamicParams.generateHeader = XDM_ENCODE_AU;
dynamicParams.forceFrame = IVIDEO_NA_FRAME;
8. Call VIDENC1_control() for XDM_SETPARAMS. This will set the original parameters for encoding and remove force IDR frame.
这样就可以编出一帧完整的idr frame。

页: [1]
查看完整版本: 在DM6467上编码 IDR frame