- 博客(153)
- 资源 (40)
- 问答 (2)
- 收藏
- 关注
原创 unsigned long long 大小端互转
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <netinet/in.h>#include <arpa/inet.h>#define ntohll(src) convert(src)#define htonll(src) convert(src)inline unsigned long long conve
2017-12-01 13:50:42 2986 1
转载 websocket头解析
一、帧结构图及含义0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+——-+-+————-+——————————-+|F|R|R|R| opcode|M| Payload len
2017-12-01 11:04:35 4577
转载 RTP打包H264
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <memory.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/socke
2017-07-17 09:27:22 886
转载 avi 格式解析
分析工具 RiffPad http://download.csdn.net/detail/codeheng/9793505AVI:Audio/Video Interleaved(视音频交织),用于采集、编辑、播放的RIFF文件。由Microsoft公司1922年11月推出,用于对抗苹果Quicktime技术,AVI现在还在被广泛使用。 RIFF:Resource Interchange File
2017-03-25 15:55:43 1528
原创 分离h265/h264裸流的帧
1、此模块分离h265/h264裸流的帧#include <sys/types.h>#include <sys/stat.h>#include <errno.h>#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <limits.h>#include <string.h>#include <assert.h>
2017-03-24 14:42:33 3189 2
原创 利用ffmpeg移植到嵌入式计算poc
利用ffmpeg移植到嵌入式计算poc1、修改 \ffmpeg-3.2.4\libavcodec\hevc.c 下方的函数需要屏蔽一些代码static int decode_nal_unit(HEVCContext *s, const H2645NAL *nal){ HEVCLocalContext *lc = s->HEVClc; GetBitContext *gb =
2017-03-24 14:06:59 1514
原创 ffmpeg 编译安装
1、下载ffmpeg,解压tar -jxvf ffmpeg-3.2.4.tar.bz2cd ffmpeg-3.2.4./configure --enable-static --disable-yasm //生成makefile 用静态库的形式编译make //生成ffmpeg ffprobe ffserver等可执行文件 大概要编译20分钟make examples //编译 ffmpeg-
2017-03-23 17:35:51 689
转载 wsdl 详解
WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程过程调用)。WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的服
2017-01-19 11:20:11 1032
原创 分解264/265裸流的帧
也可直接分解avi文件格式的#include <sys/types.h>#include <sys/stat.h>#include <errno.h>#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <limits.h>#include <string.h>#include <assert.h>int s
2017-01-04 11:13:11 1287
转载 H265关于RTP封包
首先来介绍下h265(HEVC)nal单元头,与h264的nal层相比,h265的nal unit header有两个字节构成,如下图所示:从图中可以看出hHEVC的nal包结构与h264有明显的不同,hevc加入了nal所在的时间层的ID,取去除了nal_ref_idc,此信息合并到了naltype中,通常情况下F为0,layerid为0,TID为1。 nal单元的类型有如下几种:[cpp
2017-01-03 14:47:17 7448
原创 线程cpu跟踪
1、在每一个线程的开始调用THREAD_REGISTER(), 退出调用THREAD_UNREGISTER()#define THREAD_REGISTER() do\{\ char path[64];\ snprintf(path, sizeof(path), "/tmp/thread_%s_%ld", __FUNCTION__, syscall(SYS_gettid));\
2016-08-26 16:45:54 661
原创 编译内核
1、 make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- hi3516a_mini_defconfig //ls arch/arm/configs/ -l 会自动到此目录寻找相应的config(hi3516a_mini_defconfig)2、make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- uImage
2016-07-28 19:22:45 610
原创 检测内存泄漏malloc模块
1)实际应用中,很多地方用到malloc动态申请内存,其实频繁使用应该没有什么碎片之类的影响,linux会帮我们优化,只要我们使用后正常free就ok了。2)检测思路是每次malloc申请的时候记录一下此时申请的位置(函数名,行号),在/tmp/下建立以位置等信息命名的空文件。free时候再把相应的文件删除掉。3)这里用到一个小技巧,每次malloc的时候多申请一点内存,用作记录内存信息头。4)把对
2016-07-18 16:10:39 1401
原创 一个通用链表模块(C语言)
1)把所有DBG和ERR改成printf; 2)COMMOM_Malloc改成malloc; 3)COMMON_Free改成free; 4)编译Ok;#ifndef __LIST_H__#define __LIST_H__#ifdef __cplusplus#if __cplusplusextern "C"{#endif#endiftypedef void* LIST_MGR_HA
2016-07-18 10:11:37 1160
原创 live555编译移植
1、在官网www.live555.com下载最新的源码包 2、解压进入livedrwxrwxrwx 1 root root 4096 Jul 12 13:02 BasicUsageEnvironment-r-xr-xr-x 1 root root 433 Jun 26 17:19 config.aix-r-xr-xr-x 1 root root 429 Jun 26 17:19
2016-07-12 14:56:20 1798
原创 onvif框架生成2
1、下载好gsoap库和wsdl文件,建立目录结构如图 2、进入generate_onvif_framework建立三个文件 #makefilePWD=$(shell pwd)SRC=$(wildcard $(PWD)/*.c)OBJ=$(SRC:%.c=%.o)COMPILE=CPP=$(COMPILE)gccAR=$(COMPILE)arCFLAGS=-Wall -ffuncti
2016-07-11 10:42:30 2676 3
原创 onvif设备发现
1)由onvif官方的wsdl链接生成onvif.h头文件wsdl2h -c -s -t typemap.dat -o onvif.h http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl2)soapcpp2.exe把onvif.h生成对应框架代码soapcpp2.exe -2 -c onvif.h -I..\gsoap
2016-07-06 17:37:11 4253 1
原创 onvif框架生成
一、下载gsoap 二、进入gsoap-2.8\gsoap\bin\win32, 并把gsoap-2.8\gsoap\typemap.dat拷贝到gsoap-2.8\gsoap\bin\win32下 1)由onvif官方的wsdl文件生成onvif.h头文件wsdl2h -c -s -t typemap.dat -o onvif.h http://www.onvif.org/onvif/ver1
2016-07-06 17:11:30 1078
原创 减少可执行程序的大小
一、背景 可执行程序需要链接一些静态库,但是静态库中的函数并没有全部使用,只用了其中的几个,但是系统默认会自动把整个静态库全部链接到可执行程序中,造成可执行程序的大小大大增加,浪费了flash空间和内存空间。二、方法 因为GCC链接操作以section作为最小的处理单元,只要一个section中有某个符号被引用,该section就会被加入。 如果我们的某个.c程序中所有
2016-07-01 16:35:08 5320
转载 二值图像连通域标记
一、前言二值图像,顾名思义就是图像的亮度值只有两个状态:黑(0)和白(255)。二值图像在图像分析与识别中有着举足轻重的地位,因为其模式简单,对像素在空间上的关系有着极强的表现力。在实际应用中,很多图像的分析最终都转换为二值图像的分析,比如:医学图像分析、前景检测、字符识别,形状识别。二值化+数学形态学能解决很多计算机识别工程中目标提取的问题。二值图像分析最重要的方法就是连通区域标
2016-06-26 10:38:36 3891
原创 yuv二值化操作
UV是色差分量,UV为0就会全是绿色,全为0x80的时候才能看到灰度图。#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>int show_hex(char* begin, int len){ int i = 0; for (i = 0; i < len; i++) {
2016-06-25 21:34:19 2591 2
原创 字模bitmap使用实例
#ifndef __FONT_H__#define __FONT_H__#ifdef __cplusplus#if __cplusplusextern "C"{#endif#endif#define DBG(fmt...) do\{\ printf("%s: %d: ", __FUNCTION__, __LINE__);\ printf(fmt);\}whil
2016-06-16 10:47:55 923
转载 shell中$(( ))与$( )还有${ }的区别
$( )与` `(反引号)在bash shell中,$( )与` `(反引号)都是用来做命令替换(command substitution)用的。$ echo the last sunday is $(date -d "last sunday" +%Y-%m-%d)得到上一星期天的日期用$( )的理由1. ` `很容易与' '(单引号)搞混。有时在一些奇
2016-05-31 21:44:31 399
转载 PELCO-D与PELCO-P协议
PELCO-D与PELCO-P协议编辑PELCO-D:数据格式:1位起始位、8位数据、1位停止位,无校验位。波特率:2400B/S命令格式:字节1字节2字节3字节4字节5字节6字节7同步字节地址码
2016-05-26 18:14:33 2283
转载 getopt、getopt_long、getopt_long_only
平时在写程序时常常需要对命令行参数进行处理,当命令行参数个数较多时,如果按照顺序一个一个定义参数含义很容易造成混乱,而且如果程序只按顺序处理参数的话,一些“可选参数”的功能将很难实现。在Linux中,我们可以使用getopt、getopt_long、getopt_long_only来对这个问题进行处理。[cpp] view plain copy
2016-05-23 17:04:02 397
原创 debug打印,后台跑,telnet上去也能看
#include #include #include #include #include #define NONE "\033[m"#define RED "\033[0;32;31m"#define LIGHT_RED "\033[1;31m"#define GREEN "\033[0;32;32m"#define LIGHT_GREEN "\033[1;32m"#defi
2016-05-23 11:36:54 2068 1
原创 shell脚本dos问题
1、很多时候我们需要在windows编辑脚本文件,但是在Linux执行不了,原因是window下的是dos格式的文本,Linux下是unix文本2、用vi转格式:set ff=unix或者:set fileformat=unix//保存:wq
2016-05-18 16:52:36 1083
原创 移植speex库
1、下载speex源代码http://download.csdn.net/detail/codeheng/95238562、配置makefile./configure --host=arm-linux CC=arm-linux-gcc --enable-static --disable-shared3、make4、xx\speexdsp-1.2rc3\libspeexdsp
2016-05-18 15:46:17 3287 1
原创 wav 文件头解析
#include #include #include #include #include #include //wave文件头 typedef struct WaveHeader { unsigned char riff[4]; //资源交换文件标志 unsigned long size; //从下个
2016-05-18 13:44:03 1063
原创 Linux 进度条
#include #include #include #include int progress_bar(int precent) { if (precent 100) { return -1; } char str[32]; int bar = sizeof(str) * precent / 100; memset(str, ' ', sizeof(str
2016-05-11 18:15:29 414
转载 G.711 u律;A律 压缩算法
G.711 u律;A律 压缩算法 [cpp] view plain copy print?/********************************************************************** * g711.c * u-law, A-law and linear PCM conve
2016-05-06 15:33:19 5885
转载 G.711编解码原理
简介G.711是ITU-T标准音频扩。它主要是在使用电话。该标准于1972年。它的正式名称发布的用法是脉冲编码调制(PCM语音频率)。它在许多技术的要求的标准,例如在H.320和H.323规格。它也可以用于传真在IP网络上的通信(如在定义T.38规范)。G.711,也被称为脉冲编码调制(PCM),是一种很常用的波 形编解码器。G.711是窄带音频编解码器,可提供长途电话质量的音频,
2016-05-06 14:32:10 11113
转载 G.711编码原理及代码
最近看语音编码,发现网上大都只给出了G711的代码,确没有介绍原理,尽管很简单,但直接看代码也是有点摸不着。下面找到了原理进行简要的叙述,并给出了在网上找到的代码。1.介绍:G.711也称为PCM(脉冲编码调制),是国际电信联盟订定出来的一套语音压缩标准,主要用于电话。它主要用脉冲编码调制对音频采样,采样率为8k每秒。它利用一个 64Kbps 未压缩通道传输语音讯号
2016-05-06 14:29:18 3981
转载 计算G711语音的打包长度和RTP里timestamp的增长量
如何计算G711语音等的打包长度和RTP里timestamp的增长量一般对于不同的语音有不同的打包周期,而不同的打包周期又对应着不同的timestamp in RTP那么是如何计算的呢,我们通过G711举个例子G711的打包周期分为10ms,20ms,30ms,sample rate是8000,速率是64kbit/s64kbits,意味着每秒发送64000比特
2016-05-06 10:06:47 1628
转载 sed 文本替换
调用sed命令有两种形式:sed [options] 'command' file(s)sed [options] -f scriptfile file(s) 删除:d命令 $ sed '2d' example-----删除example文件的第二行。$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。
2016-04-29 14:00:36 688
转载 shell 函数返回值问题
方法一: 使用全局变量[html] view plain copy g_result="" function testFunc() { g_result='local value' } testFunc echo $g_result 方法二: 把shell函数作为子程序
2016-04-28 09:01:38 1538
原创 arping IP冲突问题
#include #include #include #include #include #include #include #include #include #include #include #include #include #include "random_ip.h"#define IF_NAME "eth0"//ARP消息包结构typedef st
2016-04-25 10:08:19 1518
转载 shell 编程空格注意事项
1.定义变量时, =号的两边不可以留空格.eg:gender=femal————rightgender =femal———–wronggender= femal———–wrong2.条件测试语句 [ 符号的两边都要留空格.eg:if [ $gender = femal ]; then——-right.echo “you are femal”;fiif[
2016-04-18 09:47:38 3230
window下NFS服务器
2014-11-13
SecureCRT.7.3.keygen.rar
2017-10-24
sourceinsight4.0_pojie_perfect.zip
2017-10-24
tinyxml_2_6_2.zip
2015-02-12
如何实现嵌入式网卡限制带宽/限速方法
2018-02-10
两个线程都通过一个socket进行send是否需要互斥锁?
2015-03-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人