- 博客(68)
- 资源 (155)
- 问答 (1)
- 收藏
- 关注
原创 IdleTask 详解
在IdleTask::Initialize内部创建线程IdleTaskThread并启动线程。在IdleTaskThread内部有OSHeap fIdleHeap变量,负责存放IdleTask。在线程内部:IdleTaskThread::Entry()不断的从队列中取出task元素,然后调用elem->Signal(Task::kIdleEvent)放入到线程池中。/* * * @AP
2017-01-31 13:40:43 2776
原创 darwin setevent的使用注意事项
信号无论调用setevent设置多少次触发信号,只要 WaitForSingleObject等待到一次信号,则信号自动设置为非触发状态。HANDLE fCondition = NULL;unsigned int WINAPI _Entry(LPVOID inThread);int main(int argc, char * argv[]) { fCo
2017-01-31 11:38:06 303
原创 深入GetMessage,PeekMessage以及Windows消息机制
译者的话该文重点讲述了Windows处理事件、消息的具体过程和步骤。尤其是在系系处理鼠标键盘事件的过程上做了详解。通过这篇文章,你将对Windows的消息处理机制有一个较全面的了解。概念这篇文章解释了GetMessage和PeekMessage的内部运作方式,同时也是一类与“消息及消息在16位 MS-DOS®/Microsoft® Windows™环境之下的影响”相
2017-01-30 11:32:40 3234 1
原创 EventThread 详解
在select_modwatch中调用WSAAsyncSelect注册窗口消息,然后再消息回调函数select_wndproc直接返回0,这样消息回调就不会处理这些消息。进而可以在select_waitevent中通过调用 ::GetMessage获取要处理的消息。注意 :在select_waitevent一旦有消息处理,则调用WSAAsyncSelect(req->er_handle,
2017-01-26 12:40:12 1690
原创 WSAAsyncSelect模型
WSAAsyncSelect模型允许应用程序以Windows消息的方式接收网络事件通知。许多对性能要求不高的网络应用程序都采用WSAAsyncSelect模型,MFC的CSocket类也使用了它。 WSAAsyncSelect自动把套接字设为非阻塞模式,并且为套接字绑定一个窗口句柄,当有网络事件发生时,便向这个窗口发送消息。 intWSAAsyncSel
2017-01-26 10:22:02 354
原创 Darwin分析经验
Darwin分析经验当前,伴随着Internet的飞速发展,计算机网络已经进入到每一个普通人的家庭。在这个过程中,一个值得我们关注的现象是:Internet中存储和 传输内容的构成已经发生了本质的改变,从传统的基于文本或少量图像的主页变为大容量、富信息量的流式媒体信息。一份早在1998年提交的研究报告就曾指 出,流式媒体统治Internet的潮流是不可抗拒的,该报告估计到2003年,存
2017-01-25 16:58:38 676
原创 复选下拉框CCheckComboBox
完整代码请到我的资源里面下载#if !defined(AFX_CHECKCOMBOBOX_H__66750D93_95DB_11D3_9325_444553540000__INCLUDED_)#define AFX_CHECKCOMBOBOX_H__66750D93_95DB_11D3_9325_444553540000__INCLUDED_#if _MSC_VE
2017-01-24 11:41:29 5246 2
原创 【Darwin学习笔记】之RTSP连接监听初始化
网上有很多大侠已经对Darwin做了详细的剖析,在下仅本着积累经验的目的,将Darwin的学习过程记录下来,同时与网友们交流学习,今天先来分析下Darwin如果根据配置文件监听RTSP连接的流程。1. Darwin系统初始化,Bool16 QTSServer::Initialize(.....)2. QTSServer::CreateListeners(...)根据本地xml配置文
2017-01-23 20:23:23 473
原创 【Darwin学习笔记】之获取系统处理器数量的方法
阅读Darwin源码的时候看到这个方法,感觉挺有用处,且考虑了多种平台下的实现方式,直接贴代码,以后说不定会用到~单一种平台下的实现方法可能很容易,但是把这些个系统都收集在一起,在一个函数中实现还是极好的【转载请注明出处】:http://blog.csdn.NET/longlong530[cpp] view plain copy prin
2017-01-23 20:20:48 269
原创 【Darwin学习笔记】之RTSPSession点播流程
今天详细的看了下RTSPSession的会话处理代码,该模块主要是Run方法内对会话的状态机进行管理,实现对RTSP会话的处理,我以点播Movie文件夹下的视频文件为例,深入的学习了(Describe、Setup、Play的点播流程),并按照状态机的处理顺序对他们进行一一解析,如下:【转载请注明出处】:http://blog.csdn.NET/longlong5301. 状态机
2017-01-23 20:18:26 585
原创 【Darwin学习笔记】之QTSSReflectorModule的Announce消息处理
RTSP Announce命令是数据源向Darwin服务端主动发起的上报本地媒体sdp信息的命令,在Darwin中处理该命令的函数为QTSSReflectorModule模块的DoAnnounce()函数,下面对该函数的进行剖析:【转载请注明出处】:http://blog.csdn.NET/longlong5301. 判断sAnnounceEnabled是否开启,由以下配置
2017-01-23 20:16:51 298
原创 【Darwin学习笔记】之QTSSReflectorModule的Describe消息处理
版权声明:本文为博主原创文章,未经博主允许不得转载。 对于QTSSReflectorModule里面的Describe消息只处理sdp类型的资源请求,其他类型的比如mov、mp4等资源会跳转到QTSSFileModule里面,其中mp4文件在Darwin源码中点播需要先hint下。如果想在增加多种视频格式那就要对FileModule进行扩展,在我们的项目中就优化了Fi
2017-01-23 20:14:36 317
原创 【Darwin学习笔记】之QTSSReflectorModule的Setup消息处理
版权声明:本文为博主原创文章,未经博主允许不得转载。Setup消息进入到DoSetup函数单独处理,处理流程如下:【转载请注明出处】:http://blog.csdn.net/longlong5301. 根据关键字qtssRTSPReqTransportMode判断是否为推模式,具体isPush值由Setup请求中的mode值有关,mode="receive"
2017-01-23 20:12:17 491
原创 【Darwin学习笔记】之EventThread
【转载请注明出处】:http://blog.csdn.NET/longlong530EventThread负责侦听Darwin系统的Socket事件,包括以下两类, 对于两类事件是分别如何处理的,我们从头开始分析。a) 建立新的RTSP连接请求事件 b) 已有RTSP连接上的RTSP请求消息事件 一. EventThread 的
2017-01-23 20:11:08 339
原创 【Darwin学习笔记】之TaskThread
【转载请注明出处】:http://blog.csdn.NET/longlong530学习TaskThread主要有三个类要关注:TaskTreadPool: 任务线程池TaskThread:任务线程Task: 任务1. TaskThreadPoolDarwin运行着一个或者多个任务(Task)线程,并将他们统一在线程池TaskThreadPo
2017-01-23 20:10:04 522
原创 Task详解
Task类中GetEvents函数返回当前除了kAlive外的所有事件标识,同时清除fEvents中处kAlive之外的所有其他标识。class A{private:public: A() { fEvents = 0; } typedef unsigned int EventFlags; EventFlags fEvents; enum { kAliv
2017-01-23 14:25:03 4288
原创 atomic系列函数
以下均为原子操作。使用了一个全局的锁。extern unsigned int atomic_add(unsigned int *area, int val);extern unsigned int atomic_or(unsigned int *area, unsigned int mask);extern unsigned int atomic_sub(unsigned int
2017-01-23 07:38:43 2066
原创 【数据结构】堆(heap)
1. 概述1.1 性质堆是一种完全二叉树(complete binary tree);若其高度为h,则1~h-1层都是满的。下图[1]给出了完全二叉树、非完全二叉树:从左至右从上至下,从1开始给节点编号。作为完全二叉树,堆满足:(a)节点i的父节点编号为i/2(b)节点i的左右孩子节点编号分别为2*i, 2*i+1
2017-01-22 20:23:53 365
原创 OSHeap详解
OSHeap实际上是一个完全二叉树,再插入和删除的时候都进行了排序。#include "OSHeap.h"#include #include int main(int argc, char * argv[]) { srand(unsigned(time(0))); cout << "===============insert value==============" <
2017-01-22 19:48:50 549
原创 OSQueue用法
#ifndef _OSQUEUE_H_#define _OSQUEUE_H_#include "MyAssert.h"#include "OSHeaders.h"#include "OSMutex.h"#include "OSCond.h"#include "OSThread.h"#define OSQUEUETESTING 0class OSQueue;class OS
2017-01-22 14:46:34 1127
原创 OSRefTable 用法
typedef OSHashTable OSRefHashTable;typedef OSHashTableIter OSRefHashTableIter;class OSRefTable{ public: enum { kDefaultTableSize = 1193 //UInt32 };
2017-01-22 07:41:56 483
原创 C++中友元(友元函数和友元类)的用法和功能
采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和
2017-01-21 08:49:17 296
原创 error LNK2019:无法解析的外部符号 public: void(找前面的函数)
1>paper1.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall Annotate::copy_clean_image(void)" (?copy_clean_image@Annotate@@QAEXXZ),该符号在函数 "void __cdecl mv_MouseCallback(int,int,int,int,void *)"
2017-01-20 20:42:37 1654
原创 RTSP协议学习笔记
第一部分:RTSP协议一、RTSP协议概述RTSP(Real-TimeStream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似。RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色。尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据。
2017-01-20 08:23:39 293
原创 移位运算符
问:计算表达式14 >> 2的值。答:表达式14 >> 2的值为3,因为14(即二进制的00001110)向右移两位等于3(即二进制的00000011)。说白了,就是把要移动的数转换成2进制,右移几位就去掉右边的几位数,左移几位就在右边加几个0,比如14右移2位就是转成二进制变成1110,去掉右边的10,变成11,11转成十进制就是3;左移2位就是111000,转成十进制就是56。
2017-01-19 18:28:13 459
原创 C语言之memcmp函数
【FROM MSDN && 百科】原型: int memcmp(const void *buf1, const void *buf2, unsigned int count);#include比较内存区域buf1和buf2的前count个字节。此函数是按字节比较。Compares the first num bytes of the block of memo
2017-01-19 17:29:59 1509
原创 Darwin中OSRef和OSHashTable类的使用
//哈希表被设计成模版类的形式templateclass OSHashTable {public: OSHashTable( UInt32 size ) //构造函数 { fHashTable = new ( T*[size] );//初始化大小 Assert( fHashTable );
2017-01-19 13:22:34 433
原创 OSHashTable 分析
DSS 定义了几个通用的较为复杂的数据结构,它们都以类的方式封装。这些数据结构不但贯穿于DSS的所有源代码,而且由于其封装的十分好,读者可以在看懂源代码 的基础上很容易的将它们从DSS的工程中抽取出来,构建自己的基础类库,为将来的开发工作打下良好的基础。另外,对这些基础数据结构源代码的研究将提高我 们对于面向对象技术的掌握和领会。最主要的数据结构有四种:哈希表(OSHashTable)、队
2017-01-18 15:23:37 317
原创 Darwin Streaming Server windows系统下安装和配置
一、概要 Darwin Streaming Server简称DSS。DSS是Apple公司提供的开源实时流媒体播放服务器程序。整个程序使用C++编写,在设计上遵循高性能,简单,模块化等程序设计原则,务求做到程序高效,可扩充性好。并且DSS是一个开放源代码的,基于标准的流媒体服务器,可以运行在Windows NT和Windows 2000,以及几个UNIX实现上,包括Mac OS X,Li
2017-01-18 14:03:58 1341 1
原创 live555 实现音视频传输关键
1.fDurationInMicroseconds 设置一定要正确2.fPresentationTime 设置一定要正确
2017-01-10 16:43:23 2377
原创 av_read_frame 读文件注意事项
av_read_frame读取视频固定是一次读取一帧,但是针对音频一次可以读取若干帧音频,因此在live555中fDurationInMicroseconds的赋值切勿认为一次只读取一帧音频来设置该变量值 ,而应该根据前后帧的时间戳差值来计算。
2017-01-10 16:09:59 3727
原创 Linux tcpdump命令详解
简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 实用命令实例默认启动tcpdump
2017-01-10 14:52:23 259
原创 Linux的sleep()和usleep()的使用和区别
1、将线程以秒为单位挂起 unsigned sleep(unsigned seconds); 头文件:#include 2、将线程以微妙为单位挂起 void usleep(int micro_seconds); 头文件:#include 换算方式: 1毫秒=1000微妙
2017-01-10 14:47:37 675
原创 计算 音频帧的播放时间
采样频率是指将模拟声音波形进行数字化时,每秒钟抽取声波幅度样本的次数。。正常人听觉的频率范围大约在20Hz~20kHz之间,根据奈奎斯特采样理论,为了保证声音不失真,采样频率应该在40kHz左右。常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,如果采用更高的采样频率,还可以达到DVD的音质对采样率为44.
2017-01-10 14:45:20 586
原创 Linux下vim树形目录插件NERDTree安装
安装方法很简单,先把压缩文件下载下来,解压后将plugin目录下的NERD_tree.vim拷贝~/.vim/plugin以及doc目录下的NERD_tree.txt拷贝到~/.vim/doc.wget http://www.vim.org/scripts/download_script.php?src_id=17123 -O nerdtree.zipunzip nerdtree.zip
2017-01-10 10:48:36 1100
原创 c++开源日志库log4cplus
1. 简介log4cplus是C++编写的开源的日志系统,The purpose of this project is to port the excellentLog for Java (log4j)logging library to C++。log4cplus具有灵活、强大、使用简单、多线程安全的特点,实在是杂牌军、游击队的福音。2. 安装使用(Linux)log4c
2017-01-09 21:14:20 560
原创 vim复制代码包含注释时格式会乱掉的解决办法
每次复制代码时,如果代码里有 // 这样的注释就容易让格式乱掉,通过下面的设置就可以避免这种情况。粘贴代码时取消自动缩进VIM在粘贴代码时会自动缩进,把代码搞得一团糟糕,甚至可能因为某行的一个注释造成后面的代码全部被注释掉,我知道有同学这个时候会用vi去打开文件再粘贴上去(鄙人以前就是这样),其实需要先设置一下set paste然后再进入插入模式粘贴,代码就不会被自
2017-01-09 20:47:36 463
原创 在Linux上的使用开源C++日志库---log4cplus
1.简 介 log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License保护。作者是Tad E. Smith。 log4cplus具有线程安全、灵活、以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序调试、运行、测试、和维护等全生命周期;你可以选择将信息输出到屏幕、文件、NT event l
2017-01-09 16:04:33 3742
原创 vim强大探究之光标移动
废话不多说,直接进入主题,现在在看“byte of vim”,记录强大的命令,一步一步的进阶,希望成为一个Vimer! 1、简单方向移动 (最基本的移动命令,类似你键盘的左右上下http://write.blog.csdn.NET/postedit方向键,但是功能却是异常的强大!) ps:如果你是vim新手,希望你能边看边操作,如果你在windows环境,你可
2017-01-09 14:43:06 285
zlmediakit-windows zlmediakit-windows zlmediakit-windows
2024-06-18
libuvc 相关代码 k230
2023-12-22
live555 vs2022
2023-11-22
多分辨率264,265文件多分辨率264,265文件多分辨率264,265文件多分辨率264,265文件多分辨率264,265
2023-07-05
macbook 2017 bootcamp win10 安装
2023-01-29
绘制流程图工具 绘制流程图工具
2022-11-06
音频文件数组转成c语言的数组
2022-09-08
数字音频接口(I2S,PCM,TDM,PDM)数字音频接口(I2S,PCM,TDM,PDM)数字音频接口(I2S,PCM,TDM
2022-06-24
音频测试文件,各种格式集合 wav pcm mp3
2022-04-28
cmake笔记 cmake 笔记 cmake笔记 cmake
2022-02-01
qt 多窗口yuv零拷贝渲染.rar
2021-11-26
drm-example.zip
2021-11-12
Jz2440_驱动二期笔记.zip
2021-11-02
u-boot-jz2440源码
2021-10-31
ffmpeg-windows4.3.1源码静动态库.zip
2021-01-05
webrtc ulpfec无法全部还原丢失包问题
2020-09-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人