H264支持码率变化和GOP调整的代码整理

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这个变量没有添加,所以,即使设了也没有生效。现在经过以上修改,就可让设目标比特率的代码生效了。具体的调用层级:


H264支持码率变化和GOP调整的代码整理_第1张图片


从gstreamer到omx的调用细节:

H264支持码率变化和GOP调整的代码整理_第2张图片

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



你可能感兴趣的:(wifi+vcam)