<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yanlinembed的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yanlinembed</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yanlinembed]]></copyright><item><title><![CDATA[Binder（初始篇）]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/134145762</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/134145762</guid><author>yanlinembed</author><pubDate>Tue, 31 Oct 2023 17:44:24 +0800</pubDate><description><![CDATA[Android Binder机制]]></description><category></category></item><item><title><![CDATA[链表操作与管理]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/103410954</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/103410954</guid><author>yanlinembed</author><pubDate>Fri, 06 Dec 2019 11:03:14 +0800</pubDate><description><![CDATA[这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
欢迎使用Ma...]]></description><category></category></item><item><title><![CDATA[Bindr机制-向ServiceManager添加服务]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/80640736</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/80640736</guid><author>yanlinembed</author><pubDate>Mon, 11 Jun 2018 15:09:19 +0800</pubDate><description><![CDATA[Bindr机制-向ServiceManager添加服务]]></description><category></category></item><item><title><![CDATA[Binder机制-IPCThreadState过程]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/80640791</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/80640791</guid><author>yanlinembed</author><pubDate>Sun, 10 Jun 2018 23:13:50 +0800</pubDate><description><![CDATA[Binder机制-IPCThreadState过程]]></description><category></category></item><item><title><![CDATA[Binder机制-ProcessState过程]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/80640786</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/80640786</guid><author>yanlinembed</author><pubDate>Sun, 10 Jun 2018 21:38:23 +0800</pubDate><description><![CDATA[Binder机制-IPCProcessState过程]]></description><category></category></item><item><title><![CDATA[Binder机制概述]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/80634878</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/80634878</guid><author>yanlinembed</author><pubDate>Sun, 10 Jun 2018 13:45:20 +0800</pubDate><description><![CDATA[Binder是Android系统结合自身系统任务特点而实现的一种与传统方式不一样的IPC(Inter-Process Communication)机制。

传统的IPC方式有：管道、FIFO、信号、消息队列、信号量、共享内存、Socket。

Unix最初只有：管道、FIFO(命名管道)、信号等IPC机制，后来Linux继承和发展了Unix系统的IPC，对其影响比较大的有AT&amp;amp;T的贝尔实验...]]></description><category></category></item><item><title><![CDATA[POCO开源框架-模块加载卸载过程分析]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/80332703</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/80332703</guid><author>yanlinembed</author><pubDate>Wed, 16 May 2018 11:37:38 +0800</pubDate><description><![CDATA[一般地，基于POCO框架的程序结构都是按模块化架构的。 
模块化处理过程主要涉及两个头文件： 
 poco/1.4/Foundation/include/Poco/ClassLibrary.h  
poco/1.4/Foundation/include/Poco/ClassLoader.h 

ClassLibrary.h 

此头文件的主要目的是单独导出三个函数供外部其他模块调用，实际就是Cla...]]></description><category></category></item><item><title><![CDATA[crtmpserver 运行过程简明分析]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/80307325</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/80307325</guid><author>yanlinembed</author><pubDate>Mon, 14 May 2018 14:48:47 +0800</pubDate><description><![CDATA[  crtmpserver.cpp  main()函数下的执行过程：

1. SRAND();  //随机数产生过程 
2. InitNetworking(); //初始化异步socket资源，调用接口WSAStartup() 
3. Variant::DeserializeFromCmdLineArgs(argc, argv, gRs.commandLine) //把命令行带入的参数，序列化到V...]]></description><category></category></item><item><title><![CDATA[crtmpserver运行过程详尽分析]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/80184536</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/80184536</guid><author>yanlinembed</author><pubDate>Thu, 03 May 2018 20:26:10 +0800</pubDate><description><![CDATA[crtmpserver是一个基于RTMP协议的流媒体服务器。下面比较详细的分析了它的处理过程：



1. SRAND();

它其实是一个宏定义，srand((uint32_t)time(NULL)); 
srand()就是给rand()提供种子seed的，如果srand每次输入的数值是一样的，那么每次运行产生的随机数也是一样的，srand(n)，rand()也就是说，以一个固定的数值作为种子是...]]></description><category></category></item><item><title><![CDATA[Visual Studio添加引入FFMPEG库过程]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/78926159</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/78926159</guid><author>yanlinembed</author><pubDate>Thu, 28 Dec 2017 20:42:55 +0800</pubDate><description><![CDATA[在Windows下使用VS开发流媒体程序的时候，一般离不开引入开源项目FFMPEG，当然自己写的除外。 
FFMPEG库及源码可以在FFMPEG开源网站下载。 
一、 点击下载过程 
点击下图片的标记部分 
 
接着点击下图链接，有源码下载链接，也有库下载链接。 
 
点击进去可见如下图，有当前的最新版本，也可以下载以前release的版本： 
上图中需要对Static、Shared、Dev几个目录]]></description><category></category></item><item><title><![CDATA[C++调用C#注册的回调函数]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/78925396</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/78925396</guid><author>yanlinembed</author><pubDate>Thu, 28 Dec 2017 19:12:01 +0800</pubDate><description><![CDATA[本文主要讲解C#注册回调函数提供给C++调用，用于异步通知机制。这在编程过程中是经常需要用到的模式。 
此过程需要创建三个工程： 
1. C++动态库工程 
2. C++ CLR 托管动态库工程 
3. C# 测试工程 
接着前文C++封装成托管模式供C#调用过程创建的C++ CLR托管工程，在此基础上再创建一个C++动态库工程，此工程创建过程比较简单在此不再详细说明，只注意一点如图。 
一、C++]]></description><category></category></item><item><title><![CDATA[C++托管与C#中的数据类型转换]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/78920276</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/78920276</guid><author>yanlinembed</author><pubDate>Thu, 28 Dec 2017 11:31:35 +0800</pubDate><description><![CDATA[接上一篇文章 C++封装成托管模式供C#调用过程 在C#调用C++托管库的过程中，C++托管库一般只是封装为真正C++动态链接库(DLL)的一个外壳，其不做任何逻辑功能，但是会存在数据类型及结构上的转换问题，本文就是用于介绍数据类型转换过程中需要考虑的问题。 
数据类型很多，限于篇幅原因，文章主要讲解几种常见且较复杂的数据类型。 
1. C#句柄与C++窗体句柄类型的转换, IntPtr<—>HWN]]></description><category></category></item><item><title><![CDATA[C++封装成托管模式供C#调用过程]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/78919495</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/78919495</guid><author>yanlinembed</author><pubDate>Thu, 28 Dec 2017 10:43:17 +0800</pubDate><description><![CDATA[C++是一种伪面向对象的语言，即可面向对象，也可能面向过程的混合编程语言。能够实现逻辑功能复杂的应用层功能，也能够开发偏向于底层的功能。 
在用C#开发应用程序时，大部分底层的功能代码都是用C/C++写的SDK提供的接口，那么在C#中是无法直接调用C++的接口的。这就需要把C++提供的接口封装成能够供C#直接调用的托管模式，本文主要介绍此内容。一、 C++托管工程创建过程第一步：【文件】—>【新建】]]></description><category></category></item><item><title><![CDATA[进程挂起wait_event_interruptible]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/53418659</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/53418659</guid><author>yanlinembed</author><pubDate>Thu, 01 Dec 2016 11:31:29 +0800</pubDate><description><![CDATA[在进程执行过程中，有时候需要等待某个条件满足而进行进程阻塞。 
常用的一种方法就是让调用者进程暂时挂起，直到目标进程返回结果后，再唤醒等待的进程。wait_event_interruptible()定义如下：
#define wait_event_interruptible(wq, condition) \
({ \
    int _ret = 0; \
    if(!condition) \]]></description><category></category></item><item><title><![CDATA[可变参数实现原理]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/53213261</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/53213261</guid><author>yanlinembed</author><pubDate>Fri, 18 Nov 2016 11:10:36 +0800</pubDate><description><![CDATA[C中可变参函数主要是通过以下三个函数（其实是三个宏）和一个类型来实现的：需要包含头文件 #include <stdarg.h>void va_start( va_list arg_ptr, prev_param ); 
type va_arg( va_list arg_ptr, type ); 
void va_end( va_list arg_ptr );函数都是以va开头，其英文全称为varia]]></description><category></category></item><item><title><![CDATA[Android中MediaPlayer的setDataSource方法的使用]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/51887642</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/51887642</guid><author>yanlinembed</author><pubDate>Fri, 23 Sep 2016 20:39:58 +0800</pubDate><description><![CDATA[MediaPlayer.java文件路径:frameworks/base/media/java/android/media/MediaPlayer.javaMediaPlayer的setDataSource()方法主要有四种：Sets the data source as a content Uri.]]></description><category></category></item><item><title><![CDATA[Eclipse中Android开发引用第三方库]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/51799990</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/51799990</guid><author>yanlinembed</author><pubDate>Fri, 01 Jul 2016 11:55:38 +0800</pubDate><description><![CDATA[Android.mk文件编写LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)LOCAL_MODULE   := IDataEncapsulation #生成的库名
LOCAL_CPPFLAGS := -DJSON_IS_AMALGAMATION -fexceptions #-Wwrite-strings  #编译选项
LOCAL_LDLIBS +=]]></description><category></category></item><item><title><![CDATA[Git 的origin和master分析]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/51553920</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/51553920</guid><author>yanlinembed</author><pubDate>Wed, 01 Jun 2016 10:18:54 +0800</pubDate><description><![CDATA[首先要明确一点，对git的操作是围绕3个大的步骤来展开的（其实几乎所有的SCM都是这样） 
1.     从git取数据（git clone） 
2.     改动代码 
3.     将改动传回git（git push） 
这3个步骤又涉及到两个repository，一个是remote repository，再远程服务器上，一个是local repository，再自己工作区上。其中 
1, 3两]]></description><category></category></item><item><title><![CDATA[Android.mk详解]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/50724802</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/50724802</guid><author>yanlinembed</author><pubDate>Tue, 23 Feb 2016 17:33:35 +0800</pubDate><description><![CDATA[Android.mk是Android提供的一种makefile文件，用来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库文件等。要掌握jni，就必须熟练掌握Android.mk的语法规范。 

一、Android.mk文件的用途 
一个android子项目中会存在一个或多个Android.mk文件 
1、单一的Android.mk文件 
直接参考NDK]]></description><category></category></item><item><title><![CDATA[Android编译环境搭建]]></title><link>https://blog.youkuaiyun.com/yanlinembed/article/details/50608471</link><guid>https://blog.youkuaiyun.com/yanlinembed/article/details/50608471</guid><author>yanlinembed</author><pubDate>Fri, 29 Jan 2016 17:38:08 +0800</pubDate><description><![CDATA[add-apt-repository "deb http://archive.canonical.com/ lucid partner"
apt-get update
echo y|apt-get install sun-java6-jdk

echo y|apt-get install uuid-dev
echo y|apt-get install  uuid
echo y|apt-]]></description><category></category></item></channel></rss>