相关的类 VideoRender,VideoRenderCallback,IncomingVideoStream,VideoRenderDirect3D9,D3D9Channel

VideoRender 本类为rtc提供的用来在某个特定窗口渲染yuv数据的类,本类可以在ios,android,linux,windows上渲染图像,同时提供了在窗口上绘制文本,设置各种背景图的功能。

Windows 下 VideoRender 会生成一个 VideoRenderDirect3D9 的实例,这个实例里面包含了多个 D3D9Channel(std::map<int, D3D9Channel*> _d3dChannels),这个通道就继承自VideoRenderCallback, 这些channel通过流id来区分, AddIncomingRenderStream 会调用CreateChannel创建新的channel

此处涉及到的设计模式和技术点,我会单独找一篇文章来说明设计模式在webrtc中的应用

  • 创建
    通过传入一个窗口的句柄来确认在哪个窗口绘制
/**   Create a video render module object**   id              - unique identifier of this video render module object*   window          - pointer to the window to render to*   fullscreen      - true if this is a fullscreen renderer*   videoRenderType - type of renderer to create*/static VideoRender* CreateVideoRender(const int32_t id,void* window,const bool fullscreen,const VideoRenderType videoRenderType =kRenderDefault);
  • 输入
    AddIncomingRenderStream 通过该方法来获取输入渲染窗口的接口,然后调用VideoRenderCallback::RenderFrame方法输入yuv数据
video_render_callback_ = renderModule->AddIncomingRenderStream(stream_id_, 0,  0.0f, 0.0f, 1.0f, 1.0f);
video_render_callback_->RenderFrame(stream_id_, videoFrame);

VideoRenderCallback为绘制图像的接口,VideoRender中包含一个这样的接口

class VideoRenderCallback {public:virtual int32_t RenderFrame(const uint32_t streamId,const VideoFrame& videoFrame) = 0;
protected:virtual ~VideoRenderCallback() {}
};

IncomingVideoStream 一个输入图像队列类,只有在VideoReceiveStream中使用最大的功能是通过时间戳排序,它继承自VideoRenderCallback,每一个VideoRender中都包含一个IncomingVideoStream

欢迎访问本人的小站 xsnip.cn

[WebRTC导读] VideoRender 视频渲染类相关推荐

  1. 鸿蒙开源全场景应用开发——视频渲染

    背景 上期内容提到过,已开发的家庭合影美颜相机应用是同时基于鸿蒙和安卓设备的,我们将对其4个功能模块即视频编解码.视频渲染.通讯协议和美颜滤镜进行拆分讲解.上一期内容中,我们对视频编解码模块的实现原理 ...

  2. webrtc视频引擎之video_render(视频渲染)介绍

    此部分为webrtc视频渲染显示,代码结构如下: 其实此部分代码与<webrtc视频引擎之vedio_capture_module介绍>的代码结构一样 1,图中能够直接看到的.h和.cc文 ...

  3. webrtc 渲染_WebRTC 开发(六)摄像头采集与视频渲染分析

    在上一篇文章 WebRTC 开发(五)编译与运行 Mac 工程 中,我们编译了 WebRTC 的工程 AppRTCMobile,也看到了 App 启动后的初始界面.本文基于 WebRTC M76 ,将 ...

  4. c++封装webrtc sdk(二):在sdk端实现webrtc视频渲染

      如果你用过其它厂商的rtc sdk,比如声网,在渲染视频时,只需要传入窗口句柄,即可进行渲染,接口如下: 初始化本地视图 virtual int setupLocalVideo(const Vid ...

  5. WebRTC 系列之视频辅流

    导读:近几年,实时音视频领域越来越热,业界很多音视频引擎都是基于 WebRTC 进行实现的.本文主要介绍 WebRTC 在视频辅流上的需求背景以及相关技术实现. 文|陶金亮 网易云信资深客户端开发工程 ...

  6. Flutter 2 渲染原理和如何实现视频渲染

    声网Agora跨平台开发工程师卢旭辉带来了<Flutter2 渲染原理和如何实现视频渲染>的主题分享,本文是对演讲内容的整理. 本次分享主要包括 3 个部分: Flutter2 概览. F ...

  7. 百家号基于AE的视频渲染技术探索

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nm0WWHSi-1657593629762)(https://p3-juejin.byteimg.com/tos-cn- ...

  8. android log 码率,webrtc之Android视频质量提升:保帧率降码率

    前言: 我们的产品是在一款跑着Android系统的特定芯片上使用webrtc开发的一个视频通话业务,当前的情况是在网络正常的情况下帧率也比较低,弱网环境下适应能力较差.基于此,我了解了webrtc A ...

  9. iOS音视频开发十三:视频渲染,用 Metal 渲染

    本系列文章通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发. 这里是第十三篇:iOS 视频渲染 De ...

最新文章

  1. cpu安装_CPU是AMD的,老台式电脑可以加装固态硬盘安装Win10系统吗?
  2. 论坛报名 | 李开复张亚勤陆奇共论AI时代的创业
  3. php 昨天开始时间_php日期处理显示:昨天、今天、本周、上一月等时间结点数据...
  4. html div实时监听,jquery实时监听div高度变化
  5. 机器学习(八)Apriori算法学习
  6. MFC创建MDI程序一个Doc对应多个View
  7. 黑鲨重装计算机安装无法继续,黑鲨装机大师常见问题详解
  8. 一篇文章教会你用Python爬取淘宝评论数据(写在记事本)
  9. 回旋共振 有效质量的测量
  10. 最长公共子序列(LCS) 过程图解
  11. K8s 中 iptables 和ipvs 的理解
  12. Excise_Thread2
  13. 微信点击按钮关闭当前页面回到微信对话窗口
  14. 今日心得:七条人生箴言
  15. Vue学习笔记01-基础部分
  16. 2021年3月PHP免费自学最全教程来了
  17. 数字IC设计---反相器相关知识
  18. 延时加载技术-----仿照手机淘宝网站图片延时加载
  19. 统计学 计算机论文发表,数学科学学院博士生史册在统计学顶级期刊 《Annals of Statistics》上发表论文...
  20. 启动Zookeeper报错:Error contacting service. It is probably not running.

热门文章

  1. Android中GPUImage的简单使用
  2. 如何在简中版 MathType 安装过程中,就能输入产品密匙?
  3. Prometheus+SpringBoot应用监控全过程详解
  4. 2007年高考北京满分作文:沉默的父爱
  5. 如何打造自己的PoC框架-Pocsuite3-框架篇
  6. JavaScript焦点处理(获取焦点focus()、失去焦点blur())
  7. Python第三方库巧用,制作图片验证码只需三行代码
  8. 三维建模初学者学习方法及资料
  9. 笔记本系统触摸板只能移动鼠标不能点击使用的解决方案
  10. js增加透明css样式,如何配置透明发光的骚气 vscode