自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

青山渺渺

记录Android Framework、Android Media开发。keep life,keep learn.

  • 博客(155)
  • 资源 (5)
  • 收藏
  • 关注

原创 Android CCodec Codec2 (十四)CCodecBufferChannel - Ⅱ

上一篇文章我们一起了解了Codec2 Data Process过程中的Delay,buffer count计算方法和C2AllocatorStore,这一篇文章我们接着分析CCodecBufferChannel的start方法。

2024-09-22 20:02:30 1339

原创 Android CCodec Codec2 (十三)CCodecBufferChannel - Ⅰ

CCodecBufferChannel是整个Codec2框架最复杂的部分,涉及到input buffer分配,input/output buffer的处理,内部封装了一些全新的机制,比如reorder、pipeline control等。本篇内容主要对CCodecBufferChannel的start流程进行了解,涉及到的C2BlockPool、C2Allocator、InputBuffers、OutputBuffers本篇不做展开。

2024-09-13 23:11:04 1163

原创 Android CCodec Codec2 (十二)CCodecConfig

Codec2组件的运行参数都存储在Interface中,这些参数由厂商预先设定,并力求达到最优(best effort),因此非必要情况下不建议进行修改。在CCodec中,我们很少看到对组件参数的修改,这与ACodec对组件配置的过程形成了明显的对比。CCodecConfig在Codec2框架中主要起着参数存储的作用,参数来自于两部分:从组件实例读取的厂商预定义的参数和上层应用配置下来的参数。CCodecConfig还有另外一个重要功能:向上层提供参数反射,实现非标准参数的设定,这部分我们不做了解。

2024-09-11 23:34:54 559

原创 Android CCodec Codec2 (十一)CCodec

CCodec继承于CodecBase,向下封装了Codec2Client,向上提供接口给MediaCodec调用。CCodec包含CCodecBufferChannel和CCodecConfig两大子模块,相较ACodec而言,CCodec的职责划分与消息处理逻辑做了很大改动。本节将简单剖析CCodec中的部分设计思路,为后续的数据处理流程分析做准备。

2024-09-08 22:09:35 757

原创 Android CCodec Codec2 (十)Codec2Client

Codec2Client隐藏了Codec2 HAL的调用细节,并在HAL接口的基础上重新做了抽象和封装然后提供给sfPlugin使用,在这一篇文章中我们将对Codec2Client的设计结构进行简单分析。

2024-09-08 22:08:07 1054

原创 Ubuntu 20.04安装bootchart

到google上搜索说是Ubuntu 18.04之后bootchart被换成了systemd-bootchart,这个可以成功安装,但是无法导出PNG。最后就可以愉快地导出PNG了。

2024-09-06 18:01:58 303

原创 Android CCodec Codec2 (九)组件实现分析

在上一篇文章中,我们详细梳理了HIDL层组件的创建过程。在这一篇文章中,我们将以C2SoftMpeg2Dec为例简单了解SW C2Component的实现架构。

2024-09-05 23:08:25 1037

原创 Android Codec2 CCodec(八)SW组件创建过程分析

在这一篇文章中,我们将先了解SW ComponentStore HIDL层的Codec2组件创建过程,然后了解组件实现架构。

2024-09-02 23:33:14 914

原创 Android Codec2 CCodec (七)IConfigurable

上一篇文章我们了解了接口参数的定义,这一节我们简单梳理一下参数获取、配置以及参数反射过程。

2024-09-01 22:08:25 1139

原创 Android CCodec Codec2 (六)C2InterfaceHelper

通过前面几篇文章的学习,我们知道了Codec2参数结构,以及如何定义一个Codec2参数。接下来的几篇文章我们将简单了解上层是如何请求组件支持的参数、如何配置参数,以及参数是如何反射给上层的。本篇文章我们将了解接口参数实例化。

2024-09-01 22:05:29 734

原创 Android CCodec Codec2 (五)C2Param - Ⅲ

这一节我们来看看简单参数的定义方式。

2024-08-31 22:15:16 535

原创 Android CCodec Codec2 (四)C2Param - Ⅱ

DEFINE_AND_DESCRIBE_C2STRUCT和C2FIELD是不能分开的,使用时必须要按顺序依次调用这两个宏定义。宏定义比较复杂,我们以C2StoreIonUsageStruct为例直接看展开后的样子。好家伙,难道这就是宏魔法吗?!

2024-08-25 22:04:36 721

原创 Android CCodec Codec2 (三)C2Param - Ⅰ

Codec2框架在C2Config.h中预先定义了很多参数,接下来我们用几个例子来看看参数是如何定义的,以便我们能够根据需求自定义新的参数。

2024-08-22 23:18:16 860

原创 Android Codec2 CCodec(二)服务启动

本篇文章我们会先简单了解Android Framework提供的Codec2软件编解码服务(SW Codec Service)的启动过程,然后分析C2Store的设计结构。

2024-08-21 23:19:51 1253

原创 Android Media Framework(十八)ACodec - Ⅵ

