随笔分类 - Android多媒体
摘要:mAudioSessionId = AudioSystem::newAudioUniqueId(AUDIO_UNIQUE_ID_USE_SESSION); mHwSync = AudioSystem::getAudioHwSyncForSession((audio_session_t) mAudio
阅读全文
摘要:mkv封装格式相关内容可以参考:MKV 文件格式解析_Martyn哥的博客-CSDN博客_mkv 格式解析 本篇主要是用来记录MatroskaExtractor是如何解析EBML的,如何解析EBML header以及SEGMENT的 构造函数 先看构造函数,android MKV文件的解析需要依赖外
阅读全文
摘要:MyScreenRecord.cpp //#define LOG_NODEBUG 0 #define LOG_TAG "myrecord" #include <signal.h> #include <string.h> #include <assert.h> #include <utils/Erro
阅读全文
摘要:首先来看mp4的封装格式,mp4数据都被放在一个个的箱子当中,也就是box,box的字节序为网络字节序,也就是大端存储,box由header和body组成,header指明box的大小和类型,body根据header的类型存储对应的内容。 box size有三种可能: box开头的4个字节为box
阅读全文
摘要:1、YUV YUV是一种颜色编码方法,Y表示明亮度(Luminance、Luma),U和V表示色度、浓度(Chrominance、Chroma) Y表示亮度分量,也就是灰度图 U(Cb)表示色度分量,是照片蓝色部分去掉亮度 V(Cr)表示色度分量,是照片红色部分去掉亮度 1.1、YUV的采样格式 采
阅读全文
摘要:MyDecoderBase.h #ifndef __MY_DECODERBASE_H__ #define __MY_DECODERBASE_H__ #include <media/stagefright/foundation/AHandler.h> namespace android { struc
阅读全文
摘要:这一节是实践,学习android原生SimplePlayer并自己码一遍,果然学到很多。 MyPlayer.h #include <media/stagefright/foundation/AHandler.h> #include <media/stagefright/foundation/AStr
阅读全文
摘要:之前看到在ATSParser::Pogram::Stream中会创建一个ESQueue,用于存储解析出来的ES data,这个ESQueue到底是用来做什么的呢?这节就来研究研究。 1、构造函数 ESQueue的全名是ElementaryStreamQueue, 构造函数传入两个参数Mode和fla
阅读全文
摘要:这节来了解下MediaCodecList相关代码路径: frameworks/av/media/libstagefright/MediaCodecList.cpp frameworks/av/media/libstagefright/OmxInfoBuilder.cpp frameworks/av/
阅读全文
摘要:本节主要学习内容是看看MPEG2TSExtractor是如何处理TS流的。 相关代码位置: frameworks/av/media/extractors/mpeg2/MPEG2TSExtractor.cpp frameworks/av/media/libstagefright/mpeg2ts/ATS
阅读全文
摘要:这一节的学习分为三块内容,omx hidl service用法、OMX架构、ACodec中的buffer分配。 1、omx hidl service system可以借助vndbinder来访问vendor分区的内容,这里以omx hidl service为例子学习下hidl代码要如何阅读使用。 相
阅读全文
摘要:这一节来学习MediaCodec的工作原理,相关代码路径: http://aospxref.com/android-12.0.0_r3/xref/frameworks/av/media/libstagefright/MediaCodec.cpp 1、创建mediacodec对象 mediacodec
阅读全文
摘要:学以致用,这一节来native binder实战! android 12中的service用到的Bp、Bn文件多由aidl生成,所以实战中也用aidl来生成。 1、文件目录结构 文件目录结构如上,偷懒没有把头文件放到include目录当中去 2、aidl文件 package android.test
阅读全文
摘要:前面一节学习了ServiceManager这个特殊service的工作过程,这一节来看看普通service的工作过程。 就用media.extractor这个service来当例子! 1、服务的注册及启动 media.extractor这个service的注册及启动在 frameworks/av/s
阅读全文
摘要:今天开始了解一下binder,就先从ServiceManager开始学习。 网上的相关博文普遍是Android 11之前的,阅读时对比Android 11或12的代码发现有很多内容找不到了,比如 frameworks/native/cmds/servicemanager 下面的binder.c没有了
阅读全文
摘要:来写个demo试试看到底是ALooper AHandler AMessage是怎么运行的,源文件以及Android.bp如下: // EvenHandler.h #ifndef __MESSAGE_TEST_H__ #define __MESSAGE_TEST_H__ #include <media
阅读全文
摘要:卧榻之侧岂容他人酣睡,到现在ALooper AHandler AMessage的工作原理一直都没搞懂,很慌!看他们的路径都在libstagefright/foundation下,作为一个foundation怎么能不去搞明白,今天必须解决他们! 相关代码路径: AHandler.cpp - OpenG
阅读全文
摘要:NuPlayer的AVSync由Renderer实现,接下来主要来看AVSync的工作原理 相关代码位置: NuPlayerRenderer.cpp - OpenGrok cross reference for /frameworks/av/media/libmediaplayerservice/n
阅读全文
摘要:本节来看一下NuPlayer Source中的GenericSource,GenericSource主要是用来播放本地视频的,接下来着重来看以下5个方法: prepare,start,pause,seek,dequeueAccessUnit 相关代码位置: http://aospxref.com/a
阅读全文