自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Up to Me

那一年,我也十七岁

  • 博客(105)
  • 资源 (8)
  • 收藏
  • 关注

翻译 【译】ARM GCC Inline Assembler Cookbook

关于本文档用于 ARM RISC 处理器的 GNU C 编译器提供了将汇编语言代码嵌入到 C 程序中。这个很酷的特性可以用来手动优化软件的关键部分或者使用 C 语言中无法使用的处理器指令。这里假设您熟悉编写 ARM 汇编程序,因为这不是一个 ARM 汇编程序编程教程。 它也不是C语言教程。所有示例都在 GCC version 4 上测试通过,但是大多数也能在更早的版本上运行。GCC asm 语句我们先从一个简单的示例开始。 下面的语句可以像其他C语句一样包含在代码中。/* NO

2022-04-28 14:10:17 391

原创 CMake 跳过编译器检查的方法

1. 直接跳过所有编译器检查```shellSET(CMAKE_C_COMPILER_WORKS TRUE)SET(CMAKE_CXX_COMPILER_WORKS TRUE)```2. 跳过可执行文件rdynamic 检查```shellSET(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")```

2021-12-20 14:26:23 3481

原创 CMake 编译静态库的同时打包所有依赖静态库的方法

在 CMakeLists.txt 末尾添加set(libalgo ${PROJECT_SOURCE_DIR}/libs/armv8-64/libalgo.a)set(libftkmath ${PROJECT_SOURCE_DIR}/libs/armv8-64/libftkmath.a)add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_AR} x ${l

2021-10-25 19:37:34 4220

原创 CMake 使用 strip 减小so(动态)库的文件体积

在CMakeLists.txt 文件末尾添加project(xxx)...target_link_libraries( ${PROJECT_NAME} ...)add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_STRIP} "$<TARGET_FILE:${PROJECT_NAME}>" COMMENT "Strip

2021-09-26 16:08:12 1585

原创 编程拾遗

算法、技巧的文章太多,讲一点朴素的Coding方法。命名如何命名,讲这个的文章也特别多。驼峰还是下划线方式,这个其实没有那么重要,关键还是可读性和代码风格的统一。我这里聊一下我自己的经验。类型、结构体、枚举的命名使用名词。 越详细越好,不要怕太长。 不是常用词的话,不要用缩写。变量、参数的命名,词能达意即可。变量、参数一般可以分作三类:数值, 比如xxxCnt,xxxNum,xxxVal,xxxName,xxxPath,注意尽量使用名词。 布尔值(bool),比如 isX

2021-05-07 14:52:28 128 1

原创 C++ 使用强制类型转换引入临时变量的问题(续)

今天没事回顾了一下以前写的东西,发现这一篇写的模棱两可https://blog.csdn.net/niino/article/details/6286558时隔多年,再来回来看这篇文章只能说还是太年轻,看待问题太片面了问题确实是出在强转上,而且也确实会产生一个临时变量。如何证明产生了临时变量?只需要将 const int &tt 的 const 修饰符去掉,就编译不过了,这时候会报错Non-const lvalue reference to type 'int' cannot b

2021-03-31 18:22:10 847

翻译 C++的单例模式为什么不能是线程安全的

原文:DDJ_Jul_Aug_2004_revised.pdf没有按照原文一字一句的排版和翻译,总体内容都是在的,原文见附件。首先,先简单讲一下什么是DCLP。DCLP是 double check locking pattern的缩写,它的出现旨在为共享资源(比如单例模式)的初始化添加高效的线程安全性。单例模式,分为 lazy-initialization 和 eager-initialization,两种创建静态对象的方式。lazy-initialization 就是在调用 getIns.

2021-01-15 14:53:44 679 1

原创 WSL通过cmake生成windows路径的compile_commands.json

最近新起了一个项目,准备全盘使用cmake,放弃之前用的 Android.mk,于是遇到一个问题,那就是直接在WSL下使用cmake生成的compile_commands.json中,路径都是linux形式的,windows 的vscode C/C++ 插件无法解析到正确的路径。那么就想到通过 cmd.exe 来在执行windows的cmake。shell 脚本代码如下:CMAKE_OPTIONS='-DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DANDROID_ABI=arm

2021-01-06 17:09:27 1792 1

原创 WSL 中执行windows脚本的方法

/mnt/c/Windows/System32/cmd.exe /C ndk-build.cmd

2020-09-14 19:03:55 1240

原创 win10中wsl如何配置文件(夹)名区分大小写

win10版本1803,内部版本17134.885由于最近卸载了以前安装的 Legacy 版本的 wsl(ubuntu 16.04),然后重新安装了 ubuntu 18.04. 之后偶然发现居然只在wsl的根目录下创建的文件(夹)区分大小写,而 /mnt/c 和 /mnt/d 都不能区分大小写了。网上的文章大多是让大家使用 fsutil 工具来修改CaseSensitive Flag,但是这样并...

2019-07-25 21:00:24 3089 1

原创 pthread优先级的实践与结果分析

更新额外信息:由于以下试验测试环境为 PC 以及 Android O 的手机,由于Android 在9.0 之前并未在内核真正实现PTHREAD_EXPLICIT_SCHED 的设置,因此在线程优先级是否有效上的结论并不准确。目前可以知道的是,在Android P之前的版本上,native 层的线程优先级设置并不会有预期的效果。而由于我手上目前没有 root 的 Android P 设备,也...

2017-04-05 21:28:37 1221 3

原创 TI 8127 Appro 框架简析

这也许是我接触的最后一个嵌入式项目了Appro框架是Ti发布的

2014-08-21 11:45:12 2842

原创 多路视频策略显示

最近在ubuntu 12.04 上做了一个基于SDL 1.3版本的多路视频按策略显示的程序,最早是想通过寻找到某种规律来通过程序内部自己来决议显示策略,后来发现,还是使用配置文件比较好。这个项目接触到的新东西不太多,最关键的几个点:1. 串口读写    打开设备,配置参数,write/read,需要注意的是,串口读写不能简单的只调用一次read或者write,要判断返回值,确保读写内容完整

2013-10-29 15:06:59 2455

原创 最近工作总结

最近搞了一些多线程的网络编程,用到的一些东西在这里总结一下.1. socket的阻塞与非阻塞, 封装了两个安全发送和接收的函数,不过在阻塞模式下,还真没发现收不完或者发不完,而socket还健在的情况.另外,对于大家为何在TCP连接中诟病非阻塞方式socket,我不太理解,这个项目其实对于数据的实时性要求是相当高的,甚至有考虑过使用UDP,如果使用阻塞发送,那么就是将延时因素完全交给操作系统掌

2012-09-14 23:37:16 908

原创 多线程socket编程的2B设计

最近做一个local socket(domain socket)服务器,来进行进程间通信,使用线程池管理多个线程与不同的客户端连接...在设计QUERY_CAPABILITY(能力查询)的时候,犯了一个2B的错误...现在假设我有两个客户端C1, C2, 服务器S分别启动两个线程T1, T2来处理与他们的通信此时C1发送命令QUERY_CAPABILITY到T1, T1做的决策是调用线

2012-06-04 16:57:12 1354

原创 H264 NALU slice 模式

slice模式下一个完整的NALU需要判断每一个slice包得第5个字节与上0x80是否等于80.还是举个例子来说明好了....比如:第一个包 00 00 00 01 65 9A …第二个包 00 00 00 01 65 00 ...第三个包 00 00 00 01 65 01

2011-07-28 09:24:04 5377 10

原创 最近的一些心得

1.fork()函数   以前了解过一些,但是搞得很糊涂,今天又花了2个小时来看,终于搞清楚了.   在调用fork()后,系统会立即copy一份当前进程到内存中作为子进程运行.而这两份内存,并没有任何共享资源,只有通过pid(fork()的返回值)来判断哪一个是父进程(pid等

2011-07-20 18:49:49 752

原创 Android Audio HAL層的研究

Android 對於聲音的處理分四層:1.java-JNI2.libmedia中的AudioSystem,AudioStreamIn,AudioStreamOut3.libmedia中的AudioFlinger,IAudioxxx系列4.libaudio,HAL層,在S5PV210上是對ALSA的封裝.既然三星已經做了ALSA的封裝,那就直接在HAL層下手吧,只是參數的值和參數的類型,需要研究

2011-06-01 12:40:00 3210 4

原创 畫中畫相關

<br />很久沒來寫點什麽了...因為一直都在忙啊<br />三星搞個NV12T的YUV格式,要搞死人了啊...終於在今天是徹底弄懂了...<br />但是還不能熟練的操作<br />另外...Android他喵的就不支持畫中畫啊~~<br />在視頻圖層上可以疊加一層靜態圖片,但是兩個動態視頻圖層,他就不行啊~~<br /> <br />直接操作解碼出來的數據,又有參考幀的問題啊~~每次解碼器解碼會使用上一(或者幾)幀的數據作為參考啊...<br />memcpy上去的圖像邊緣模糊不說,如果有背景物體從

2011-05-24 17:16:00 951 7

原创 放棄OpenCore,還是自己設計框架好

<br />    __

2011-04-28 09:48:00 1111

原创 C++ 使用强制类型转换引入临时变量的问题

<br />这两天发现Android中java上层传递下来的ISurface,我在底层居然画不出图像,但是如果我在底层自己创建ISurface却是可以的...<br />这让我和我同事纠结无比,四处找原因...<br /><br />由于这个现象很像是因为上层传递下来的ISurface并不是上层所管理的那一个...所以我把怀疑方向放在了接口传递参数的时候...当然了,现在看来我所遇到的这个问题并非接口传递参数导致的.<br />其中很多地方有返回sp<T>& 的函数调用,并且返回值又是一个强制类型转换的结

2011-03-29 16:39:00 3023 3

原创 近期工作经验总结

<br />最近在Android下层做rtp发送的模块,算是工作以来,最正规的coding mission吧<br />虽然代码不多,但是让我对于项目的开发略有一些心得.<br />从我的感觉来看,最重要的就是一个整体的规划,首先定义与android层的接口,接口调用一旦定义下来,<br />那么后期的coding工作,都将以此为中心,所有功能模块的功能实现,都需要考虑接口的问题.<br /> <br />但是,这次的工作也完成的并不算完美,整体框架是依托于上层的框架来的,但是上层框架并未决定下来,所以到最

2011-03-05 12:16:00 698

原创 Via OpenCore decoding H.264 ES stream(RTP) from net

Working on

2011-01-28 11:49:00 1413

原创 Via OpenCore FileOutputNode getting RAW H.264 data

Success!

2011-01-26 16:38:00 1116 1

原创 Android 2.2 Froyo 上的VideoCamera 数据流程

图画得很山寨... 我也是图方便。

2011-01-18 16:30:00 1206

原创 Sipdroid 简要评估

<br /><br />1.音频格式:<br />  G722 HD Voice (64kbit) - only over WLAN and 3G (requires paid account)<br />  PCMA (64kbit) - only over WLAN and 3G<br />  PCMU (64kbit) - only over WLAN and 3G<br />  speex (11kbit) - always try<br />  GSM (13kbit) - always try<

2011-01-12 15:16:00 1976 2

原创 pv210+Froyo

总算拿到三星pv210的开发板了,迫不及待的翻看了一下光盘上的Froyo的源代码。唔,编解码这一块居然是直接copy的pc110的代码,估计是把pc110上external/opencore 文件夹直接复制过来的=.= 其主要是在external/opencore/codecs_v2/omx/目录下新做了5个component,"omx_mfc_h264","omx_mfc_h264enc","omx_mfc_m4v","omx_mfc_m4venc","omx_mfc_wmv"。在实现硬解的方式上居然和我

2011-01-06 14:53:00 1448 15

原创 Android 1.5 告别篇

     唉,为了在上Android 2.2后能够轻松一些,花了近两个月时间在1.5上完善前一个项目的移植,虽然新项目的开发板和系统版本都换了,但是OpenCore的框架,OpenMAX的框架还是不变的...不过,Android 2.2已经开始使用stagefright了,Android 2.3 就完全用stagefright替换掉OpenCore了,怎么想,都觉得这段时间的工作没有太多的成就.     Android 1.5虽然做了libopencoremp4.so,但是其实他只支持.3gp的本地文件播放

2010-12-29 11:12:00 1113 1

转载 悲催的程序员,以及程序员的悲催

<br />原文地址:http://blog.csdn.net/Oneway102/archive/2010/12/20/6086741.aspx<br /> <br /><br />我尽量用平和一点的口吻跟你说说关于程序员的那点事儿。<br />1.<br />我在一个叫摩托罗拉的公司干过,那地方有50%的人整天干的事情就是催另外25%的人没完没了的解剩下那25%的人造成的bug。我是个程序员,每天敲敲打打,哪天电脑崩溃了你会发现我这辈子啥都没留下。大多数人甚至都没有想过我们是怎么把手机捣鼓出来的,包括是

2010-12-22 17:52:00 588

转载 程序员阿士顿的故事

原文地址http://www.zhuoqun.net/html/y2010/1565.html前几天有人在 Stack Exchange 上提了一个问题 How can a new programmer impress the software engineer (boss)?(作为新手程序员如何给软件工程师出身的老板留下好印象?),Joel Spolsky(Joel on Software 的主人,《软件随想录》的作者) 看到了这个问题,他没有正面回答,而是在下面讲了悲催的程序员阿士顿的故事。我很喜欢这个

2010-12-22 17:50:00 771

原创 Android 文件解析->解码->输出 的个人分析

花了一个月的时间熟悉Opencore和OpenMax,又花了近半个月,来研究这玩意儿,终于有了一些结论了.在这里记录下来,帮助后来者,更重要的是怕自己以后忘记...以下分析适用与.3gp文件的播放,Android版本为1.5...暂时还有几个地方没有弄清楚,一个是Mp4ParserNode如何将parse(解析)后的数据向下交给解码Node,另一个是解码出来的OutputBuffer是如何send到显示输出的地方,这两处,代码中都使用的PVMFPortInterface* 来完成的.如果以后能够完成,我会来

2010-12-15 18:05:00 1106

原创 函数指针.回调函数.学习

<br />最近看Android代码,发现很多回调函数的使用,由于本来对回调函数的不熟悉,感觉很生涩.于是自己写了几行代码来熟悉熟悉.<br />回调函数首先就得有一个函数指针.<br />typedef void (*callback_fun)(char *ptr); <br /> <br />其次,得有供函数指针指向的函数<br />void output_int(char *x){ cout << "output_int:" << x << endl;} <br />void out

2010-12-10 17:12:00 945

原创 Android 2.3 发布

<br />昨天Android 2.3 发布,听说多媒体框架完全弃用了OpenCore...<br />Shit! 应该是换用straightfright 了,现在还拿不到源代码,具体还不清楚...<br /> <br />哎,不知道使用android进行多媒体开发的公司的成本压力,能不能暂缓用户们升级新系统的需求啊...

2010-12-08 11:31:00 614

原创 Android视频文件格式解析相关分析

引用:http://blog.csdn.net/wstarx/archive/2008/12/17/3541458.aspx目录结构OpenCore的代码在以下目录中:external/opencore/。这个目录是OpenCore的根目录,其中包含的子目录如下所示: * android:这里面是一个上层的库,它基于PVPlayer和PVAuthor的SDK实现了一个为Android使用的Player和Author。 * baselibs:包含数据结构和线程安全等内容的底层库

2010-12-06 17:30:00 2385 2

原创 随笔

就目前来看,我觉得目前的研究方向是有问题的...目前的共识是:做硬件加速,必然要做HAL层.但是分歧的地方在于,HAL层的范围到底如何界定.我个人持的观点是,HAL层仅限于hardware/libhardware/include/hardware/目录下,参考http://my.unix-center.net/~Simon_fu/?p=630但是,也有其他的观点,并且让我暂时找不到反驳的地方,就是HAL层不仅在上面的目录下,还包括omx的component和opencore的node,参考http://bl

2010-12-03 10:16:00 662

原创 .3gp 文件播放初窥

近日在同事的帮助下,写了一个最简单的播放器apk,当然,是播放视频的,唔,没想到代码量真是少...package VideoPlayer.norz;import android.app.Activity;import android.graphics.PixelFormat;import android.media.AudioManager;import android.os.Bundle;import android.view.Menu;import android.view.Me

2010-12-02 09:58:00 846

原创 The relationship between OpenCore and OMX

OpenCore does not use the OpenMax component interface natively.Support for OpenMax codecs comes through an adapter node.On Jan 20, 1:55 am, Sachin pandhare wrote:> Hi Dave,> Could you please elaborate on "OpenCore is not based on OMX"?> Thanks,

2010-11-29 14:39:00 821

原创 live555 在网络异常断开后卡死的问题

<br /><br /> <br />如上图,只需要在GroupsockHelper.cpp中的select加上一个额外的时间判断,即可.如果传递进来的时间为null,那么自己加上超时时间

2010-11-24 10:31:00 3871 1

转载 Linux系统当前可用内存

<br />你可以在Linux中,敲入free命令获得当前系统的内存使用情况。<br />#busybox free<br />total used free shared buffers<br />Mem: 55636 52808 2828 0 3132<br />Swap: 0 0 0<br />Total: 55636 52808 2828<br />当我满心欢喜的敲入上面的命令时,收到的却是一阵阵的冷汗,2828k,我的系统只剩下了2M多的内存,系统还能跑吗,是不是命令有错误!!!<br />让我们

2010-09-19 09:47:00 4202

原创 怪事

这两天发现,修改了live555库之后,重新编译uml后,添加在库中的调试信息无法被打印出来...今天才找到原因,uml的Makefile是从../lib路径下去找库文件,而修改了之后的BasicUsageEnvironment生成的libBasicUsageEnvironment.a是在其本身路径下,所以我想,直接将其复制到../lib下应该就可以了吧?可是复制过来后,在uml中make会报错... skipping incompatible libBasicUsageEnvironment.a when

2010-09-15 16:45:00 581

Windows 空白图标资源 blank.ico

Windows 空白图标资源,blank.ico,windows系统资源,通过修改注册表,去除windows图标箭头

2019-06-10

H.264-ES H.264裸数据

H.264-ES H.264裸数据 通过Android获取,编码器为三星提供

2011-01-27

The 3G IP Multimedia Subsystem (IMS) 3rd Edition

The 3G IP Multimedia Subsystem (IMS) 3rd Edition

2010-06-24

SIPpGUISetup.exe

SIPpGUI版,使用FrameWork库

2010-06-23

PDF-XChange_Viewer_2.0.46.0_Special

艾伦家园破解的PDF阅读、编辑器,功能强大,无需注册

2010-06-23

SIP协议RFC3261

SIP协议的详细介绍,RFC 3261技术文档

2010-06-23

Understanding SIP Servlet 1.1

最新Sip Servlet API讲解与示例

2010-06-23

空空如也

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

TA关注的人

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