ACodec之所以复杂,主要是因为状态太多。在上一篇文章中,我们学习了在ExecutingState下对buffer的处理。ExecutingState可能会切换到OutputPortSettingsChangedState、FlushingState,或者当组件被释放时,进入UninitializedState。接下来,我们将探讨这些情况下的buffer处理流程。

2024-08-18 10:44:48 1268

原创 Android Media Framework(十七)ACodec - Ⅴ

本篇文章我们一起来分析Executing状态下的数据处理流程。首先对上一篇文章做勘误:实际在调用allocateOutputBuffersFromNativeWindow分配buffer时我们会看到,一开始确实是分配了nBufferCountActual个buffer,但是后面又调用cancelBufferToNativeWindow销毁掉了备用的。可能有人要问,前面调用了useBuffer把备用的buffer也共享给了组件,会不会有问题呢?

2024-08-11 11:24:32 1049

原创 Android Media Framework(十六)ACodec - Ⅳ

上一篇文章讲了ACodec的buffer分配过程,有同学读完后提出了一些问题,所以本篇内容是对上一篇文章的补充。本篇内容将会了解Graphic Output Buffer Count的计算方式,复习useBuffer的调用,学习ACodecBufferChannel。

2024-08-11 11:21:27 318

原创 Android Media Framework(十五)ACodec - Ⅲ

这一篇我们一起来了解ACodec的Buffer分配流程。

2024-08-09 22:45:33 1174

原创 Android Media Framework(十四)ACodec - Ⅱ

这一节我们一起来分析ACodec的创建、组件分配和组件配置过程,内容较为简单,轻松阅读吧。

2024-08-09 22:39:42 1023

原创 Android Media Framework(十三)ACodec - Ⅰ

从这一篇文章开始,我们就进入ACodec的学习了。ACodec作为IL Client的一部分,封装了OMX组件与OMXNodeInstance的调用细节,想要轻松学习ACodec需要熟悉OMX组件与OMXNodeInstance的工作原理。接下来的几篇文章,我们会在应用层面上(ACodec)对组件的配置、状态转换过程、Buffer分配过程以及销毁过程做深入剖析。在这一篇文章中,我们将深入学习ACodec的消息处理机制,虽然本章的篇幅比较短小,但是理解这一部分是后续学习的基础。

2024-08-08 23:52:22 1128

原创 Android Media Framework(十二)OMXNodeInstance - Ⅴ

在本篇中,我们将对OMXNodeInstance中的callback线程与OMXNodeInstance的创建与销毁进行讨论。

2024-08-08 23:49:37 552

原创 Android Codec2 CCodec(一)架构简介

在正式学习Codec2框架之前,我们应该先对它的设计理念和设计思路有简单的了解,相比OpenMAX框架,Codec2修改了哪些地方,有哪些由于原先框架的部分,这样学习起来才更有针对性。Codec2的处理模型使用了Frame-based Processing(基于帧的处理),该模型有几个特点,输入帧与输出帧之间有强相关,N帧输入对应着N帧输出且输入与输出之间的延迟为0。Codec2的参数都是被类型化了,是基于C风格的结构体的,大多说的参数只有一个字段,并且可以暴露给app。

2024-07-30 21:59:00 1496

原创 Android APP Layout

最近有测试发现,之前在tv端工作正常的app放到车机上就无法打开了,由于开发app的同仁最近离职了,所以工作落我身上了。我平时很少做应用开发,相关的知识十分匮乏,为了更深刻地记住看到的知识,遂在此记录。看起来是找不到资源文件,导致app无法打开。看起来各个分辨率的layout都有了,询问测试,屏幕分辨率是1920x720,为什么就匹配不到呢?layout中的sw、dp、mdpi、hdpi都是什么意思呢?

2024-07-26 17:34:21 723

原创 Android Media Framework(十一)OMXNodeInstance - Ⅳ

在这篇文章中,我们将一起学习编解码过程中的两个数据驱动函数:emptyBuffer和fillBuffer,Android Media Framework(十)OMXNodeInstance - Ⅲ 是本文的基础,所以要仔细阅读上一篇文章哦。

2024-07-14 20:45:27 1233

原创 Android Media Framework(十)OMXNodeInstance - Ⅲ

这一节,我们将重点剖析OMXNodeInstance的useBuffer和allocateSecureBuffer方法。

2024-06-28 23:47:10 1103

原创 Android Media Framework(九)OMXNodeInstance - Ⅱ

在上一篇文章中,我们探讨了PortMode与BufferType之间的对应关系以及Metadata的概念,这一节对setPortMode来做一些分析。

2024-06-28 23:44:51 823

原创 Android Media Framework(八)OMXNodeInstance - Ⅰ

OpenMAX框架的学习有两大难点,一是组件的状态切换与buffer的流转过程,这部分内容我们已经在IL Spec中学习过了;二是OMX组件使用的buffer类型与buffer分配过程,这一节我们来重点剖析OMX组件使用的buffer类型。

2024-06-24 22:17:51 878

原创 Android Media Framework(七)MediaCodecService

