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

Android12 MultiMedia框架之NuPlayer Surface

在学习NuPlayer创建Decoder和Renderer之前,得先看下video数据最终生产到什么地方去?答案是Surface,而且Surface是NuPlayer创建Decoder的条件。

APP会创建一层SurfaceView来显示视频层,同时内部会创建一个BLASTBufferQueue,它的生产者会挂载到我们的Decoder,枢纽就是BpGraphicBufferProducer,它的消费者是SurfaceFlinger,会把这个APP的Layer(SurfaceView在SurfaceFlinger中的对应概念)同其他APP的图层一起合成送显上屏。

在JAVA层经过层层传递最终在MediaPlayer中会拿到Surface,然后再传递到JNI层中,这里会剥离出BpGraphicBufferProducer一路传递到NuPlayer中保存起来。

JAVA和JNI层的代码还是比较简单的,这里罗列下代码路径和函数名:

//frameworks/base/media/java/android/media/MediaPlayer.java
public static MediaPlayer create(Context context, Uri uri, SurfaceHolder holder,AudioAttributes audioAttributes, int audioSessionId)//frameworks/base/media/jni/android_media_MediaPlayer.cpp
static void
android_media_MediaPlayer_setVideoSurface(JNIEnv *env, jobject thiz, jobject jsurface)

调用到NuPlayer中的接口为setVideoSurfaceTextureAsync()。

简单画个分层结构图:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Redis⑥ —— 缓存设计
  • 在日常生活中,应该如何保护自己的网络安全
  • HDFS和FDFS
  • docker 数据管理和网络通信
  • C++基础(一)
  • 鹈鹕优化算法(POA)及其Python和MATLAB实现
  • 解决vue3中el-input在form表单按下回车刷新页面
  • ctfshow 信息收集(1-20)
  • 什么样的服务器是合乎直销网站标准
  • 计算机网络入门 --网络模型
  • [短笔记] Ubuntu配置环境变量的最佳实践
  • Golang中读写锁的底层实现
  • Docker容器——初识Docker,安装以及了解操作命令
  • js把文本转成数字的几种方式
  • 前端 css3 媒体查询实现 响应式布局
  • 网络传输文件的问题
  • 2017-08-04 前端日报
  • 4个实用的微服务测试策略
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • mysql 数据库四种事务隔离级别
  • 安装python包到指定虚拟环境
  • 前端面试之CSS3新特性
  • 前端之React实战:创建跨平台的项目架构
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 深入 Nginx 之配置篇
  • 用jquery写贪吃蛇
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 正则表达式小结
  • 白色的风信子
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • #VERDI# 关于如何查看FSM状态机的方法
  • (06)金属布线——为半导体注入生命的连接
  • (11)MSP430F5529 定时器B
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (超详细)语音信号处理之特征提取
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转载)Linux 多线程条件变量同步
  • .Net7 环境安装配置
  • .net反编译工具
  • .NET中分布式服务
  • :“Failed to access IIS metabase”解决方法
  • @Autowired和@Resource装配
  • @javax.ws.rs Webservice注解
  • @RequestBody与@ModelAttribute
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [100天算法】-实现 strStr()(day 52)
  • [20190416]完善shared latch测试脚本2.txt
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [CVPR 2023:3D Gaussian Splatting:实时的神经场渲染]