自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(545)
  • 资源 (17)
  • 收藏
  • 关注

原创 [Android] 使用JNI 出现 signal 4 (SIGILL)时,确保每个函数都有 return 语句

出现这个问题,大部分情况下时 JNI 函数及其调用的 底层 C/C++ 函数缺少 return 语句。

2025-02-21 11:39:59 147

原创 [modern c++] shared_from_this() 会卡住

shared_from_this 要求对象在创建之初就是通过 make_shared 或者 std::shared_ptr 的构造来完成的,不能如下几种情况:1) heap new 出来且没使用 make_shared 或者 std::shared_ptr 新创建一个 shared_ptr 实例;2)不能是 unique_ptr 实例,即便是通过 release() 转换成 裸指针都不行,会导致奔溃和卡住,这一点很奇怪,感觉像bug,这里极其容易犯错;

2025-02-06 18:52:50 322

原创 [common c/c++] CMA(Contiguous Memory Allocator)

使用,但当驱动不用的时候,memory allocator(buddy system)可以分配给用户进程用作匿名内存或者页缓存。而当驱动需要使用时,就将进程占用的内存通过回收或者迁移的方式将之前占用的预留内存腾出来, 供驱动使用。CMA的全称是contiguous memory allocator, 其工作原理是:预留一段的内存给。

2025-01-06 11:42:21 133

原创 [modern c++] shared_from_this 可以多次使用,不用担心double free

那么多次使用 shared_from_this 也是创建了多个 shared_ptr, 是否会导致double free呢?,因为shared_from_this 的内部是 weak_ptr 实现,所以不会导致 double free。

2024-12-29 21:03:29 207

原创 [modern c++] 不要对一个对象创建多个 shared_ptr

shared_ptr 可以用来自动管理实例(内存) 的生命周期,但是如果对同一个实例(内存) 创建多个 shared_ptr 则可能引起 double free 的问题。

2024-12-29 21:00:03 262

原创 [GStreamer] gstbasesink 的 chain 函数

chain函数是上一个element到当前element的入口,chain函数处理完毕后,上一个函数的push_buffer 就得以返回。因此通常情况下 parent element 的核心逻辑都在 chain 函数里,再通过再 chain 函数里调用虚函数让 child element 的虚函数实现能够在 parent element 的 chain 函数里表现定制化的功能。

2024-12-07 16:57:48 201

原创 [GStreamer] gstappsrc

gstappsrc 可以用作作为多种数据类型的src element,包括音视频直播点播流。

2024-11-28 17:18:20 262

原创 [GStreamer] multiqueue

gstreamer 提供了 multiqueue 用来同步多路数据。element 包含多个 queue,每个 queue 都可以自定义容量和阈值等一系列信息,通过这些信息,multiqueue 可以实现对每个 queue 的单独控制,这种控制包括但不限于 是否从上游拉数据,是否把数据推给下游 等等。在多媒体领域里,常常用在 demuxer 之后,用来确保送给 audio 和 video decoder 的数据不会存在过大的 pts 时间差,变相提供一种偏软的音画同步机制。

2024-11-27 10:20:23 237

原创 [Android] Graphic Buffer 的申请

MediaCodec 支持 texture mode,即MediaCodec解码video完毕后把 yuv 数据填入 GPU 共享出来的 graphic buffer 里面,app 会把 video 的 yuv数据 和 ui 的数据通过通过软件渲染组件(opengl等)发送给GPU 进行一并渲染。这样做的效率较低,但是稳定性较好。且性能取决于GPU的性能。

2024-11-08 21:02:25 1097

原创 [Android] android 里的共享内存

hidl_memory 是一种对共享内存的封装,可以用来让 framework 层和 HAL 层进行数据共享。:内存的类型,通常是 "ashmem" (匿名共享内存,常用) 或者 "mmap_fd"。:一个文件描述符fd,指向共享内存。

2024-11-07 11:05:59 247

原创 [ExoPlayer] 源码编译 及 Demo

直接下载zip包到本地,解压。

2024-10-30 13:47:58 464

原创 [Gtk] layout

【代码】[Gtk] layout。

2024-10-18 17:42:14 223

原创 [工程模板][MediaPlayer] Gtk+FFmpeg+GStreamer

可执行文件工程。

2024-10-15 17:46:03 327

原创 [Gtk] 前言

Gtk – 3.0: Getting Started with GTK

2024-10-12 18:16:58 206

原创 [工程构建] 使用 pkg-config 的 cmake 模板

【代码】[工程构建] 使用 pkg-config 的 cmake 模板。

2024-10-12 16:30:26 305

原创 [Android] NDK 里 ANativeWindow 和 Surface 之间的关系