在Android的Treble架构中,为了确保系统的稳定性和模块化,厂商的实现通常被放置在Vendor分区。因此,之前提到的由厂商实现的库libstagefrighthw.so和组件实现libvdec_xxx.so需要被编译到Vendor分区。

2024-06-24 22:16:25 854

原创 Android Media Framework(六)插件式编程与OMXStore

OpenMAX IL Spec阅读到上一节就结束了,这一节开始正式进入到Framework阅读阶段,我们将了解OpenMAX框架是如何与Android Framework连接的。

2024-06-16 11:21:35 702

原创 Android Media Framework(五)Tunnel Mode

IL Spec详细描述了Tunnel Component的实现方式,但内容较为晦涩难懂,网上相关的资料也比较少,使得学习Tunnel Mode变得相当困难。此外,由于Android对Tunnel Mode进行了一些修改,因此Tunnel组件的具体实现会与Spec存在差异,不同厂商的实现方式可能各不相同,我们要做的是参照Spec了解Tunnel Mode的工作过程。IL Spec定义的是通用Tunnel Mode,是任意两个组件隧道连接的标准。

2024-06-11 23:38:39 1670

原创 Android Media框架全面解析 - 开篇

Android 13 Media Framework深度解析开篇

2024-06-08 09:53:57 1100 5

原创 Android Media Framework(四)Non-Tunneled组件的状态转换与buffer分配过程分析

本篇将继续深入OpenMAX IL Spec,详细解析Non-tunneled(非隧道)组件的初始化、数据传递以及组件销毁过程。通过阅读本篇内容,我们应能对Non-tunneled组件的buffer分配与状态转换过程有一个清晰的了解。

2024-06-08 09:52:31 862

原创 Android Media Framework(三)OpenMAX API阅读与分析

这篇文章我们将聚焦Control API的功能与用法,为实现OMX Core、Component打下坚实的基础。

2024-06-07 23:20:12 1020

原创 Android Media Framework(二)OpenMAX 类型阅读与分析

OMX IL Spec将API划分为Control API、Data API、Extension API,所谓Control API指的是IL Client用于控制组件的接口,包含调用OMX Core和OMX Component要用的接口与相关结构体,这一篇我们将重点阅读与Control API相关的宏、结构体与枚举。

2024-06-06 23:34:18 1561

原创 Android Media Framework(一)OpenMAX 框架简介

OpenMAX Integration Layer(OMX IL,集成层)是由Khronos Group开发的一套低层级标准接口,旨在为编解码器提供一定程度的抽象,使得嵌入式或移动设备能够统一调用音频、视频和图像编解码器,从而实现编解码器实现代码和调用代码的跨平台性。OMX IL API由两大主要部分组成,分别是Core API和Component API。

2024-06-02 21:02:32 1176 1

原创 H.265码流解析

H.265(hevc)码流解析

2024-05-24 23:53:10 1728

原创 H.264码流解析

H.264(AVC)码流解析

2024-04-30 09:39:50 1550

原创 TS码流解析(三)PES

PES解析

2024-04-26 22:24:08 859

原创 TS码流解析(二)PSI PAT PMT

PSI PAT PMT section解析

2024-04-26 22:21:33 1251

原创 TS码流解析(一)TS Header

TS header和adaptation field解析

2024-04-25 23:06:11 1268 1

mp4info,解析mp4文件必备工具

mp4info,解析mp4文件必备工具

2023-09-23

7yuv安装包,音视频开发必备工具

7yuv安装包,音视频开发必备工具

2023-09-23

Android MediaPlayer Demo

用Android MediaPlayer实现的网络流播放,本地播放,seekbar,全屏显示的demo

2023-08-12

OpenCV车牌识别新手入门级讲解,含详细注释

车牌识别的详细思想步骤在博客中讲解https://blog.csdn.net/qq_41828351/article/details/89474638。使用的OpenCV340,可以更换属性表,显示是在VS2017下的MFC。文件中有3个文件夹,有两个是字符识别的ANN网络训练,有一个是识别的主程序。

2019-04-24

融入局部信息的直觉模糊C均值聚类方法的C++实现

基于模糊C均值优化的直觉模糊C均值,融合了区域特征,C++实现,附带论文,可以更好的学习。博客地址https://blog.csdn.net/qq_41828351/article/details/88402605

2019-03-11

FCM模糊C均值的C++实现

模糊C均值的C++实现,有很详细的代码解释,运行需要配置OpenCV340,各种踩坑,希望大家学习愉快,附带理论地址,代码配合公式能够更好的学习哦https://blog.csdn.net/qq_41828351/article/details/88402605

2019-03-11

C++结合OpenCV实现Kmeans聚类图像分割的案列

利用C++结合OpenCV实现Kmeans聚类图像分割,需要配置OpenCV340版本,其他版本需要更改属性表。

2019-03-11

文件分割合并器

在学习C#过程中学习到FileStream,然后用简单的拖控件完成了一个文件的分割和合并的功能,可以根据分割文件的个数和单个文件的大小两种方式来分割文件。

2018-06-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除