1、现有代码要想支持H264变码率,需要修改的地方:
\platform\openmax\hantro_omx\libvideo\libenc\codec_hw\H264EncLib\ViEncH264.cpp ViH264EncParam.rcupdateflag置1表示能够改变码率
\platform\openmax\hantro_omx\libvideo\libenc\codec_hw\H264EncLib\ViEncH264.h添加rcupdateflag这个变量
以前的应用代码
videocodec = gst_element_factory_make("omxh264enc", "video-codec");
g_object_set(videocodec, "control-rate", ratectrl, NULL); //是否支持改变比特率
g_object_set(videocodec, "target-bitrate", targetrate, NULL);//如果支持,目标比特率
因为代码里的rcupdateflag这个变量没有添加,所以,即使设了也没有生效。现在经过以上修改,就可让设目标比特率的代码生效了。具体的调用层级:
从gstreamer到omx的调用细节:
2、支持GOP的改变
目前已经支持了编码率,具体做开发的平台上:car_digital_video_rec_140904
修改的文件
应用层:rec_gst_thread.cpp 增加调用g_object_set(elegroup.videocodec, "target-goplen", 2, NULL);
注意:这个调用必须要在gst_element_set_state(elegroup.video_pipeline, GST_STATE_PLAYING);之后才能生效
底层修改的文件:1、/gstreamer/plugin_gst/
# modified: omx-1.0.0/omx/gstomxvideoenc.c
# modified: omx-1.0.0/omx/gstomxvideoenc.h
# modified: omx-1.0.0/omx/openmax/OMX_Index.h
# modified: omx-1.0.0/omx/openmax/OMX_Video.h
2、/platform/openmax/hantro_omx/
# modified: libvideo/libenc/codec_hw/H264EncLib/ViEncH264.cpp
# modified: libvideo/libenc/codec_hw/Inc/ViEncH264.h
# modified: vmc_omx/vmc_omx_component/h264enc/omx_avcenc.c
# modified: vmc_omx/vmc_omx_include/khronos/OMX_Index.h
# modified: vmc_omx/vmc_omx_include/khronos/OMX_Video.h