自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 OpenGL 把纹理保存成图片

int [] oldFboId = new int[1]; GLES20.glGetIntegerv(GLES20.GL_FRAMEBUFFER_BINDING, IntBuffer.wrap(oldFboId)); int [] framebuffers = new int[1]; GLES20.g...

2018-12-05 14:26:15 7003

原创 c++开发小细节笔记

使用其他命名空间的类时,可以用这种方式:namespace NamespaceB { class ClassB;}using NamespaceB::ClassB;namespace media { class ClassB{ private: ClassB *classB; …… };}...

2018-11-14 11:41:39 188

原创 Android.mk 多级嵌套编译

call all-subdir-makefiles和call all-makefiles-under,(LOCALPATH)的区别:1.callall−subdir−makefiles仅扫描子目录。2.callall−makefiles−under,(LOCALPATH)的区别:1.callall−subdir−makefiles仅扫描子目录。2.callall−makefiles−under,(...

2018-06-14 19:48:32 2405

原创 c/c++输出调用栈信息

#include <iostream>#include <iomanip>#include <unwind.h>#include <dlfcn.h>struct BacktraceState { void **current; void **end;};static _Unwind_Reason_Code unwindCallback(struct _Unwind_Conte

2018-05-09 18:10:48 1905

原创 C++如何在const函数修改成员变量的值

C++如何在const函数修改成员变量的值在C++,总所周知,c++不允许在const函数直接修改成员变量的值,想要达到此目的,有两种方式:使用mutable关键字造一个假的this去操作成员变量1.第一种方法很简单,只需要在成员变量前加mutable即可。2.第二种方式,就是造一个const pointer指向this所指对象,然后用这个指针去操作想要修改的成员变量,示例代码和解释如下:cl

2018-04-22 17:13:18 7931 4

原创 JNI Java层对象和C++底层对象关联,使用与"传long指针"不一样的方式

JNI Java层对象和C++底层对象关联,使用与”传long指针”不一样的方式做Android JNI底层开发的时候,经常需要Java类和C++类做相互对应,比如Java层有一个类MyGLView.java,C++层有一个叫做MyGLView.cpp的类与之对应,所以需要一个叫做 MyGLViewJNI.cpp 的jni接口让MyGLView.java和MyGLView.cpp关联起来,这样...

2018-04-21 13:12:13 4066

原创 视频实时OpenGL渲染并保存渲染结果合成MP4

这是一个能实时播放多个视频、图片在一个GL容器里的控件,通过这个控件,可以在一个view中绘制固定坐标、自由随机滚动的视频和图片,然后从该view中截取数据帧,实时保存成YUV格式的文件,最后合成MP4。

2017-08-29 16:14:51 6085 1

原创 android studio ndk断点调试开发

1.在main目录下新建jni目录,然后在目录内新建android.mk、application.mk、c文件。2.在项目app下的gradle的android{ }中添加如下代码:   externalNativeBuild {        ndkBuild {            path file("src\\main\\jni\\Android.mk")     

2017-05-27 15:09:22 2604

原创 QT 扫描指定目录windows脚本

all_src_ijk = $$system(for /r F:\a-v_communications2\ijkplayer-android\android\ijkplayer %i in (*) do @echo %i)all_src_ffmpeg = $$system(for /r F:\a-v_communications2\ijkplayer-android\android\contr

2017-01-20 11:17:03 505414

原创 JNI 打log

进行JNI开发,log是必不可少的,JNI提供有log.h用于输出log,以便调试。1.首先include   log.h#include 2.然后宏定义tag#define LOG_TAG "mhd_aecm"3.宏定义输出log的函数#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,

2016-12-07 12:04:13 1005

原创 用NDK编译webrtc aecm模块出现‘undefined reference to’ 错误问题解决办法

最近在编译webrtc aecm模块的时候,代码中明明已经包含C文件的引用,但是编译的时候一直‘undefined reference to XXXXXX’ ,如图解决方法: 在MK文件里加多一行  LOCAL_ALLOW_UNDEFINED_SYMBOLS := true...

2016-12-02 16:26:40 1292

原创 speex aec回声消除效果调研

speex aec回声消除效果测试本次测试以采样率44100,帧长882,对应时长为20ms(speex推荐时长为20ms)麦克风采集的PCM波形图:远端传输来用来播放的PCM波形图:1.当声音对齐错位范围在0.01s以内时,回声消除处理效果如下波形所示:从波形图中可以看出,回声基本已经被消除,但是非回声部分的声音也已经被“误杀”,使得声音质量明显被大大降低。2.当mic麦克风采样PCM数据比即将...

2016-11-29 15:25:26 5455 2

原创 JNI native多线程调用Java静态方法

前言: 最近在做音视频实时通信,因为回声问题要解决,而播放和音视频采集是异步处理,所以需要java在中间做音频流桥接;播放端的音视频播放和拉流是在子线程处理的,因此有了这个应用场景。1.因为env不能多线程共享,而JavaVM可以,所以要通过在JNI入口c文件下把JavaVM保存起来,提供给其他线程使用,然后就可以在其他线程中通过JavaVM来拿到env;同时我也将java类设置为全局变量,供给其

2016-09-13 12:25:18 4155 1

原创 使用QT Creator 关联C/C++开源代码库

我在使用ffmpeg库的时候,遇到了个问题,就是clone下来的C代码无法用Android Studio 或者 VS去打开整个库并且让代码的依赖关联起来,比如想查找某个结构体或者函数在哪定义,如果一个个文件的去查找是不切实际的,然而QT Creator是个很好的IDE,能让我们像使用Android Studio编辑查看Java代码、Xcode编辑查看OC代码一样。 步骤1.在开源库的文

2016-07-07 18:11:46 1847

原创 java数组累加

public class ArrayUtils { public static byte[] sumMultiByteArray(ArrayList<byte[]> arrayList){ int byteArrayLen = 0; for(int i = 0 ; i < arrayList.size() ; i ++){ byteA

2015-12-02 13:53:30 4484

原创 Android 实现只创建一个socket就能一次传输多个文件

Android 实现一个socket传输多个文件在网上看到好多关于socket的文章都是创建一次socket只传输一个文件,这种方式如果在需要一次传多文件的情况下,要创建很多个socket,显然这样的效率是不好的,所以我写了一个socket一次传多个文件的demo

2015-11-20 18:51:04 1522

原创 Android动态加载包含so文件的jar的自定义view控件

公司要求把某自定义view控件打包成jar,提供给某项目(这里叫它APP吧)通过网络下载的方式实现动态加载控件,该APP通过反射来构造出该view,并且调用里面的方法。这样通过反射动态加载的方式(暂且叫他反射方式)和普通的把自定义view的jar导入工程预先加载的方式(暂且叫它预先加载)不同的是:1.预先加载是先把jar复制到工程下的lib目录,然后 build path,使用该自定义的方

2015-05-29 15:08:24 2173

原创 Android用canvas画随意方向箭头

Android用canvas画随意方向箭头

2015-03-25 11:05:04 3367

原创 Android子线程创建Handler方法

在子线程上创建Handler

2015-01-12 11:11:07 16551 3

原创 HorizontalScrollView+viewpager实现仿天天动听ios版和QQ侧边菜单效果

最近用HorizontalScrollView弄了个和slidingmenu差不多的效果的侧边菜单,顺便在里面嵌套viewpager,效果类似天天动听ios版和仿QQ侧边菜单栏

2015-01-08 14:42:24 1157

空空如也

空空如也

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

TA关注的人

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