C/C++
HongdaMeng
只发原创文章,不转载,既是笔记,也是分享
展开
-
使用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 · 1914 阅读 · 0 评论 -
c++开发小细节笔记
使用其他命名空间的类时,可以用这种方式:namespace NamespaceB { class ClassB;}using NamespaceB::ClassB;namespace media { class ClassB{ private: ClassB *classB; …… };}...原创 2018-11-14 11:41:39 · 218 阅读 · 0 评论 -
speex aec回声消除效果调研
speex aec回声消除效果测试本次测试以采样率44100,帧长882,对应时长为20ms(speex推荐时长为20ms)麦克风采集的PCM波形图:远端传输来用来播放的PCM波形图:1.当声音对齐错位范围在0.01s以内时,回声消除处理效果如下波形所示:从波形图中可以看出,回声基本已经被消除,但是非回声部分的声音也已经被“误杀”,使得声音质量明显被大大降低。2.当mic麦克风采样PCM数据比即将...原创 2016-11-29 15:25:26 · 5526 阅读 · 2 评论 -
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 · 1978 阅读 · 0 评论 -
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 · 4164 阅读 · 0 评论 -
C++如何在const函数修改成员变量的值
C++如何在const函数修改成员变量的值在C++,总所周知,c++不允许在const函数直接修改成员变量的值,想要达到此目的,有两种方式:使用mutable关键字造一个假的this去操作成员变量1.第一种方法很简单,只需要在成员变量前加mutable即可。2.第二种方式,就是造一个const pointer指向this所指对象,然后用这个指针去操作想要修改的成员变量,示例代码和解释如下:cl原创 2018-04-22 17:13:18 · 8334 阅读 · 4 评论 -
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 · 505461 阅读 · 0 评论 -
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 · 2644 阅读 · 0 评论 -
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 · 1055 阅读 · 0 评论 -
用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 · 1353 阅读 · 0 评论 -
JNI native多线程调用Java静态方法
前言: 最近在做音视频实时通信,因为回声问题要解决,而播放和音视频采集是异步处理,所以需要java在中间做音频流桥接;播放端的音视频播放和拉流是在子线程处理的,因此有了这个应用场景。1.因为env不能多线程共享,而JavaVM可以,所以要通过在JNI入口c文件下把JavaVM保存起来,提供给其他线程使用,然后就可以在其他线程中通过JavaVM来拿到env;同时我也将java类设置为全局变量,供给其原创 2016-09-13 12:25:18 · 4205 阅读 · 1 评论 -
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 · 7152 阅读 · 0 评论