专注于阿里云多媒体终端产品的框架及业务流程梳理及优化,解决跨平台多媒体终端的框架及音视频编解码、渲染、推流问题,负责移动平台短视频直播连麦的收流、解码、渲染及推流以及移动平台OpenGL渲染流程化设计及开发. 实时音视频媒体处理服务
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。欢迎访问我的云社区博客:https://yq.aliyun.com/u/yagerfgcs
关于加解锁的两种实现方式 方案一:使用C++11 atomic_flag原子特性实现细粒度加解锁 #ifndef YAGER_MUTEX_H #define YAGER_MUTEX_H #include class CYagerMute...
Make_shared Why Make_shared ? C++11 中引入了智能指针, 同时还有一个模板函数 std::make_shared 可以返回一个指定类型的 std::shared_ptr, 那与 std::shared_ptr ...
在同一个项目中,所有的源文件必须链接相同的C运行时库。如果某一文件用了Multithreaded DLL版本,而其他文件用了Single-Threaded或者Multithreaded版本的库,也就是说用了不同的库,就会导致这个警告的出现。
Boost官网 文档: http://www.boost.org/doc/libs/1_64_0/ 中文 http://zh.highscore.de/cpp/boost/introduction.
老牌C++程序猿使用C++99时间较长,对C++11的特性做了系统的学习,摘录了部分认为重要的信息,与大家共勉一起进步。
C++11 新增了很多特性,lambda 表达式是其中之一,如果你想了解的 C++11 完整特性,建议去这里,这里,这里,还有这里看看。本文作为 5 月的最后一篇博客,将介绍 C++11 的 lambda 表达式。
Linux将虚拟存储器高端的1/4留给内核,剩下3/4全留给用户进程。虚拟存储器上中的程序主要由以下几个重要组成部分: 1.进程控制块(process control block,简称PCB) PCB中保存了进程hello的运行时的存储器图像和寄存器信息,它帮助操作系统在内存中找到我们的hello程序,如果没有它,hello只是和其它程序杂乱无章地分布在内存中就乱套了。
半同步/半异步模式的结构遵循分层模式,包括四层:同步服务层 同步服务层:完成高层处理服务。同步层中的服务在独立的操作情况下可以阻塞现成或进程。 异步服务层:进行低层处理服务。
《TCP连接的建立与终止》 1、如果客户端与服务端中有一方异常终止,比如服务端断电,未发送FIN消息,客户端无感知。待服务端重启后,客户端用原先的连接发送数据,服务端会以复位RST消息返回给客户端,客户端收到复位报文段后显示连接已被另一端的主机终止。
开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别 首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别 以下是上述协议的简单介绍:BSD开源协议BSD开源协议是一个给于使用者很大自由的协议。
下载安装包 http://www.rarsoft.com/download.htm 选择Mac OS X版本,下载后是tar后缀的压缩文件 安装rar和unrar sudo ins...
最近做Android和IOS项目,由资深windows平台C++开发转型做移动平台,涉及到C++、Java、ObjectC三类语言的对比,本文将从面向对象语言三大特性&五大原则角度对比分析,总结沉淀下来(N年前做Java的时候就想干的事,现在总算动手了) 三大特性: 封装 封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
Enterprise Architect基于SVN多人协作环境搭建 本文简单介绍基于TortoiseSVN搭建Enterprise Architect多人协作环境的方法。
使用macos系统总结 重点介绍自己使用macos系统下的总结,方便自己、福利他人:) 远程连接Windows机器 配置git的public key 1.
一、配置环境 windows 7 64位 python-2.7.5.amd64.msi node-gyp-3.3.1 libuv-v1.9.0.tar.gz http://download.csdn.net/detail/yagerfgcs/9672471 软件可以到我的文件共享里下载。
1. 安装依赖 sudo apt-get install libssl0.9.8 sudo apt-get install build-essential libssl-dev iw sudo apt-get install libpcap-dev sqlite3 libsqlite3-dev libpcap0.
Socket通信原理探讨(C++为例) 一、网络中进程之间如何通信? 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 1、消息传递(管道、FIFO、消息队列) 2、同步(互斥量、条件变量、读写锁、文件和写记录...
移动播放器面临的情况: 1、渲染时按照时间戳渲染 2、播放端来的流是抖动不平滑的,可快可慢,可能延时只来一帧,后紧跟N帧。 VLC针对抖动的处理方式 1、收流时在收到第一帧TS1的时候取本地绝对时间,作为绝对时戳absPts1,第二帧TS2到来时取本地绝对时戳absPts2。
一、参考资料 官网的编译教程:http://wiki.videolan.org/Win32CompileMSYS 编译的各种问题:http://wiki.
一、综述: 在设计播放器1.0时,曾使用vtune和VS自带的性能分析工具测试,对于播放器这样的软件其核心流程分为收流&拼帧、解码、渲染三大块,其中收流&拼帧在大并发模式下不是性能瓶颈。
一、移动端OS角度硬解能力支持情况 Android 4.1.2以前: 不支持 4.1.2-5.0 Java侧MediaCodec 5.0以上 Java侧MediaCodec,C侧nativeMediaCodec IOS 8.
九种关系总结,EA图中会用到: 关联关系(Association):双向关联,单向关联,自关联、多重性关联Multiplicity、 聚合(Aggregation):整体与部分的关系,整体对象销毁时成员对象不销毁,一般是构造函数或Set方法传入成员对象。
九种关系总结,EA图中会用到: 关联关系(Association):双向关联,单向关联,自关联、多重性关联Multiplicity、 聚合(Aggregation):整体与部分的关系,整体对象销毁时成员对象不销毁,一般是构造函数或Set方法传入成员对象。
通过二进制头识别文件类型,可以使用UE或者WinHex软件打开 1.JPEG/JPG - 文件头标识 (2 bytes): $ff, $d8 (SOI) (JPEG文件标识) - 文件结束标识 (2 bytes): $ff, $d9 (EOI) 2.
一、前言 在车牌识别项目中使用了人工神经网络的开源库FANN训练及识别车牌中的字符,经过多重调整后,其识别率可以达到99.8%以上。 二、项目介绍 高清摄像机智能车牌识别一般分为视频采集、车辆轮廓检测、车牌轮廓检测、车牌图像矫正、字符切割、字符识别等一系列流程。
经常会遇到批量修改文件名的时候,比如下载了一批mp3文件。这些文件名都带有统一的前缀,比如“儿歌-***.mp3”。在听音乐时有时只能回滚前几个文字,这时就可以使用该脚本批量去掉前缀。
问题:使用VMWare虚拟机跑MacOSX系统时,从虚拟机的状态栏或菜单中可以看到USB或iPhone真机已经被识别。但是在XCode调试中依然无法连接设备,显示“No devices connected to 'My Mac'...” 如下图所示: 解决办法: 在未启动MacOSX虚拟机的状态下,选择虚拟机菜单:虚拟机(M)->设置(S)->硬件->USB控制器,将USB兼容性改为“USB 2.0”,再重新启动虚拟机即可。
安装brew的执行命令 curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1 安装cocoapods: su...
实际工作中经常要梳理文件目录结构,比如:发布版本时,随带一些软件包或文档目录,为了一目了然的说明各软件或文档的位置及作用,方便用户查找,这时你需要树状结构图。
SSH服务适用于所有类UNIX系统,例如Ubuntu、CentOS、RedHat,包括Mac OX,在这里简单介绍一下它的部分适用方法。 首先,介绍一下Mac OX,因为SSH在苹果系统上嵌入了,不需要安装任何东西,只需要简单设置一下就可以: ->...
1、面向对象高级编程中----使用__slots__ 注意点:使用__slots__要注意,__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的:
1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。
1、获取cpu核的个数,我给osx虚拟机分配的核是2.所以CORE_COUNT值为2 CORE_COUNT=`sysctl -n machdep.cpu.core_count`
刚遇到OSX操作系统的root密码失效。即使输入正确的密码也无法进入系统。可以重新设置Root密码恢复一下 【Mac设置Root密码] Mac系统重新设置root用户密码 如果不知道root用户密码,需要重设。
一、Dsoframer的已有问题 1. 增加接口函数ActivateWithoutFocus,激活word, 但是不抢占焦点; 在dsofauto.
1、搜索指定目录下所有文件中是否包含具体内容。 如:搜索当前目录下的所有文件是否包含“by yager”字符串 root@yager-virtual-machine:/media/yager/ex_vol/vlc_beifen_from_compile_android/vlc# grep -R "by yager" .
使用按键精灵+umdh定位内存泄露问题的方式 一、配置方法 1、 安装windbg版本,必须安装:X86 Debuggers And Tools-x86_en-us.msi 2、 安装windows相关pdb和客户端程序对应的pdb。
VS2010远程调试设置 首先调试机安装VS2010,打开VS安装目录C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger,把Remote Debugger目录复制到被调试机器上某个位置。
Windows系统中注册表键"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /v "TabProcGrowth"值的不同情况,注意新安装的系统中是没有此键的。
一、准备虚拟机 1、所需软件 deamon:DTLite4491-0356.1394761051.exe VMware-workstation-full-12.
在调测VLC源码时经常需要借助日志打印其中核心变量、临时变量的值,方便学习和定位问题,但是遇到像src\input\clock.c中的函数,因缺少vlc_object_t *obj对象,无法打印日志。
一、前言 在使用VS学习VLC源码时,可以打断点分析变量数据,跟踪代码流程,方便我们理解源码。但是在定位音视频卡顿、延时等疑难问题时,这一招就不管用了,因为打上断点就会导致实时计算的pts值不准确,影响复现真实场景。
本文会持续更新~~~~~ 研究VLC有一段时间了,发现VLC中有不少问题,做了部分修改,欢迎各位拍砖。 1、VS编译的版本不能播放tcp的流,而官网下载的release版本可以播放。
一、前言 clock管理是vlc播放音视频的重要部分,从live555收流到decoder解码到render渲染,整个播放过程中均需依赖clock机制。
一、前言 研究VLC源码已有一段时间,一直未形成经验文档,借csdn博客,记录学习的过程及总结的经验,抛砖引玉,期望能给同仁一点帮助。 二、准备工作 VS下编译的VLC源码目录:https://github.com/sunqueen/vlc-2.2.1.32-2013 这个是sunqueen大神参考VLC源码经过修改后的适合VS编译器的源码,我于2016年3月中旬将该源码与VLC官网源码对比后,发现基本逻辑保持一致,仅修改了一些编译不过的地方。
一、前言 VLC播放音视频的核心流程梳理,从live555收流到ffmpeg解码的整套流程 涉及到MultiFramedRTPSource、RTPSource、FramedSource、live555、es_out、decoder、video、clock、video_output、araw、mtime、dec、input、output、filters、directx等核心类。