当前位置: 首页 > news >正文

libaom 源码分析系列:svc_encoder_rtc.cc 文件

源码函数关系

  • 文件功能:实现 AV1 svc 编码的 RTC 功能 demo
  • 文件位置:libaom/examples/svc_encoder_rtc.cc
  • 文件内函数关系图
    在这里插入图片描述

结构体

  1. AppInput:svc_encoder_rtc.cc 所属 demo 的结构体,作为从命令行接受参数的结构体;
  2. AvxVideoWriter:输出视频写入结构体;
  3. aom_codec_enc_cfg_t:编码器配置结构体;
  4. aom_image_t:图像描述结构体,原始输入视频数据和输入图像的一些信息;
  5. aom_svc_layer_id_t:控制 svc 编码层 ID 结构体;
  6. aom_svc_params_t:控制 svc 编码参数结构体;
  7. aom_svc_ref_frame_config_t:svc 编码参考帧配置结构体;
  8. aom_svc_ref_frame_comp_pred_t:svc 编码参考帧复合预测结构体;
  9. aom_codec_ctx_t:编解码上下文结构体;
  10. RateControlMetrics:svc_encoder_rtc.cc 所属 demo 的结构体,用于统计编码过程中码率控制统计;
  11. aom_codec_err_t:编码配置中返回状态枚举;
  12. aom_codec_iface_t:封装编解码器接口的结构体;
  13. AvxVideoInfo:存储视频流基本信息的结构体;
  14. AV1RateControlRTC:针对 RTC 进行扩展的码率控制结构体;
  15. psnr_stats:psnr 统计相关结构体;
  16. aom_usec_timer:关于时间计算相关结构体;
  17. aom_codec_cx_pkt_t:编码器输出包结构体;
  18. aom_scaling_mode:图像缩放模式结构体;
  19. AV1FrameParamsRTC:针对 RTC 帧参数相关结构体;

parse_command_line函数

  1. 终端输入./svc_encoder_rtc ,即输入参数为 NULL 时,输出如下;可以发现没有输出ext_rc_arg的相关变量;
Usage: ./svc_encoder_rtc <options> input_filename -o output_filename
Options:-f <arg>, --frames=<arg>              Number of frames to encode-o <arg>, --output=<arg>              Output filename-w <arg>, --width=<arg>               Source width-h <arg>, --height=<arg>              Source height-t <arg>, --timebase=<arg>            Timebase (num/den)-b <arg>, --target-bitrate=<arg>      Encoding bitrate, in kilobits per second-sl <arg>, --spatial-layers=<arg>     Number of spatial SVC layers-k <arg>, --kf-dist=<arg>             Number of frames between keyframes-r <arg>, --scale-factors=<arg>       Scale factors (lowest to highest layer)--min-q=<arg>               Minimum quantizer--max-q=<arg>               Maximum quantizer-tl <arg>, --temporal-layers=<arg>    Number of temporal SVC layers-lm <arg>, --layering-mode=<arg>      Temporal layering scheme.-th <arg>, --threads=<arg>            Number of threads to use-aq <arg>, --aqmode=<arg>             AQ mode off/on-d <arg>, --bit-depth=<arg>           Bit depth for codec 8 or 10. 8, 10-sp <arg>, --speed=<arg>              Speed configuration-bl <arg>, --bitrates=<arg>           Bitrates[spatial_layer * num_temporal_layer + temporal_layer]--drop-frame=<arg>          Temporal resampling threshold (buf %)--error-resilient=<arg>     Error resilient flag--output-obu=<arg>          Write OBUs when set to 1. Otherwise write IVF files.--test-decode=<arg>         Attempt to test decoding the output when set to 1. Default is 1.--tune-content=<arg>        Tune content typedefault, screen, film--psnr=<arg>                Show PSNR in status line.
  1. 函数源码逻辑
    在这里插入图片描述
  2. svc_args的定义:可以发现没有指向ext_rc_arg变量,控制 use_external_rc 的扩展码控功能。
static const arg_def_t *svc_args[] = {&frames_arg,          &outputfile,     &width_arg
http://www.lryc.cn/news/460199.html

相关文章:

  • MySQL备份和还原,用mysqldump、mysql和source命令来完成
  • MySQL Server、HeidiSQL(MySQL 数据库工具)
  • 矩阵相关算法
  • 微信小程序-封装通用模块
  • Modnet 人像抠图(论文复现)
  • 利用session机制造测试账号,无需前端也可以测试后端接口
  • JAVA_18
  • Linux升级openssl版本
  • 多态对象的存储方案小结
  • Linux 之 nano 编辑器
  • zipkin启动脚本并指定mysql数据存储
  • 超越GPT-4的视觉与文本理解能力,开源多模态模型领跑者 - Molmo
  • 输入输出--I/O流【C++提升】()
  • Maven 中央仓库地址推荐
  • Fastgpt本地化部署 - 以MAC为例
  • SpringBoot框架下购物推荐网站的设计模式与实现
  • Apache Flink 和 Apache Kafka
  • Excel中Ctrl+e的用法
  • 07-Cesium动态处理线条闪烁材质的属性
  • postgresql16分区表解析
  • 文字识别解决方案-OCR识别应用场景解析
  • Qt 每日面试题 -9
  • K8s环境下使用sidecar模式对EMQX的exhook.proto 进行流量代理
  • Dirble:一款高性能目录扫描与爬取工具
  • C#语言基础
  • 网络分析仪——提升网络性能的关键工具
  • 简单认识Maven 1
  • 鼠标右键删除使用Visual Studio 打开(v)以及恢复【超详细】
  • 如何缩短微商城系统推广周期
  • 电脑如何清理重复文件?方法很简单!