在MediaCodec里面可以看到 Configure 和 SetSurface 都是接收一个 sp<Surface> 入参的,而回归到 NDK 侧,则可以发现,传递给 AMediaCodec_Configure 和 AMediaCodec_SetSurface 的确是 ANativeWindow 指针,因此 ndk 里面必然进行了某种转换。由此可见, Surface 类是 ANativeWindow 的子类。

2024-08-06 16:59:18 387

原创 [Android] Surface SurfaceView SurfaceHolder 三者之间的关系

Surface 是绘制对象,SurfaceView是一个组件,SurfaceHolder是SurfaceView操作Surface的接口。虽然SurfaceView里面包含Surface,但是SurfaceView无法直接操作Surface,需要借由SurfaceHolder这个接口类来操作。

2024-07-26 14:06:33 347

原创 [环境搭建] 使用nginx搭建 hls 媒体服务器

略。

2024-07-05 21:12:15 393

原创 [FFmpeg] windows下安装带gpu加速的ffmpeg

目前只有 NIVIDIA 支持 ffmpeg 的 gpu加速(AMD貌似也陆续开始支持)。在下述网站中查找自己的显卡能够支持的编解码格式。

2024-07-05 17:38:19 1208

原创 [Qt] Qt for android, gradle-8.3-bin.zip (No such file or directory)

android 工程需要 gradle 作为打包工具,Qt for android 如果想要打包 apk 同样需要使用 gradle,但是 包括 Android studio 在内的诸多 Android IDE 工具都没有自带的 gradle 工具,可能是因为 gradle 的版本迭代较快,因此各个 IDE 均采用从服务器实时下载 gradle 的方式。

2024-07-01 15:13:41 1268

原创 [modern c++] copy elision

有两种对象构造方法,一是在指定内存上构造对象,另一个是先构造一个临时对象,然后把对象拷贝到指定内存上。

2024-07-01 11:22:23 162

原创 [Gstreamer] 消息处理handler的设置

Gstreamer 提供以 GstMessage 和 GstBus 为基础的消息传递机制,所有GstMessage 发送的时候都需要指定 GstBus 用来明确当前 message 将在哪条 Bus 上流转。所有的 GstMessage 最终都会进入一个handler,这个handler函数可以通过两种方式设置 gst_bus_set_sync_handler 和 gst_bus_add_watch。如果没有设置 handler 函数,那么GstMessage将永远不会被处理,从而造成内存泄漏。

2024-06-27 17:24:08 339

原创 [Gstreamer] gstbasesink 里的 jitter

这个值表示当前到达 gstbasesink chain 函数(push mode) 的 GstBuffer 的系统事件 与 这个 buffer 被期望到达的系统时间的差值。jitter 除了被用在配合处理 同步问题外,还被用来处理 qos 问题,比如 qos 的 throttle event type 就需要结合 jitter 的值来进行综合判断。,则表示 GstBuffer 到晚了,当前 GstBuffer 或多或少属于 late了,可能存在被 drop的可能,还需要根据 segment 来做综合判断。

2024-06-26 16:12:02 279

原创 [Gstreamer] gstbasesink 的 QOS 机制

gstreamer里很多element都提供 QOS 机制,src,filter 和 sink 都有。Sink element 的 QOS 机制由 gstbasesink 统一提供。

2024-06-26 09:54:05 307

原创 [modern c++][11] 非类型模板参数

我们再使用 std::get 的时候发现其模板并不是一个类型,而是一个整数值,用来标识从某个位置获取值,比如 std::pair 类型的数据 tmppair,那么就可以通过 std::get(tmppair)来获取key的值,通过 std::get(tmppair)来获取value的值。这就是非类型模板参数的一个用例。非类型模板参数允许我们使用值作为模板类型,这个值可以是整数,引用,指针等等。既然是使用值(左值/右值) 作为模板的某个参数,那么为什么不把这个值直接函数入参传递给函数呢?

2024-06-24 17:39:40 416

原创 [modern c++] 库列表

C++ library headers <algorithm> <iomanip> <list> <ostream> <streambuf> <bitset> <ios> <locale> <queue> <string> <complex> <iosfwd> <map> &l

2024-06-19 11:42:20 377

原创 [modern c++][17] 任意数据类型 any

c++17里引入了std::any类型,这个类型类似于union类型,但是比union功能多且能容纳所有类型(内置类型/自定义类型),同时提供 type 方法用于获取一个 type_info 实例,进而用于准确判断入参的准确类型。

2024-06-19 11:41:22 280

原创 [modern c++][11] 类型描述库 typeindex

