自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 问答 (1)
  • 收藏
  • 关注

转载 ANativeWindow 和 Surface(解码和显示共享内存的解释)

ACodec的onOutputBufferDrained调用mNativeWindow->queueBuffer,通过Surface的hook_queueBuffer最终调用到Surface的queueBuffer,最后调用mGraphicBufferProducer->queueBuffer完成向BufferQueue送显示帧的过程。Surface构造时,会对ANativeWindow定义的那些函数进行初始化,hook_xxx表示钩子函数,说明ANativeWindow真正的实现是在Surface里面。

2023-03-23 16:13:39 848 1

原创 C++程序员的必经之路

而它的学习难度,主要来自于它的复杂性。我们要成为一个程序员,学的东西会很多很杂,但是最开始一定要从语言开始学习,而学习语言最关键的莫过于选好一本书,学校的教材就算了,根本没有写得好的。这些GUI库都各有自己的特点,其实我们只要先了解一种就可以了,只要深入了解了一种GUI库,需要的时候再学习其他的就够了,本质上都差不多,很快就可以上手了。学习数据库的基础知识,并且掌握一种数据库使用,推荐使用mysql,而且最好不要用一些封装好的接口,而应该直接用mysql提供的数据库api,可能对数据库了解的会更深入。

2022-12-09 10:26:47 170

转载 音视频同步机制

比如一个视频中,帧的显示顺序是:I B B P,因为B帧解码需要依赖P帧,因此这几帧在视频流中的顺序可能是:I P B B,这时候就体现出每帧都有 DTS 和 PTS 的作用了。对于起播阶段,特别是TS实时流,由于视频解码需要依赖第一个I帧,而音频是可以实时输出,可能出现的情况是视频PTS超前音频PTS较多,这种情况下进行同步,势必造成较为明显的慢同步。也就是其在时间相关性上,还依赖后面的视频帧,也正是由于 B 帧图像采用了后面的帧作为参考,因此造成视频帧的传输顺序和显示顺序是不同的。

2022-11-01 16:19:46 202

原创 以mediacodec::getName为例单讲PostAndAwaitResponse的使用

从上面的代码可以看出,postAndAwaitResponse()和postReply()必须出成对出现的。其实这就是一个线程间异步通信的过程。postAndAwaitResponse()是AMessage的一个成员函数,从函数名称可以看出,调用postAndAwaitResponse(),不仅仅post消息,而且还需要等待Response。获取(插件编解码器)组件名,根据下面实现可知,也就是MediaCodec自身接收【kWhatGetName】事件消息,并且是同步线程执行,成功则取出该组件名。

2022-10-20 10:31:54 203

原创 ffmpeg编译报XX file not found解决方法

如果出现出现以下英文,证明安装成功。(4)配合之完成后重新执行编译。(1)安装pkg-config。最后编译成功,可以执行。

2022-10-19 17:51:13 1496

转载 Linux下FFMPEG安装要点

关于linux下ffmpeg的安装,网上的介绍非常多了,基本都能解决大家的问题,我这里只是总结了几点1.源码下载git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg2.安装SDLSDL是一个开源的多媒体开发库,可以设置图像和视频的绘制等操作。如果不安装SDL,FFMPEG将不能生成ffplay.exe播放器。在Ubuntu下安装SDL也很简单,只需要依次执行下列命令:sudo apt-get install libsdl1.2-devsudo ap

2022-10-19 10:49:55 803

转载 以编译ffmpeg为例介绍Linux下pkg-config工具

概况地说,pkg-config用于返回系统上已安装的库的相关信息,这些信息在使用该库编译某个程序时就会用到。

2022-10-19 10:27:51 975

转载 C语言应用汇总

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-09-16 09:43:46 1222

转载 GStreamer基础教程01——Hello World

目标      对于一个软件库来说,没有比在屏幕上打印出Hello World更近直观的第一印象了。因为我们是在和一个多媒体的framework打交道,所以我们准备播放一段视频...

2019-09-04 09:49:19 184

转载 Android Multimedia框架总结(一)MediaPlayer介绍之状态图及生命周期

版权声明:我已委托“维权骑士”(rightknights.com)为我的文章进行维权行动.转载务必转载所有,且须注明出处。否则保留追究法律责任 https://blog.csdn.net/hejjunlin/art...

