自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 互斥量属性

四、互斥锁属性线程和线程的同步对象(互斥量,读写锁,条件变量)都具有属性。在修改属性前都需要对该结构进行初始化。使用后要把该结构回收。我们用pthread_ mutexattr_init函数对pthread_mutexattr结构进行初始化,用pthread_mutexattr_destroy函数对该结构进行回收。4 名称:: pthread_mutexattr_init/pthread_mutexattr_destroy 功能: ...

2022-04-18 14:49:38 323

转载 tcp三次挥手四次握手

作者:zhanyd链接:https://www.zhihu.com/question/63264012/answer/1774227296来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。很久很久以前,还没有互联网,大家通信主要靠写信。小扎和小美是高中同学,互相有好感,大学两个人去了不同的城市上学。小扎在大学感到了空虚寂寞冷,鼓起勇气写信向小美表白。小扎寄出去信后,心里一直很紧张,又怕万一地址不对,信寄不到怎么办呢?小美收到小扎的信后,按耐不住心中的惊喜.

2021-08-16 21:29:13 170

转载 数组指针和指针数组的区别

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]p++; //该语句执行过后,也就...

2021-07-27 17:24:49 188

原创 不建议用memset初始化指针

先运行一段代码:int main(){ char* f;//不进行赋值,此时无法访问F指针,错误写法,实际不建议这样写code memset(f, 0, sizeof(f)); if(NULL == f) //成立,此时的f变为能够使用的指针,虽然指针为空 printf("f指针为空"); return 0;}一般情况下,给空指针赋值为NULL,初始化一块内存,用memset为0。如果内...

2021-07-27 14:43:43 4891

原创 DASH流媒体MPD中的segmentTemplate

  SegmentTemplate利用MPD中的属性代入公式计算可以得到相关通配符的数值,来提供给客户端进行相关地址解析。相较于segmentList,使用 SegmentTemplate 的方式,能够很大的减小 MPD 文件大小,不过会额外增加以下客户端解析 MPD 的时间,在直播情况下,MPD中的segment选择segmentTemplate,而不是segmentList。  对于SegmentTemplate,使用了$Number$ 和$Time$通配符进行替换。对于initializati..

2021-07-16 16:06:08 662

原创 makefile判断目录或文件是否为空

ifeq ($(wildcard $(VENDOR_MEDIATEK_TV_DIR)/security/playready*), )若为空则为true。ifeq的用法: ifeq ($(TARGET_ARCH), arm) LOCAL_SRC_FILES := ... else ifeq ($(TARGET_ARCH), x86) LOCAL_SRC_FILES := ... else ifeq ($(TARGET_ARCH), mip...

2021-07-07 11:06:09 1603 1

转载 C++ 单例模式

单例可能是最常用的简单的一种设计模式,实现方法多样,根据不同的需求有不同的写法; 同时单例也有其局限性,因此有很多人是反对使用单例的。本文对C++ 单例的常见写法进行了一个总结, 包括懒汉式、线程安全、单例模板等; 按照从简单到复杂,最终回归简单的的方式循序渐进地介绍,并且对各种实现方法的局限进行了简单的阐述,大量用到了C++ 11的特性如智能指针, magic static,线程锁; 从头到尾理解下来,对于学习和巩固C++语言特性还是很有帮助的。本文的全部代码在 g++ 5.4.0 编译器下编译运行...

2021-06-21 16:54:31 708

转载 C++ 智能指针 unique_ptr

​在《拥抱智能指针,告别内存泄露》中说到了内存泄漏问题,也提到了C++中的智能指针基本原理,今天就来说说类模板unique_ptr。在此之前,先回答读者的一个提问:C语言中该怎么办?有几点建议:编写时尽量遵循函数内申请,函数内释放的原则 注意成对编写malloc和free 使用静态扫描工具,如《pclint检查》 使用内存检测工具,如valgrind相关阅读《常见内存问题》。unique_ptr一个unique_ptr独享它指向的对象。也就是说,同时只有一个unique_ptr指向同

2021-06-11 18:01:39 111

原创 sed参数详解

sed -i “s/原字符串/新字符串/g” `grep -rl原字符串所在目录`解释:1. sed -i : 直接替换文件内容。2.sed 's/要被取代的字串/新的字串/g' 这种模式是一种替换模式,但是这样是直接输出,不会修改文件;要修改文件,需要加上-i.3. grep -r 搜索子目录查找, -l 表示输出匹配到的文件名。4. 反引号`` ,是将里面的字符串当做命令执行。例子: 替换h目录所有文件的listen ,替换为:listen_new...

2020-11-13 17:47:54 3660

转载 X509证书详解

本文源于两篇英文文档,将其合二为一,翻译过程参考了网上的其它翻译以求更加准确,在此对这些翻译文档的作者表示感谢!文中介绍的OpenSSL版本较老,与现有的版本有很多不符之处,但万变不离其宗,核心原理还是很有参考价值的。1)证书X.509标准是密码学里公钥证书的格式标准。X.509 证书己应用在包括TLS/SSL(WWW万维网安全浏览的基石)在内的众多 Internet协议里,同时它也有很多非在线的应用场景,比如电子签名服务。X.509证书含有公钥和标识(主机名、组织或个人),并由证书颁发机.

2020-08-23 12:07:58 19564

原创 pthread线程detached和joinable

线程有两种状态,在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 线程的分离状态决定一个线程以什么样的方式来终止自己。在默认情况下线程是非分离状态的,这种情况下,原有的线程等待创建的线程结束。只有当pthread_join()函数返回时,创建的线程才算终止,...

2020-06-01 11:22:46 492

转载 libcurl基础知识1

一、LibCurl基本编程框架libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。想要知道更多关于libcurl的介绍,可以到官网http://curl.haxx.se/上去了解,在这里不再详述。在基于LibCurl的程序里,主要采用callbac.

2020-05-31 16:04:06 235

原创 dlopen failed总结

1、dlopen 动态库失败原因①动态库位置没有放对地方,dlopen路径错误(可以打印dlerror()函数)解决办法:使用正确路径。run time的so路径一般都在环境变量LD_LIBRARY_PATH中,可以获取该环境变量,或者改变export LD_LIBRARY_PATH=`具体路径`②有不能识别的函数或者标识符,undefine symbol解决办法:考虑是不是C++调用C...

2020-03-05 11:37:47 12270 1

转载 AES加密

前段时间,在研究HLS的AES加密,由于一个地方电视台的HLS流有AES加密,在查看了相关的加解密方案后发现使用的是简单的AES的CBC模式,在CBC的模式下,会设置一个IV,初始化向量。但是我在解密的时候,使用了一个由于理解错误而产生的一个错误IV居然也能解密视频并进行播放,于是就有了这篇张文章。AES五种加密模式(CBC、ECB、CTR、OCF、CFB)虽然有五种加密,但是常用的还是C...

2019-12-17 16:05:33 246

转载 Apple官方对于Http Live Streaming的常见问题回答

1、支持哪些类型的编码器? HLS协议本身对编码器的选择没有任何限制。 然而,HLS目前实现的编码格式为H.264 视频和AAC 音频 (HE-AAC 或 AAC-LC)。 Apple官方提供的切片工具支持MPEG-TS Over UDP输入的实时流。 2、具体支持的音视频格式规范包括哪些? 协议本身对编码格式没有限制,就目前的实现来说,支持以下格式: Vide...

2019-12-16 15:42:29 1131

原创 HLS--M3U8解析

目录1 简介22 概述23 播放列表文件33.1 介绍33.2新标签43.2.1EXT-X-TARGETDURATION43.2.2EXT-X-MEDIA-SEQUENCE43.2.3EXT-X-KEY43.2.4EXT-X-PROGRAM-DATE-TIME53.2.5EXT-X-ALLOW-CATCH53.2.6EXT-X-ENDLI...

2019-11-25 19:37:33 4378

原创 C—动态内存分配之malloc与realloc的区别

在程序的执行期间分配内存时,内存区域中的这个空间称为堆(heap)。还有另一个内存区域,称为栈(stack),其中的空间分配给函数的参数和本地变量。在执行完该函数后,存储参数和本地变量的内存空间就会释放。堆中的内存是由程序员控制的。在分配堆上的内存时,由程序员跟踪所分配的内存何时不再需要,并释放这些空间,以便于以后重用它们。 使用动态内存很明显的好处就是:不需要预先分配存储空间且...

2019-11-22 18:02:59 596

原创 DTS、PTS 的概念

视频视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在一个本子的每一页画上画,然后快速翻动的感觉。但是在实际应用中,并不是每一帧都是完整的画面,因为如果每一帧画面都是完整的图片,那么一个视频的体积就会很大,这样对于网络传输或者视频数据存储来说成本太高,所以通常会对视频流中的一部分画面进行压缩(编码)处理。由于压缩处理的方式不同,视频中的画面帧就分为了不同的类别...

2019-11-06 22:59:54 1368

原创 C++中的生命周期

类A,含构造函数和析构函数普通函数fun,函数体里新建了类A的局部自动对象FunObj和局部静态对象InStaObjmain方法新建了类A的局部自动对象MainObj,调用fun方法外面新建了A的的外部静态对象ExStaObj和外部对象GblObj[cpp]view plaincopy#include<iostream>#include<string....

2019-10-22 17:14:19 1313

原创 C++和java中生产者消费者模型

下面用代码简单实现生产者消费者模型:主要是用的是线程、线程锁、线程条件变量。先使用c++的代码实现:#include <jni.h>#include <string>#include "pthread.h"#include "AndroidLog.h"pthread_t thread;void *normalCallBack(void * data)...

2019-09-24 23:48:49 193

原创 MSS(Microsoft smoothing streaming)介绍

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-sstr/8383f27f-7efe-4c60-832a-387274457251?redirectedfrom=MSDN这里是微软的官方介绍,mss和hls出现都比较久了,应用的也非常多。1、微软SmoothStreamIndexing协议规定了四种消息:(...

2019-09-19 19:48:59 1943

原创 hls中的playlist(m3u8)

最近忙着学习MSS(Microsoft smooth streaming),都忘了HLS的内容。最近遇到几个bug都是hls seek有关,hls的精准seek问题,seek的最小单位是视频分片(ts流),导致无法精准seek到关键帧。虽然说现在有的code不支持,就把这个bug推出去了。 我在网上看到大量和我有类似的hls seek问题,我以为是apple设计如此呢。...

2019-09-19 19:31:33 11014

原创 vsnprintf

函数简介头文件:#include <stdio.h>函数声明:int _vsnprintf(char* str, size_t size, const char* format, va_list ap);参数说明 char *str [out],把生成的格式化的字符串存放在这里. size_t size [in], str可接受的最大字符数[1...

2019-08-12 14:44:16 8408

原创 jstack分析线程状态(java分析内存泄漏)

背景记得前段时间,同事说他们测试环境的服务器cpu使用率一直处于100%,本地又没有什么接口调用,为什么会这样?cpu使用率居高不下,自然是有某些线程一直占用着cpu资源,那又如何查看占用cpu较高的线程?当然一个正常的程序员不会写出上述代码,这里只是为了让一个线程占用较高的cpu资源。top命令在linux环境下,可以通过top命令查看各个进程的cpu使用情况,默认按cpu使...

2019-08-01 10:24:31 777

原创 #define

#define#define macro的作用域有点类似于C/C++全局静态变量编译器处理宏的时机是预处理阶段 编译器按文本顺序处理 遇到宏时就定义一个宏变量假设这种情况void test() {#define MACRO 1}int main() {#ifdef MACRO// do some thing#endif}main函数也是看得到MACRO宏的 因为...

2019-07-31 15:05:29 7618

原创 C/C++中的内存泄漏及查找方法(二)

知道内存泄漏产生的原因,那么怎么在庞大的code中定位产生内存泄漏的code?通过#define malloc/new达到目的1, 定义供应用程序使用的头文件//libmem.h#ifndef _LIBMEM_H_#define _LIBMEM_H_//声明自定义malloc及free函数extern void *my_malloc(unsigned int uSize, con...

2019-07-31 15:02:23 682

转载 C/C++中的内存泄漏及查找方法(一)

先了解一下malloc/free和new/delete:参考博客https://blog.csdn.net/qq_40840459/article/details/81268252先看内存的分布状况一个由C/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack)— 由编译器自动分配释放 ,存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等。其操作方式类似于数...

2019-07-31 14:49:02 2246

转载 Http

Http协议与TCP协议简单理解  TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的...

2019-06-21 10:19:36 100

转载 TCP详解

TCP/IP协议TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。TCP/IP协议分层TCP/IP协议族按照层次由上到下,层层包装。应用层:向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登...

2019-06-21 09:55:05 85

转载 函数声明后面的const用法

void function() const{}通常我们会看到一些函数声明后面会跟着一个const,这个const是做什么的呢?看一下下面的例子,就知道了。直接在编译前,就会提示下面的两个错误// test1107.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using name...

2019-05-07 11:36:09 94

原创 HTTP Live Streaming基础知识

入职第二天,开始接触MTK流媒体相关知识,主管说以后负责HLS相关东西,开始听了啥都不知道,继续学习。HLS(HTTP Live Streaming)苹果公司提出的基于HTTP的流媒体网络传输协议,基于B/S(brower/server)架构,别的两种流媒体网络传输协议是基于C/S(client/server)的架构。后面学习了再进行介绍。HLS协议规定: 视频封装格式为TS...

2019-04-30 18:16:55 6998 4

转载 在Java 线程中返回值的用法

有时在执行线程中需要在线程中返回一个值;常规中我们会用Runnable接口和Thread类设置一个变量;在run()中改变变量的值,再用一个get方法取得该值,但是run何时完成是未知的;我们需要一定的机制来保证。在在Java se5有个Callable接口;我们可以用该接口来完成该功能;代码如:Java代码packagecom.threads.test; ...

2019-04-17 17:37:56 452

转载 Java外部类可以访问内部类private变量

在讲Singleton时我举例时用过这样一段代码:public class SingletonDemo { private static class SingletonHolder{ private static SingletonDemo instance=new SingletonDemo(); } private SingletonD...

2019-04-04 15:05:05 1668 2

转载 Static 和 Synchronized

这两天在定位一个网上问题的时候发现一个很诡异的现象,系统夜间的汇总任务跑了很长一段时间才能结束,而且日志显示这些汇总任务的每个子任务都很快就结束了,但整体任务还是耗费了很长一段时间才结束。其实整体业务流程很简单,大致的流程就是系统创建了很多汇总任务,把它们丢到线程池中去执行。这些任务在执行的过程中,为了提高效率,会创建一些子任务并并发的运行它们,当子任务运行结束后,父任务就会结束,所以出现这种...

2019-04-04 13:35:20 912

原创 如何在makefile中获得shell变量

最近在编译android的时候,脚本(shell)中有个变量,希望能够在makefile中得到这个变量值,进行编译。source脚本的时候定义这个变量,make的时候用到这个变量。如何在makefile中获得shell环境变量:1、在写makefile的时候,有时我们需要获取shell命令的结果,并将其赋值给变量,下面是个例子ROOT = $(shell pwd)all:...

2019-04-04 09:57:28 3542

原创 android实现监听(从C++到java)

在TV实际开发中需要使用到监听,来实时更新UI,下面以ATV搜台为例子,搜台时,底层C++发送消息,app中来更新UI。下面具体来分析。Activity中代码如下:oncreate中: private OnAtvPlayerEventListener mAtvPlayerEventListener = new AtvPlayerEventListener()...

2019-03-29 21:31:33 1042

转载 AIDL,在Stub类中的asInterface函数

在使用AIDL通信的时候,在Stub类中都会生成一个asInterface函数,以《Android开发艺术探索》中的例子来分析,其生成的asInterface函数源码为: 1 /** 2 * Cast an IBinder object into an com.willhua.demoaidl.aidl.IBookManager 3 ...

2019-03-22 16:37:21 8560 1

转载 单例模式中用volatile和synchronized来满足双重检查锁机制

单例模式中用volatile和synchronized来满足双重检查锁机制1、饿汉单例模式:private static Singleton uniqueInstance = new Singleton ();public staticSingleton getInstance(){ returnuniqueInstance;}2...

2019-03-22 10:57:21 162

转载 SystemServer 进程启动系统服务方式

* startBootstrapServices(); // 启动引导服务* startCoreServices(); // 启动核心服务* startOtherServices(); // 启动其他服务SystemServer 进程启动系统服务方式SystemServer 进程启动系统服务有两种方式,分别是 SystemServiceManager 的startService方式和...

2019-03-18 14:56:11 826

原创 MStar的DVBC搜台流程。从java到C++

DVBC搜台流程上层入口activity:Z:\msd358_AN8.0\vendor\mstar\common\apps\MTvPlayer\src\com\mstar\tv\tvplayer\ui\tuning\ChannelTuning.java详细看下面入口代码:mTvChannelManager.setDvbcSca...

2019-03-16 21:32:39 939 2

空空如也

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

TA关注的人

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