头文件:#include typeindex库 包含两个类 std::type_info 和 std::type_index。

2024-06-19 11:28:37 321

原创 [modern c++] 类型萃取 type_traits

type_traits 又叫类型萃取,是一个在编译阶段用于进行类型判断/类型变更的库,在c++11中引入。因为其工作阶段是在编译阶段,因此被大量应用在模板编程中,同时也可以结合 constexpr 这种在编译阶段就进行计算的语句进行编译阶段的运算。

2024-06-19 11:15:22 358

原创 [Android] Binder 里的 Service 和 Interface 分别是什么

在使用 Binder 的时候,会使用到两个常量字符串,一个是 ServiceName ,一个是 InterfaceName,他们格式如下:ServiceName通常不携带 @1.0 这种类似于版本号的东西,InterfaceName会携带。

2024-06-14 19:29:25 395

原创 [modern c++] 如何在h/hpp头文件中定义一个常量,并限制其不被没有include本头文件的编译单元访问到

c++98 提出了匿名namesapce ,所有定义在匿名namespace中的变量都具备内部连接属性,所以可以把续要定义的值放在匿名namespace里,再把相关代码放入源文件里,这样做的缺点在于无法在h/hpp头文件中访问到这些变量,因此头文件无法获知源文件里的值。//1.hpp//错误//由于无法访问cpp中的符号,所以这里没法定义arr的尺寸。//1.cpp。

2024-06-11 16:40:54 363

原创 [modern c++] 使用shared_mutex , shared_lock完成读写锁,Need C++ 17

C++ 17开始,引入了两个新的同步组件, shared_mutex 和 shared_lock ,这两个组件的一个典型使用案例就是实现读写锁。

2024-06-04 10:16:55 441

原创 [Android] MediaCodec configure过程中的 profile 和 level

由于这些值定义在java层,因此流程进入mediacodec 的 native 端后,这些值将以整形的方式存在,所以如果希望获取到具体含义,那么可以通过 jni 来获取这些枚举值的实际意义。Android 的 MediaCodec 组件会在 configure 的过程中携带 profile 和 level 信息,比如。这些信息表明将要到来的stream的编码profile 和 level,因此底层在分配硬件解码器资源的时候是需要结合。分辨率,帧率,profile,level ,编码格式。

2024-05-30 11:23:30 504

原创 [modern c++] 使用 chrono 处理 c++ 中时间相关问题

c++ 11 引入了 chrono 用以处理时间/时区相关的问题。

2024-05-29 18:39:16 146

原创 [工程构建] ubuntu里如何找到某个库使用的头文件和链接库

【代码】[工程构建] ubuntu里如何找到某个库使用的头文件和链接库。

2024-05-27 09:49:36 694

原创 [GStreamer] gst_element_link 及 pad 在继承体系中如何存在

pad 是每个 element实例都有的,是 elemenet 之间沟通的代理人,没有 pad 的 element 没法于其他element交流。考虑到gstreamer存在继承体系,那么如果继承类element不在init函数里创建pad,那么在gst_element_link的时候是否可以使用父类element实例的pad呢?下面从源码来找答案。在gstutils.c找到的实现。直接调用同样在gstutils.c,入参为上有element和下游element。实现同样在。

2024-05-24 11:49:14 843

原创 [工程构建] 使用pkg-config协助工程搭建

上面提到的 --cflags 和 --libs 选项是如何获得结果中的信息呢?其实,pkg-config 工作的原理是每个库都要提供自己的 .pc文件,这个文件里描述了在使用这个库时需要用到的链接选项是什么,头文件路径又在哪里。比如。

2024-05-08 14:44:10 549

原创 [Android] 使用 android 自带的 hidl 共享内存接口,Ashmem

Android 提供了 一个共享内存服务 android::hidl::allocator::V1_0::IAllocator / android::hidl::memory::V1_0::IMemory, 通过这个接口可以向 android 直接请求共享内存。使用此方法可以更加方便和安全地在 android 系统中使用共享内存,而不需要使用 posix c 的共享内存模块。

2024-04-29 11:17:16 651

原创 [Android] 基于binder的共享内存

Android里的binder机制是基于共享内存实现的跨进程间通讯,其作为驱动程序为上层应用提供高效的IPC。Android同样提供了基于 binder 的实际内存管理和使用模块。通过这个模块可以按照binder的框架写法直接使用 raw 共享内存。这是 binder 机制的一种共享内存泛化使用,而不仅仅是使用共享内存实现IPC和RPC。

2024-04-28 12:06:56 336 2

原创 [common c++] 为何纯虚父类可以在子类的构造函数初始化列表进行实例化