2019-07-27 13:52:53 309

转载 1. Android MultiMedia框架完全解析 - 从开机到MediaServer的注册过程

版权声明:本文为博主原创文章,...

2019-07-23 19:04:46 336

原创 哈希表—超简单的理解思路

一、啥是哈希表哈希表又称散列表,其实就是和数组、链表一样的是一种数据结构,在你从来没有接触过这个概念的时候,觉得神秘而不可探测,其实就是一纸老虎,人狠话不多,先上一个相对官方的概念定义:散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。建立了关键字与存储位置的映射关系,公式如下:存储位置 = f(关键字)这里把这种...

2019-07-18 17:47:00 1160 1

原创 C++中的抽象类及动态类型转换

抽象类与纯虚函数1. 抽象类类太抽象以至于无法实例化就叫做抽象类(描述是不是绝了,类越往下派生肯定越具体,越往上肯定越抽象)2. 抽象函数/纯虚函数2.1. 成员函数应出现在哪个继承层次?问题:Shape类层次中,getArea()函数放在哪个层次选择1:放哪儿都行:Shape中或子类中定义getArea()选择2:强制要求Shape子类必须实现getArea()2...

2019-07-09 17:30:27 978 1

原创 C++中的多态

多态的概念1. What is Polymorphism?1.1. 广义的多态:不同类型的实体/对象对于同一消息有不同的响应,就是OOP中的多态性。1.2. 截止目前:多态性有两种表现的方式1.2.1. 重载多态:class C {public: int f(int x); int f( );};1.2.2. 子类型多态:不同的对象...

2019-07-09 14:17:26 236

原创 继承中的名字隐藏、重定义、以及重定义与重载的区别

继承中的名字隐藏1.基类同名函数被隐藏对于下面的代码class P {public: void f() {}};class C :public P {public: void f(int x) {}};int main() { C c; c.f();}g++编译结果:NameHiding.cpp:13:7: erro...

2019-07-08 18:49:58 280

原创 继承中的默认构造函数,构造链以及析构链

继承中的默认构造函数1. 基类的无参构造函数若基类ctor未被显式调用,基类的默认构造函数就会被调用(注意此例中的即继承关系是Circle类继承于Shape)要考虑给基类提供默认构造函数啊,不然很容易出现错误!!!!很容易被顶啊构造链和析构链1. 构造函数链构造类实例会沿着继承链调用所有的基类ctor调用次序: base first, derive nex...

2019-07-08 16:18:05 501

原创 C++中的浅拷贝与深拷贝

本文来源于大学课件整理

2019-07-05 10:53:50 112

原创 C++类中的静态成员与实例成员

1.1. 静态成员的声明在类定义中,关键字 static 声明 不绑定到类实例的成员( 该成员无需创建对象即可访问)1.2. 静态数据成员的定义静态数据成员定义的规则。。。略;静态数据成员的定义规则复杂,在类外定义并初始化且不带static关键字,大部分情况况下不会出错,即使出错咱们也能根据编译器提示的错误信息,快速解决错误点2. Static mem...

2019-07-04 15:43:22 1226

转载 视频压缩:I帧、P帧、B帧 关键帧

**说明: 1.本文通过整理而来,集多个高手的精华,此为最重点!!! 2.因为在海思平台做多媒体视频处理,所以了解I帧、P帧、B帧等压缩-编解码特点是必须的。 3.海思I帧间隔即GOP取值范围:[0, 1000],以帧为单位,为动态属性。 4.欢迎拍砖。*********************************...

2019-07-04 13:20:17 533

原创 构造函数初始化列表、默认构造函数以及带有内嵌对象的构造函数相关知识

