<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ykun089的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ykun089</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ykun089]]></copyright><item><title><![CDATA[[Samba] windows 总报错 “指定的网路密码不正确”]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/156519677</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/156519677</guid><author>ykun089</author><pubDate>Fri, 02 Jan 2026 23:27:32 +0800</pubDate><description><![CDATA[Windows和Samba使用不同的密码哈希算法。PowerShell 中运行一下命令测试。]]></description><category></category></item><item><title><![CDATA[tmpdemo]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/147604670</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/147604670</guid><author>ykun089</author><pubDate>Tue, 29 Apr 2025 11:23:01 +0800</pubDate><description><![CDATA[/ 1000 Hz 正弦波。// 这里简单生成一个1kHz的正弦波，持续播放。// 16-bit PCM编码。// 写入AudioTrack。// 填充正弦波数据。]]></description><category></category></item><item><title><![CDATA[[Android] 使用JNI 出现 signal 4 (SIGILL)时，确保每个函数都有 return 语句]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/145773359</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/145773359</guid><author>ykun089</author><pubDate>Fri, 21 Feb 2025 11:39:59 +0800</pubDate><description><![CDATA[出现这个问题，大部分情况下时 JNI 函数及其调用的 底层 C/C++ 函数缺少 return 语句。]]></description><category></category></item><item><title><![CDATA[[modern c++] shared_from_this() 会卡住]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/145480062</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/145480062</guid><author>ykun089</author><pubDate>Thu, 06 Feb 2025 18:52:50 +0800</pubDate><description><![CDATA[shared_from_this 要求对象在创建之初就是通过 make_shared 或者 std::shared_ptr 的构造来完成的，不能如下几种情况：1） heap new 出来且没使用 make_shared 或者 std::shared_ptr 新创建一个 shared_ptr 实例；2）不能是 unique_ptr 实例，即便是通过 release() 转换成 裸指针都不行，会导致奔溃和卡住，这一点很奇怪，感觉像bug，这里极其容易犯错；]]></description><category></category></item><item><title><![CDATA[[common c/c++] CMA（Contiguous Memory Allocator）]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/144959986</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/144959986</guid><author>ykun089</author><pubDate>Mon, 06 Jan 2025 11:42:21 +0800</pubDate><description><![CDATA[使用，但当驱动不用的时候，memory allocator（buddy system）可以分配给用户进程用作匿名内存或者页缓存。而当驱动需要使用时，就将进程占用的内存通过回收或者迁移的方式将之前占用的预留内存腾出来， 供驱动使用。CMA的全称是contiguous memory allocator， 其工作原理是：预留一段的内存给。]]></description><category></category></item><item><title><![CDATA[[modern c++] shared_from_this 可以多次使用，不用担心double free]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/144810473</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/144810473</guid><author>ykun089</author><pubDate>Sun, 29 Dec 2024 21:03:29 +0800</pubDate><description><![CDATA[那么多次使用 shared_from_this 也是创建了多个 shared_ptr， 是否会导致double free呢？，因为shared_from_this 的内部是 weak_ptr 实现，所以不会导致 double free。]]></description><category></category></item><item><title><![CDATA[[modern c++] 不要对一个对象创建多个 shared_ptr]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/144810268</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/144810268</guid><author>ykun089</author><pubDate>Sun, 29 Dec 2024 21:00:03 +0800</pubDate><description><![CDATA[shared_ptr 可以用来自动管理实例(内存) 的生命周期，但是如果对同一个实例(内存) 创建多个 shared_ptr 则可能引起 double free 的问题。]]></description><category></category></item><item><title><![CDATA[[GStreamer] gstbasesink 的 chain 函数]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/144312797</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/144312797</guid><author>ykun089</author><pubDate>Sat, 07 Dec 2024 16:57:48 +0800</pubDate><description><![CDATA[chain函数是上一个element到当前element的入口，chain函数处理完毕后，上一个函数的push_buffer 就得以返回。因此通常情况下 parent element 的核心逻辑都在 chain 函数里，再通过再 chain 函数里调用虚函数让 child element 的虚函数实现能够在 parent element 的 chain 函数里表现定制化的功能。]]></description><category></category></item><item><title><![CDATA[[GStreamer] gstappsrc]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/144116135</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/144116135</guid><author>ykun089</author><pubDate>Thu, 28 Nov 2024 17:18:20 +0800</pubDate><description><![CDATA[gstappsrc 可以用作作为多种数据类型的src element，包括音视频直播点播流。]]></description><category></category></item><item><title><![CDATA[[GStreamer] multiqueue]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/144075822</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/144075822</guid><author>ykun089</author><pubDate>Wed, 27 Nov 2024 10:20:23 +0800</pubDate><description><![CDATA[gstreamer 提供了 multiqueue 用来同步多路数据。element 包含多个 queue，每个 queue 都可以自定义容量和阈值等一系列信息，通过这些信息，multiqueue 可以实现对每个 queue 的单独控制，这种控制包括但不限于 是否从上游拉数据，是否把数据推给下游 等等。在多媒体领域里，常常用在 demuxer 之后，用来确保送给 audio 和 video decoder 的数据不会存在过大的 pts 时间差，变相提供一种偏软的音画同步机制。]]></description><category></category></item><item><title><![CDATA[[Android] Graphic Buffer 的申请]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/143634095</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/143634095</guid><author>ykun089</author><pubDate>Fri, 08 Nov 2024 21:02:25 +0800</pubDate><description><![CDATA[MediaCodec 支持 texture mode，即MediaCodec解码video完毕后把 yuv 数据填入 GPU 共享出来的 graphic buffer 里面，app 会把 video 的 yuv数据 和 ui 的数据通过通过软件渲染组件(opengl等)发送给GPU 进行一并渲染。这样做的效率较低，但是稳定性较好。且性能取决于GPU的性能。]]></description><category></category></item><item><title><![CDATA[[Android] android 里的共享内存]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/143589007</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/143589007</guid><author>ykun089</author><pubDate>Thu, 07 Nov 2024 11:05:59 +0800</pubDate><description><![CDATA[hidl_memory 是一种对共享内存的封装，可以用来让 framework 层和 HAL 层进行数据共享。：内存的类型，通常是 "ashmem" (匿名共享内存，常用) 或者 "mmap_fd"。：一个文件描述符fd，指向共享内存。]]></description><category></category></item><item><title><![CDATA[[ExoPlayer] 源码编译 及 Demo]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/143362795</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/143362795</guid><author>ykun089</author><pubDate>Wed, 30 Oct 2024 13:47:58 +0800</pubDate><description><![CDATA[直接下载zip包到本地，解压。]]></description><category></category></item><item><title><![CDATA[[Gtk] layout]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/143059248</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/143059248</guid><author>ykun089</author><pubDate>Fri, 18 Oct 2024 17:42:14 +0800</pubDate><description><![CDATA[【代码】[Gtk] layout。]]></description><category></category></item><item><title><![CDATA[[工程模板][MediaPlayer] Gtk+FFmpeg+GStreamer]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/142960484</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/142960484</guid><author>ykun089</author><pubDate>Tue, 15 Oct 2024 17:46:03 +0800</pubDate><description><![CDATA[可执行文件工程。]]></description><category></category></item><item><title><![CDATA[[Gtk] 前言]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/142883551</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/142883551</guid><author>ykun089</author><pubDate>Sat, 12 Oct 2024 18:16:58 +0800</pubDate><description><![CDATA[Gtk – 3.0: Getting Started with GTK]]></description><category></category></item><item><title><![CDATA[[工程构建] 使用 pkg-config 的 cmake 模板]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/142881119</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/142881119</guid><author>ykun089</author><pubDate>Sat, 12 Oct 2024 16:30:26 +0800</pubDate><description><![CDATA[【代码】[工程构建] 使用 pkg-config 的 cmake 模板。]]></description><category></category></item><item><title><![CDATA[[Android] NDK 里 ANativeWindow 和 Surface 之间的关系]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/140960415</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/140960415</guid><author>ykun089</author><pubDate>Tue, 06 Aug 2024 16:59:18 +0800</pubDate><description><![CDATA[在MediaCodec里面可以看到 Configure 和 SetSurface 都是接收一个 sp<Surface> 入参的，而回归到 NDK 侧，则可以发现，传递给 AMediaCodec_Configure 和 AMediaCodec_SetSurface 的确是 ANativeWindow 指针，因此 ndk 里面必然进行了某种转换。由此可见， Surface 类是 ANativeWindow 的子类。]]></description><category></category></item><item><title><![CDATA[[Android] Surface SurfaceView SurfaceHolder 三者之间的关系]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/140714035</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/140714035</guid><author>ykun089</author><pubDate>Fri, 26 Jul 2024 14:06:33 +0800</pubDate><description><![CDATA[Surface 是绘制对象，SurfaceView是一个组件，SurfaceHolder是SurfaceView操作Surface的接口。虽然SurfaceView里面包含Surface，但是SurfaceView无法直接操作Surface，需要借由SurfaceHolder这个接口类来操作。]]></description><category></category></item><item><title><![CDATA[[环境搭建] 使用nginx搭建 hls 媒体服务器]]></title><link>https://blog.youkuaiyun.com/ykun089/article/details/140218143</link><guid>https://blog.youkuaiyun.com/ykun089/article/details/140218143</guid><author>ykun089</author><pubDate>Fri, 05 Jul 2024 21:12:15 +0800</pubDate><description><![CDATA[略。]]></description><category></category></item></channel></rss>