纯虚类(抽象类) 是只至少拥有一个纯虚函数的类,这种类可以有成员变量,但是不能进行单独的实例化(new,局部变量,智能指针构造等等)。其根本原因是由于纯虚类提供了未实现的成员函数,所以编译器无法知道如何处理这种悬空的成员函数符号表,就好像一个dangling function pointer一样,没有指向任何 .text section。所以一旦授权实例化形成实例,那么就会出现类似于访问悬垂指针的情况。因此是禁止实例化的。

2024-04-23 14:28:03 374 1

VLC-Android-3.5.7-armeabi-v7a.apk

VLC-Android-3.5.7-armeabi-v7a.apk

2025-01-15

TEST6.2.404.485.3.SXANDROID_TVAPP.0.0_Pre_Release.apk.1

TEST6.2.404.485.3.SXANDROID_TVAPP.0.0_Pre_Release.apk.1

2023-08-10

hpplay-happytest-release-v8.12.37.apk.1

hpplay-happytest-release-v8.12.37.apk.1

2023-07-03

Python实现算法和数据结构

Python实现算法和数据结构

2021-10-20

ALL-HEADS.7z

c-ares : 1.14.0版本 exosip2 : 5.0.0版本 osip2 : 5.0.0版本 ffmpeg : 4.2.2版本

2020-10-19

ALL-DLLS.7z

c-ares : 1.14.0版本 exosip2 : 5.0.0版本 osip2 : 5.0.0版本 ffmpeg : 4.2.2版本

2020-10-19

ALL-LIBS.7z

c-ares : 1.14.0版本 exosip2 : 5.0.0版本 osip2 : 5.0.0版本 ffmpeg : 4.2.2版本

2020-10-19

ffmpeg windows sdk 和 动态库

ffmpeg 4.2.2版本 的 windows win64动态库,从官网下载的,目前再想找不大好找了,这里留一个做备份,此外还有配套的 sdk lib文件。 ffmpeg-4.2.2-win64-dev : sdk ffmpeg-4.2.2-win64-shared : 动态库

2020-10-17

ffmpeg windows sdk 和 动态库

ffmpeg 4.2.2版本 的 windows win32动态库,从官网下载的,目前再想找不大好找了,这里留一个做备份,此外还有配套的 sdk lib文件。 ffmpeg-4.2.2-win32-dev : sdk ffmpeg-4.2.2-win32-shared : 动态库

2020-10-17

vcruntime140_1.dll

windows的vc运行库,mysql运行时可能会提示缺少此文件,直接下载放到Windows/System32 和 Windows/SysWOW64 下即可

2020-05-18

excel文件转换为Qt的ts文件

具体细节:https://blog.youkuaiyun.com/ykun089/article/details/106100149

2020-05-13

Qt的ts文件转换成excel文件

使用python将ts文件格式化为excel文件,使用方法,将需要操作的ts文件改名为en2zh.ts,置于exe同级目录下,执行exe即可,输出文件为en2zh.xlsx。 ****** 注:如有定制化处理需求,或者任何相关问题可通过邮箱联系本人 ykun089@163.com *****

2020-05-12

ts2excel.exe

使用python将ts文件格式化为excel文件,使用方法,将需要操作的ts文件改名为en2zh.ts,置于exe同级目录下,执行exe即可,输出文件为en2zh.xlsx。 源码见:https://github.com/obentul/PythonPROJ/tree/master/xmlAndexcel 源码见:https://github.com/obentul/PythonPROJ/tree/master/xmlAndexcel 源码见:https://github.com/obentul/PythonPROJ/tree/master/xmlAndexcel

2020-05-12

ts2excel.exe

使用python将ts文件格式化为excel文件,使用方法,将需要操作的ts文件改名为en2zh.ts,置于exe同级目录下,执行exe即可,输出文件为en2zh.xlsx。 源码见:https://github.com/obentul/PythonPROJ/tree/master/xmlAndexcel 源码见:https://github.com/obentul/PythonPROJ/tree/master/xmlAndexcel 源码见:https://github.com/obentul/PythonPROJ/tree/master/xmlAndexcel

2020-05-12

makefile精炼版

精炼的makefile学习指南,无废话,经典清晰。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2018-05-13

tipc网络通讯协议栈源代码

实测可用,丢入内核根目录直接编译即可,输出ko文件,使用modprobe tipc来启动。如编译过程中遇到任何问题,可私信联系我

2018-05-11

rfc3261 sip协议

SIP协议官方文档,rfc3261。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2018-05-05

spring framework reference-4.3.10

spring framework reference 4.3.10 的epud格式和mobi格式,内含两个文件

2017-07-27

空空如也

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

TA关注的人

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