背景:在工作学习使用C++的过程中,遇到了一些初始化方面的一些坑,查询些许资料,遂得此文1.构造函数初始化在构造函数中用初始化列表初始化数据域Class Person(parameterList): dataField1(value1), dataField2(value2){ // Something to do }2. 为何需要构造函数初始化列表背景:类的...

2019-07-03 17:06:39 1902

原创 c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针

本篇是基于云天之巅博主音视频开发中的一个bug,继而查阅了的一点资料;本篇转载自博客园某博主的随笔,并做极少量的修改,原文地址:https://www.cnblogs.com/haore147/p/3647348.html、1.指针没有指向一块合法的内存  定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内浅显的例子就不举了,这里举几个比较隐蔽的例子。1.1结构...

2019-07-03 10:01:07 534

原创 C++初始化相关知识

2019-06-26 17:21:51 108

原创 C++中的浅拷贝与深拷贝

类中的数据在有指针的情况下,浅拷贝只是增加了一个指针,指向已经存在的内存,而深拷贝就是新增加一个指针并指向新申请的一块内存,使这个新增加的指针指向新开辟的内存,深拷贝可以有效避免,浅拷贝重复释放同一内存的错误,现举例说明如下:#include <iostream>using namespace std;class Student{ private: ...

2019-06-26 10:41:39 332

原创 AwesomePlayer实现过程分析

在Android的多媒体框架中,stagefrightplayer是对Awesomeplayer的封装,是AwesomePlayer的代理,所以这里面实际干活的当然是我们今天的主角-AwesomePlayer。AwesomePlayer说白了也是一个普通的播放器,他与VCL、mplayer、ffmpeg等开源的结构是一致的,只是实现的方式有所不同,这里就按照以下四个步骤来分析AwesomePlay...

2019-06-11 17:49:18 6442 6

原创 Android 之MediaPlayer类相关函数调用过程

本篇是分析Android设备系统用MediaPlayer类播放视频过程中各个类或函数相互调用的过程,只分析主干过程,不死磕细枝末节, 且着墨于Native层C++的实现,本人资历学识浅薄,忘各位批评指正,多加交流!既然要分析视频播放时的函数调用过程,必然要有一个主干流程可抓,下面就是一个典型的播放序列——一小段Java应用程序,我们以此为主干流程加以分析:A块代码如下: Media...

2019-06-05 15:47:20 891

转载 【stagefrightplayer】1 调用过程

概述android中的多媒体播放结构是:client-server模式client端对应的类是:MediaPlayer -- framework/base/media/java/android/media/MediaPlayer.javaserver端对应的类是:MediaPlay...

2019-06-03 15:29:25 304

转载 Android Binder机制原理(史上最强理解,没有之一)(转)

Android Binder机制原理(史上最强理解,没有之一)(转)原文地址: http://blog.csdn.net/universus/article/details/6211589Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有的进程间通信IPC手段包括(Internet Process Connection): 管道(Pipe)、信号(Signal)和...

2019-05-24 17:30:02 3585 3

转载 android MediaPlayer NuPlayer以及Android MediaPlayerService解析

MediaPlayer通常MediaPlayer的调用逻辑是,构造函数-> setDataSource -> SetVideoSurfaceTexture-> prepare/prepareAsync -> start-> stop-> reset...

2019-05-24 17:22:54 1629

转载 音视频学习之路简述

音视频开发学习——转知乎答案著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:姚冬链接:http://www.zhihu.com/question/31156766/answer/54645514来源:知乎我们先假设某人在音视频方面是零基础,也没学过任何数字信号处理相关知识,数学基础基本是高中水准,但是熟悉 C/C++ 开发,至少熟悉某一个平台下的编译调试IDE...

2019-05-22 16:24:34 469

转载 音视频学习参考

原文地址:http://blog.yundiantech.com/?log=blog&id=4 所谓视频,其实就是将一张一张的图片连续的放出来,就像放幻灯片一样,由于人眼的惰性,因此只要图片的数量足够多,就会觉得是连续的动作。 所以,只需要将一张一张的图...

2019-05-22 15:12:59 195

转载 音视频学习

现在音视频如此火爆,作为一枚专业的程序媛哪能不懂音视频的开发呢,所以踏上了音视频研究之路。对于ios来说音视频编解码主要有两种编解码框架FFmpeg和苹果ios8以后开放的Vid...

2019-05-22 11:41:08 436

原创 关于printf重定向打印日志方便调试的博客总结

说明:该博客为汇总性质,内容皆为转载  一、STM32在IAR中调用printf函数的一个方法在串口都配置好的情况下,在工程的其中一个c文件中加入如下代码:注:直接在main.c文件前面加入这段代码也行,只是这样的代码习惯不太好,代码显得太杂乱,个人不推荐。本人习惯性的新建一个redefineprintf.c文件,在该文件中加入此段代码,注意不要忘了将该文件添加到工程中。#in...

2018-12-27 11:46:42 2385 1

空空如也

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

TA关注的人

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