H264支持码率变化和GOP调整的代码整理
2014-09-04 15:38
302 查看
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这个变量没有添加,所以,即使设了也没有生效。现在经过以上修改,就可让设目标比特率的代码生效了。具体的调用层级:
![](https://img-blog.csdn.net/20140904162325734?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHVsZWlfMTA2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
从gstreamer到omx的调用细节:
![](https://img-blog.csdn.net/20140909153327562?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHVsZWlfMTA2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
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
\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
相关文章推荐
- kafka集成后台代码整理(支持kafka集群)
- 从Discuz扣下来的发送邮件代码,整理成类(支持群发)
- ckplayer 项目实际应用代码整理,支持标清,高清,超清切换!
- 【整理】【代码的坏味道】放散式变化(Divergent Change)
- 整理收藏: ASP 三十二条精华代码
- 检查CPU是否支持MMX指令的代码
- XY52代码整理和分析
- 整理了一些asp初学者常用的代码 (6)
- 整理了一些asp初学者常用的代码 (2)
- 【转载】 [SAS与常用数据库连接代码整理]
- 一段VB.NET代码,生成邮件,发送邮件,支持SMTP验证用户名密码.
- [代码发布]中文文字转换组件 1.0,支持VB/ASP编程
- [组件代码共享]可逆加密,支持中文,支持密钥,支持ASP,加密后的密文每次都不同,且可随意改变算法
- 初步整理了一下ASP.NET Portal Starter Kit代码,供大家参考
- 发现VS2005 b2有支持C++代码重构的功能
- YTHT代码-短id支持
- 使用DES对称加密代码,支持中文
- 整理了一些asp初学者常用的代码 (3)
- 利用using简化受限的proxy代码和调整访问权
- 整理出来的得到汉字拼音的代码.