media

青山渺渺5 个月前
android·framework·音视频·media
Android Media Framework - 开篇Android Media是一块非常庞大的内容,上到APP的书写,中到播放器的实现、封装格式的了解,下到编解码组件的封装、VPU API的了解,每块内容的学习都需要我们下很大的功夫。此外,我们还要对相关的模块进行了解,比如AudioFlinger、SurfaceFlinger等,他们与Media相关交织共同构建了Android多媒体平台。
青山渺渺10 个月前
android·c++·framework·media
【无标题】MediaCodec 是 Android 平台上音视频编解码的标准接口,无论是使用软解还是硬解都要通过调用 MediaCodec来完成,是学习 Android 音视频不可跳过的重要部分。MediaCodec 部分的代码有几千行,光是头文件就有几百行,对于我这样的新手来说,简直就劝退了,又或者是硬着头皮往下看,一行一行阅读,看到里面的各种状态各种变量,很容易就晕了。我们这一篇笔记旨在从设计思路的角度了解 MediaCodec,不仅仅是粘贴代码流程,力求更好地帮助理解 MediaCodec 的原理。 ps:由
青山渺渺10 个月前
android·c++·framework·media·多媒体
Android 13 - Media框架(29)- MediaCodec(四)上一节我们了解了如何通过 onInputBufferAvailable 和 getInputBuffer 获取到 input buffer index,接下来我们一起学习上层如何拿到buffer并且向下写数据的。
青山渺渺1 年前
android·c++·framework·media·多媒体
Android 13 - Media框架(23)- ACodecBufferChannel这一节我们将了解 ACodecBufferChannel上一节我们了解到input buffer 和 output buffer 是如何分配的了,allocateBuffersOnPort 方法的最后会将ACodec::BufferInfo 中的 mData 成员组织成为数组,最后提交给 ACodecBufferChannel 管理。这一节我们将尝试了解ACodecBufferChannel 的作用,以及 ACodec::BufferInfo 中部分成员的作用。
青山渺渺1 年前
android·c++·framework·media·多媒体
Android 13 - Media框架(21)- ACodec(三)这一节我们一起来了解 ACodec 是如何通过 configureCodec 方法配置 OMX 组件的,因为 configureCodec 代码比较长,所以我们会把代码进行拆分来了解。 ps:这部分的代码我们先跳过 encoder 的流程。
青山渺渺1 年前
android·c++·framework·media·多媒体
Android 13 - Media框架(20)- ACodec(二)这一节开始我们就来学习 ACodec 的实现ACodec 是在 MediaCodec 中创建的,这里先贴出创建部分的代码:
青山渺渺1 年前
android·framework·音视频·media·多媒体
Android 13 - Media框架(22)- MediaCodec(三)这一节开始我们将重新回到 MediaCodec 这一层来学习 buffer 的流转
青山渺渺1 年前
android·framework·音视频·media·多媒体
Android 13 - Media框架(18)- CodecBase从这一节开始我们会回到上层来看ACodec的实现,在这之前我们会先了解ACodec的基类CodecBase。CodecBase.h 中除了声明有自身接口外,还定义有内部类 CodecCallback、BufferCallback,以及另一个基类 BufferChannelBase,接下来我们会一一了解它们的作用。
青山渺渺1 年前
android·framework·media·多媒体
Android 13 - Media框架(13)- OpenMax(一)这一节我们将了解Android OpenMax框架,该框架了解完成之后,我们会再回过头去了解 ACodec,将 MediaCodec - ACodec - OpenMax 连接起来,了解组件的创建控制以及 buffer 的流转。 本篇属于个人学习笔记,如有错误欢迎指出。
青山渺渺1 年前
android·c++·framework·media·多媒体
Android 13 - Media框架(10)- NuPlayer::Renderer这一节我们来了解 NuPlayer Renderer 是如何工作,avsync 机制是如何运行的。调用 NuPlayer start 方法后会创建 Renderer,传入参数为 callback message、AudioSink、MediaClock 以及 flags。可以看到 NuPlayer 中也用一个 generation 来管理 Renderer 的状态,如不了解 generation 是如何使用的,可以看前面一篇笔记。
青山渺渺1 年前
android·framework·media·多媒体·android源码
Android 13 - Media框架(9)- NuPlayer::Decoder这一节我们将了解 NuPlayer::Decoder,学习如何将 MediaCodec wrap 成一个强大的 Decoder。这一节会提前讲到 MediaCodec 相关的内容,如果看不大懂可以先跳过此篇。原先觉得 Decoder 部分简单,越读越发现自己的无知,Android 源码真是一个巨大的宝库! ps:本文中大写的 Decoder 指代的是 NuPlayer::Decoder,小写的 decoder指代 mediacodec 以及底层的真正的解码器。