- 博客(30)
- 资源 (3)
- 收藏
- 关注
原创 pthread在自己创建的线程中执行pthread_jion并不会死锁
函数pthread_join()函数挂起调用线程的执行,直到目标线程之三结束为止,除非目标线程已经终止。实际上这种情况他会直接返回并不会一直阻塞!!!
2024-06-15 11:19:45 252
原创 playbin获取节目duration流程分析
playsink没有实现duration的查询,但是其内部的sink,如audiosink继承了gstbasesink。第二种直接使用gst_pad_peer_query查询。b)迭代器获取srcpad。第一种适用于pull模式。a)迭代器获取sink。继续分析下上面的细节。
2024-03-26 21:06:26 259
原创 如何判断对象指针已经释放-指针的引用
1)指针的引用作为函数参数,当实参指针被设置NULL,函数内部可以使用NULL来判断。1)将一个指针赋值给另一个指针,也就是智能指针作为函数参数时候,引用计数会增加。当调用shared_ptr.reset()时候,并不会导致形参被设置NULL。1.使用智能指针shared_ptr。
2024-03-26 20:17:18 335
原创 tunnel模式audiotrack每笔数据需要送入同步头
这个header包含一个起始码,pts(nano sec),和数据的size。再写入audio数据前先写入这个header data。需要在音频写入audiotrack的时候在头部插入一个16 byte的avsync header。
2024-02-27 18:05:54 331
原创 libtool使用-Wl,-Bstatic失败
如上代码通过修改-Wl,-Bstatic -ljpeg实现静态依赖libjpeg,但是编译之后仍然是依赖动态库libjpeg.so,打印命令也是正常的。-Wl,-Bstatic -ljpeg为一个指令,也是就没有将-ljpeg是为Wl后面的参数,导致问题。libtool: link:的可以看到。-Bstatic,ljpeg 或者。发现问题了,link没有正常识别。对Wl的使用不太规范。
2023-10-16 12:36:41 174 1
原创 安卓通过Parcel传递Surface到native层(Mediaplayer.java)
因为parcel中默认添加了一个name字段,因为这里是第一次读取这个parcel,设置false后是surfaceShim.readFromParcel会去取这个name字段,不影响后读取surface字段。可以获取到graphicBufferProducer 了。使用MediaPlayer中的。备注:这里要设置false。
2023-09-19 17:45:21 148
原创 This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open 问题
android.injected.studio.version.check=false”这行代码加进去,修改“gradle.properties”文件。
2023-09-07 20:03:34 101 1
原创 安卓预置apk/so权限
权限添加:/system/etc/permissions/privapp-permissions-platform.xml。权限添加:/vendor/etc/permissions $ privapp-permissions-vendor.xml。so白名单:/system/etc # public.libraries.txt。预置:/system $ priv-app。预置:/vendor $ priv-app。
2023-06-27 11:16:28 261 1
原创 把gstreamer插件androidmedia的3个java编译成jar
【代码】把gstreamer插件androidmedia的3个java编译成jar。
2023-06-26 21:04:53 136 1
原创 gradlew makejar报错Android Gradle plugin requires Java 11 to run
错误:修改方法:修改后,仍报错修改后,仍报错3、项目根目录下:文件(gradle.properties)添加代码:修改后可以。
2023-06-25 11:42:56 323
原创 安卓高版本c/c++调用java,通过JNI_CreateJavaVM/JNI_GetCreatedJavaVMs创建虚拟机实例
c/c++调用java;JNI_CreateJavaVM/JNI_GetCreatedJavaVMs创建虚拟机实例;libnativehelper;JNI_CreateJavaVM运行挂载libart
2023-06-21 10:09:30 1620 2
原创 ld链接器基本命令
通过-Wl,--exclude-libs,libssl.a -Wl,--exclude-libs,libcrypto.a 设置链接器命令
2023-06-14 10:54:07 612
原创 使用gstreamer动态库搭建安卓环境播放器
gstreamer-1.0-android-arm64-1.20.6.1-runtime.tar\libexec\gstreamer-1.0\gst-plugin-scanner拷贝到assets 下;d) 将静态版本包\gstreamer-1.0-android-arm64-1.20.6.1.tar\arm64\share\gst-android\ndk-build\tools\windows\pkg-config.exe 拷贝到arm64-v8a下。arm64-v8a/pkgconfig下。
2023-05-30 11:23:36 1338 3
原创 Android Studio ndk 开发 cmake 使用pkgconfig
是clang++不识别-pthread,通过执行D:\SDK\ndk\21.3.6528147\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --help(terminal 执行命令)可以查看所支持的参数,确认是支持-pthread,进一步分。(1)找不到依赖的头文件,也就是前面说的PKG_CONFIG_PATH设置后无效(暂未解决),使用默认搜索路径,默认路径确认方式如前面所讲。规避方案使用默认的搜索路径,如下方法可以查找默认搜索路径。
2023-05-20 16:14:35 774 1
原创 cmake编译三方库运行找不到依赖库
测试用遇到so库正常打包到apk,但是实际运行遇到,通过编译链接的方式找不到依赖库,但是通过dlopen的方式确实可以正常加载的问题。全路径的 libxxx.so 显然是没法在我们设置的 LD_LIBRARY_PATH 里面找到的,所以会报个 not found 的错误,这就是加载不到so的原因了。发现依赖的so是全路径,显然是不对的,从路径看也就是我们set_target_properties中设置的路径。so库的链接方式有两种:一种是通过dlopen,另一种是通过编译链接。
2023-05-15 21:51:46 1925 1
原创 gstreamer编译recipe插件
可以看完整编译命令,相关头文件等依赖,cebero已经默认添加到了env中,包括pkg-config的寻找pc的路径也设置到了env(通过打印self.env),同时也添加到了make中 -isystem -isysroot等。(因为依赖了gst.h/avcodec.h,所以需要先整体编译一遍才会在dist下生成相关头文件/依赖库/*.pc)(2) 创建插件源码目录test-1.0 : Makefile test.c。
2023-05-15 21:02:38 145 1
原创 switch-case-break使用以及内部变量定义事项
switch (integer expresssion){ case constant1: statements; case constant2: statements; default: statements}(1)(integer expresssion)表达式只能是整型(包含char类型,enum类型)。case 标签必须是整型常量或者整型常量表达式,不能使用变量。(2)default 可以放在 switch中任意位置,当...
2020-11-12 20:27:16 1929
原创 翻转链表-逆转链表-单向链表(容易理解)
/*** struct ListNode {* int val;* struct ListNode *next;* };*//**** @param pHead ListNode类* @return ListNode类*/struct ListNode* ReverseList(struct ListNode* pHead ) { struct ListNode *pCur = pHead; struct ListNode *pNex...
2020-10-27 00:31:23 243
原创 win7指定网络名不再可用
电脑加载网络驱动器和添加网络位置出现“指定网络名不再可用”的问题,ping没有问题,SSH登录没有问题,其他人电脑也可以登录,网上主要解决方案(1)检查“computer、Browser、server、workstation”是否启动,(2)检查服务器杀毒软件件电脑IP地址拉黑(3)防止arp劫持:arp -d ;ipconfig/flushdns;arp -s 或者netsh 绑定IP和MAC最终解决方案:打开网络共享中心,本地连接。 在“属性”对话框中,选择Internet 协议.
2020-07-10 17:53:07 5262
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人