- 博客(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
423
原创 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
3920
原创 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
4397
原创 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
1694
原创 编程拾遗
算法、技巧的文章太多,讲一点朴素的Coding方法。命名如何命名,讲这个的文章也特别多。驼峰还是下划线方式,这个其实没有那么重要,关键还是可读性和代码风格的统一。我这里聊一下我自己的经验。类型、结构体、枚举的命名使用名词。 越详细越好,不要怕太长。 不是常用词的话,不要用缩写。变量、参数的命名,词能达意即可。变量、参数一般可以分作三类:数值, 比如xxxCnt,xxxNum,xxxVal,xxxName,xxxPath,注意尽量使用名词。 布尔值(bool),比如 isX
2021-05-07 14:52:28
146
1
原创 C++ 使用强制类型转换引入临时变量的问题(续)
今天没事回顾了一下以前写的东西,发现这一篇写的模棱两可https://blog.youkuaiyun.com/niino/article/details/6286558时隔多年,再来回来看这篇文章只能说还是太年轻,看待问题太片面了问题确实是出在强转上,而且也确实会产生一个临时变量。如何证明产生了临时变量?只需要将 const int &tt 的 const 修饰符去掉,就编译不过了,这时候会报错Non-const lvalue reference to type 'int' cannot b
2021-03-31 18:22:10
889
翻译 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
719
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
1917
1
原创 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
3197
1
原创 pthread优先级的实践与结果分析
更新额外信息:由于以下试验测试环境为 PC 以及 Android O 的手机,由于Android 在9.0 之前并未在内核真正实现PTHREAD_EXPLICIT_SCHED 的设置,因此在线程优先级是否有效上的结论并不准确。目前可以知道的是,在Android P之前的版本上,native 层的线程优先级设置并不会有预期的效果。而由于我手上目前没有 root 的 Android P 设备,也...
2017-04-05 21:28:37
1257
3
原创 多路视频策略显示
最近在ubuntu 12.04 上做了一个基于SDL 1.3版本的多路视频按策略显示的程序,最早是想通过寻找到某种规律来通过程序内部自己来决议显示策略,后来发现,还是使用配置文件比较好。这个项目接触到的新东西不太多,最关键的几个点:1. 串口读写 打开设备,配置参数,write/read,需要注意的是,串口读写不能简单的只调用一次read或者write,要判断返回值,确保读写内容完整
2013-10-29 15:06:59
2483
原创 最近工作总结
最近搞了一些多线程的网络编程,用到的一些东西在这里总结一下.1. socket的阻塞与非阻塞, 封装了两个安全发送和接收的函数,不过在阻塞模式下,还真没发现收不完或者发不完,而socket还健在的情况.另外,对于大家为何在TCP连接中诟病非阻塞方式socket,我不太理解,这个项目其实对于数据的实时性要求是相当高的,甚至有考虑过使用UDP,如果使用阻塞发送,那么就是将延时因素完全交给操作系统掌
2012-09-14 23:37:16
919
原创 多线程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
1368
原创 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
5412
10
原创 最近的一些心得
1.fork()函数 以前了解过一些,但是搞得很糊涂,今天又花了2个小时来看,终于搞清楚了. 在调用fork()后,系统会立即copy一份当前进程到内存中作为子进程运行.而这两份内存,并没有任何共享资源,只有通过pid(fork()的返回值)来判断哪一个是父进程(pid等
2011-07-20 18:49:49
767
原创 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
3239
4
原创 畫中畫相關
<br />很久沒來寫點什麽了...因為一直都在忙啊<br />三星搞個NV12T的YUV格式,要搞死人了啊...終於在今天是徹底弄懂了...<br />但是還不能熟練的操作<br />另外...Android他喵的就不支持畫中畫啊~~<br />在視頻圖層上可以疊加一層靜態圖片,但是兩個動態視頻圖層,他就不行啊~~<br /> <br />直接操作解碼出來的數據,又有參考幀的問題啊~~每次解碼器解碼會使用上一(或者幾)幀的數據作為參考啊...<br />memcpy上去的圖像邊緣模糊不說,如果有背景物體從
2011-05-24 17:16:00
965
4
原创 C++ 使用强制类型转换引入临时变量的问题
<br />这两天发现Android中java上层传递下来的ISurface,我在底层居然画不出图像,但是如果我在底层自己创建ISurface却是可以的...<br />这让我和我同事纠结无比,四处找原因...<br /><br />由于这个现象很像是因为上层传递下来的ISurface并不是上层所管理的那一个...所以我把怀疑方向放在了接口传递参数的时候...当然了,现在看来我所遇到的这个问题并非接口传递参数导致的.<br />其中很多地方有返回sp<T>& 的函数调用,并且返回值又是一个强制类型转换的结
2011-03-29 16:39:00
3041
1
原创 近期工作经验总结
<br />最近在Android下层做rtp发送的模块,算是工作以来,最正规的coding mission吧<br />虽然代码不多,但是让我对于项目的开发略有一些心得.<br />从我的感觉来看,最重要的就是一个整体的规划,首先定义与android层的接口,接口调用一旦定义下来,<br />那么后期的coding工作,都将以此为中心,所有功能模块的功能实现,都需要考虑接口的问题.<br /> <br />但是,这次的工作也完成的并不算完美,整体框架是依托于上层的框架来的,但是上层框架并未决定下来,所以到最
2011-03-05 12:16:00
708
原创 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
1991
1
原创 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
1456
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
1125
1
转载 悲催的程序员,以及程序员的悲催
<br />原文地址:http://blog.youkuaiyun.com/Oneway102/archive/2010/12/20/6086741.aspx<br /> <br /><br />我尽量用平和一点的口吻跟你说说关于程序员的那点事儿。<br />1.<br />我在一个叫摩托罗拉的公司干过,那地方有50%的人整天干的事情就是催另外25%的人没完没了的解剩下那25%的人造成的bug。我是个程序员,每天敲敲打打,哪天电脑崩溃了你会发现我这辈子啥都没留下。大多数人甚至都没有想过我们是怎么把手机捣鼓出来的,包括是
2010-12-22 17:52:00
603
转载 程序员阿士顿的故事
原文地址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
786
原创 Android 文件解析->解码->输出 的个人分析
花了一个月的时间熟悉Opencore和OpenMax,又花了近半个月,来研究这玩意儿,终于有了一些结论了.在这里记录下来,帮助后来者,更重要的是怕自己以后忘记...以下分析适用与.3gp文件的播放,Android版本为1.5...暂时还有几个地方没有弄清楚,一个是Mp4ParserNode如何将parse(解析)后的数据向下交给解码Node,另一个是解码出来的OutputBuffer是如何send到显示输出的地方,这两处,代码中都使用的PVMFPortInterface* 来完成的.如果以后能够完成,我会来
2010-12-15 18:05:00
1120
原创 函数指针.回调函数.学习
<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
959
原创 Android 2.3 发布
<br />昨天Android 2.3 发布,听说多媒体框架完全弃用了OpenCore...<br />Shit! 应该是换用straightfright 了,现在还拿不到源代码,具体还不清楚...<br /> <br />哎,不知道使用android进行多媒体开发的公司的成本压力,能不能暂缓用户们升级新系统的需求啊...
2010-12-08 11:31:00
626
原创 Android视频文件格式解析相关分析
引用:http://blog.youkuaiyun.com/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
2402
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
676
原创 .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
858
原创 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
836
原创 live555 在网络异常断开后卡死的问题
<br /><br /> <br />如上图,只需要在GroupsockHelper.cpp中的select加上一个额外的时间判断,即可.如果传递进来的时间为null,那么自己加上超时时间
2010-11-24 10:31:00
3916
转载 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
4222
原创 怪事
这两天发现,修改了live555库之后,重新编译uml后,添加在库中的调试信息无法被打印出来...今天才找到原因,uml的Makefile是从../lib路径下去找库文件,而修改了之后的BasicUsageEnvironment生成的libBasicUsageEnvironment.a是在其本身路径下,所以我想,直接将其复制到../lib下应该就可以了吧?可是复制过来后,在uml中make会报错... skipping incompatible libBasicUsageEnvironment.a when
2010-09-15 16:45:00
595
RFC3261 中文讲解
2010-07-14
The 3G IP Multimedia Subsystem (IMS) 3rd Edition
2010-06-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人