<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/gdliweibing</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; gdliweibing]]></copyright><item><title><![CDATA[VLC ABLoop实现原理]]></title><link>https://blog.csdn.net/gdliweibing/article/details/142698801</link><guid>https://blog.csdn.net/gdliweibing/article/details/142698801</guid><author>gdliweibing</author><pubDate>Fri, 04 Oct 2024 07:24:56 +0800</pubDate><description><![CDATA[player/innput.c 检查是否到了B点，到B点后重新从A点执行。src/player/player.c实现。追踪到最后发现精度为250ms。vlc_player.h声明。设置完后会有状态回调。]]></description><category></category></item><item><title><![CDATA[linux 信号量sem]]></title><link>https://blog.csdn.net/gdliweibing/article/details/125566696</link><guid>https://blog.csdn.net/gdliweibing/article/details/125566696</guid><author>gdliweibing</author><pubDate>Fri, 01 Jul 2022 22:44:46 +0800</pubDate><description><![CDATA[信号量如同一盏红绿信号灯，用于临界资源（如公路、人行道）的管理。信号量是一种特殊的变量，访问具有原子性。P等待：信号量的值为0时，不能减，则进行阻塞休眠。相当于绿灯变红灯，不可以走。V信号：信号量加1，则信号量的值变大，如果为1，则可以唤醒其他阻塞的线程。相当于有红灯变带有秒数的绿灯。


三、二值信号量

相当于一盏红绿灯，只有红或绿两种状态（绿灯是没有带秒数的）。        作锁使用，信号量初始值为1，但不同线程的临界区不同。追踪线程，信号量初始值为0，如主线启动子线程后，进入sem_wait()进]]></description><category></category></item><item><title><![CDATA[七、WebRTC中的SDP]]></title><link>https://blog.csdn.net/gdliweibing/article/details/125251872</link><guid>https://blog.csdn.net/gdliweibing/article/details/125251872</guid><author>gdliweibing</author><pubDate>Mon, 13 Jun 2022 08:57:26 +0800</pubDate><description><![CDATA[格式：=SDP:会话层、媒体层、媒体音频/媒体视频“m=”行中描述媒体类型、传输类型、PlayloadType"a=rtpmap"属性可以描述编解码器记录传输媒体数据时使用的网络信息。如IP、端口号、连接复用等信息“a=group：BUNDLE”属性用于描述媒体数据可以复用同一端口号“a=sendrecv”属性用于指明媒体数据传输方向是双向的。“a=rtcp-fb”m = audio 9 UDP/TLS/RTP/SAVPF 111a = rtpmap:111 opus/48000/...]]></description><category></category></item><item><title><![CDATA[六、WebRTC中ICE的实现]]></title><link>https://blog.csdn.net/gdliweibing/article/details/125241555</link><guid>https://blog.csdn.net/gdliweibing/article/details/125241555</guid><author>gdliweibing</author><pubDate>Sun, 12 Jun 2022 11:14:38 +0800</pubDate><description><![CDATA[高到底：host、srflx、prflx、relay.同一局域网内通过host类型的Candidate在内网建立连接。非同一局域网，隔断从STUN、TURN服务器中收集srflx和relay类型的Candidate。收集srflx类型Candidate时，ICE会尝试NAT打洞。如果打洞成功则使用P2P传输，否则使用TURN服务器中转数据。RTCPeerConnection对象，输入参数RTCconfiguration是json格式。NAT就是一种地址映射技术，在内网地址和外网地址之间建立映射关系。内网主机]]></description><category></category></item><item><title><![CDATA[五、WebRTC实现一对一通信]]></title><link>https://blog.csdn.net/gdliweibing/article/details/125234638</link><guid>https://blog.csdn.net/gdliweibing/article/details/125234638</guid><author>gdliweibing</author><pubDate>Sat, 11 Jun 2022 19:17:29 +0800</pubDate><description><![CDATA[Chrome\Safari\FireFox等主流浏览器对WebRTC的支持。
三、采集音视频数据




四、MediaTream与MediaStreamTrack

MediaTream 流MediaStreamTrack 轨


六、信令状态机

Initjoinjoined离开--->Initother_jointed-->join_connbyte--->join_unbind多个功能模块组成（网络处理、服务质量模块、音视频引擎模块）


2、RTCPeerConnection与本地视频数据绑定..]]></description><category></category></item><item><title><![CDATA[WebRTC信令服务器]]></title><link>https://blog.csdn.net/gdliweibing/article/details/125229516</link><guid>https://blog.csdn.net/gdliweibing/article/details/125229516</guid><author>gdliweibing</author><pubDate>Sat, 11 Jun 2022 08:27:12 +0800</pubDate><description><![CDATA[驱动系统运转，控制各个模块的前后调用关系。客户端：join、leave、message服务端：joined、left、other_joined、byte、fullHTTP/HTTPS 、WS/WSS实现业务层管理（创建、加入、推出房间）通信双方交换信息（交换双方IP地址和端口号）接受或发送方        交换双方的外网IP地址和端口        获取各自终端的外网IP地址和端口终端知道对方的IP地址后通过NAT穿越进行P2P连接和传输Apache、Nginx、NodeJs(Offer/Answer、Ca]]></description><category></category></item><item><title><![CDATA[H264码流结构]]></title><link>https://blog.csdn.net/gdliweibing/article/details/125123163</link><guid>https://blog.csdn.net/gdliweibing/article/details/125123163</guid><author>gdliweibing</author><pubDate>Sat, 04 Jun 2022 21:00:07 +0800</pubDate><description><![CDATA[H.264和H.265编码是最广泛的编码方式。]]></description><category></category></item><item><title><![CDATA[AAC音频码流结构]]></title><link>https://blog.csdn.net/gdliweibing/article/details/125118290</link><guid>https://blog.csdn.net/gdliweibing/article/details/125118290</guid><author>gdliweibing</author><pubDate>Sat, 04 Jun 2022 07:57:05 +0800</pubDate><description><![CDATA[AAC是高级音频编码（Adavance Audio Coding）]]></description><category></category></item><item><title><![CDATA[rtmp推流nginx服务器环境搭建]]></title><link>https://blog.csdn.net/gdliweibing/article/details/118593490</link><guid>https://blog.csdn.net/gdliweibing/article/details/118593490</guid><author>gdliweibing</author><pubDate>Fri, 09 Jul 2021 07:25:56 +0800</pubDate><description><![CDATA[Mac下命令行下homebrew进行安装nginx

一、安装 nginx

1：先更新homebrew


brew update

2： 查看nginx信息


brew search nginx



3：安装nginx


brewinstallnginx





二、安装rtmp-module

1、nginx克隆的本地


$ brew tap denji/homebrew-nginx

2、安装nginx-full和rtmp


$ brew install nginx-full ...]]></description><category></category></item><item><title><![CDATA[2021-05-24]]></title><link>https://blog.csdn.net/gdliweibing/article/details/117234374</link><guid>https://blog.csdn.net/gdliweibing/article/details/117234374</guid><author>gdliweibing</author><pubDate>Mon, 24 May 2021 22:28:49 +0800</pubDate><description><![CDATA[分别按照二叉树先序，中序和后序打印所有的节点。

https://www.nowcoder.com/practice/a9fec6c46a684ad5a3abd4e365a9d362?tpId=117&amp;tqId=37819&amp;rp=1&amp;ru=%2Fta%2Fjob-code-high&amp;qru=%2Fta%2Fjob-code-high%2Fquestion-ranking&amp;tab=answerKey

/**
* struct TreeNode {
* ...]]></description><category></category></item><item><title><![CDATA[AIDL结合Binder跨进程通信实例分析]]></title><link>https://blog.csdn.net/gdliweibing/article/details/95300443</link><guid>https://blog.csdn.net/gdliweibing/article/details/95300443</guid><author>gdliweibing</author><pubDate>Wed, 10 Jul 2019 08:44:54 +0800</pubDate><description><![CDATA[AIDL结合Binder跨进程通信实例分析

一、Demo目录截图



二、在src/main目录下新建aidl文件夹用于存放aidl接口类(Book.aidl和IBookManger.aidl)


// Book.aidl
package com.test.aidl.bean;
parcelable Book;


// IBookManager.aidl
package com.test....]]></description><category></category></item><item><title><![CDATA[Handler消息机制源码分析]]></title><link>https://blog.csdn.net/gdliweibing/article/details/94877839</link><guid>https://blog.csdn.net/gdliweibing/article/details/94877839</guid><author>gdliweibing</author><pubDate>Sat, 06 Jul 2019 22:11:30 +0800</pubDate><description><![CDATA[Hander消息机制源码分析

一、Hander消息简单使用


       findViewById(R.id.threadlocal_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
             ...]]></description><category></category></item><item><title><![CDATA[ThreadLocal源码分析]]></title><link>https://blog.csdn.net/gdliweibing/article/details/94834098</link><guid>https://blog.csdn.net/gdliweibing/article/details/94834098</guid><author>gdliweibing</author><pubDate>Sat, 06 Jul 2019 10:22:55 +0800</pubDate><description><![CDATA[ThreadLocal源码分析

threadlocal是一个线程内部的数据存储类。某线程储存的数据，只有这个线程中才能获取到存储的数据。而其他线程是无法获取到这个数据的。

一、ThreadLocal的使用


    private ThreadLocal&lt;Integer&gt; mThreadLocal = new ThreadLocal&lt;Integer&gt;();
    /...]]></description><category></category></item><item><title><![CDATA[Android GPUImage源码分析（四） Lookup滤镜的使用]]></title><link>https://blog.csdn.net/gdliweibing/article/details/93836828</link><guid>https://blog.csdn.net/gdliweibing/article/details/93836828</guid><author>gdliweibing</author><pubDate>Thu, 27 Jun 2019 07:17:42 +0800</pubDate><description><![CDATA[Android GPUImage源码分析（四） Lookup滤镜的使用

一、lookup滤镜输入双纹理输入滤镜


/****
 * 双纹理输入滤镜
 */
public class GPUImageTwoInputFilter extends GPUImageFilter {
    /**顶点坐标shader**/
    private static final String VERTE...]]></description><category></category></item><item><title><![CDATA[Android GPUImage源码分析（三） GPUImageFilterGroup源码分析]]></title><link>https://blog.csdn.net/gdliweibing/article/details/93832812</link><guid>https://blog.csdn.net/gdliweibing/article/details/93832812</guid><author>gdliweibing</author><pubDate>Thu, 27 Jun 2019 06:33:32 +0800</pubDate><description><![CDATA[/**
 * Resembles a filter that consists of multiple filters applied after each
 * other.
 */
public class GPUImageFilterGroup extends GPUImageFilter {

    private List&lt;GPUImageFilter&gt; filters;...]]></description><category></category></item><item><title><![CDATA[SparseArray 稀疏数组]]></title><link>https://blog.csdn.net/gdliweibing/article/details/92205411</link><guid>https://blog.csdn.net/gdliweibing/article/details/92205411</guid><author>gdliweibing</author><pubDate>Sat, 15 Jun 2019 22:02:25 +0800</pubDate><description><![CDATA[SparseArray 稀疏数组

一、几个重要的成员变量


    private static final Object DELETED = new Object();/**用于标记已被删除value**/
    private boolean mGarbage = false; /**是否存在垃圾**/

    private int[] mKeys;  /***键keys整型数组**...]]></description><category></category></item><item><title><![CDATA[Android GPUImage源码分析（二） Brightness滤镜的使用]]></title><link>https://blog.csdn.net/gdliweibing/article/details/91776649</link><guid>https://blog.csdn.net/gdliweibing/article/details/91776649</guid><author>gdliweibing</author><pubDate>Thu, 13 Jun 2019 08:42:11 +0800</pubDate><description><![CDATA[Android GPUImage源码分析（二） Brightness滤镜的使用

以GALLERY选图添加Brightess滤镜为例

一、点击CHOOSE FILTER按钮，会拥有很多滤镜选项的弹框，选中Brightness滤镜。


 private fun createFilterForType(context: Context, type: FilterType): GPUImageFil...]]></description><category></category></item><item><title><![CDATA[Android GPUImage源码分析（一）简介]]></title><link>https://blog.csdn.net/gdliweibing/article/details/91634121</link><guid>https://blog.csdn.net/gdliweibing/article/details/91634121</guid><author>gdliweibing</author><pubDate>Wed, 12 Jun 2019 22:09:12 +0800</pubDate><description><![CDATA[Android GPUImage源码分析（一） 简介

cats-oss/android-gpuimage

Android filters based on OpenGL (idea fromGPUImagefor iOS)

源码链接

GPUImage广泛用于图片处理摄像头摄影视频处理，比如添加滤镜、动态贴纸等功能

要求：

Android 2.2 or higher (OpenGL ...]]></description><category></category></item><item><title><![CDATA[HTTP  POST和GET区别]]></title><link>https://blog.csdn.net/gdliweibing/article/details/72510586</link><guid>https://blog.csdn.net/gdliweibing/article/details/72510586</guid><author>gdliweibing</author><pubDate>Thu, 18 May 2017 22:07:09 +0800</pubDate><description><![CDATA[HTTP  POST和GET区别

           Http方法有Post、Get、Put、Delete,Post、Get最常用到,区别：
 一、 原理：
          GET:常用于信息的获取，安全（只能从服务器中获取信息,不能修改服务器中信息）、幂等（每次获取的信息都是相同的）。
          POST获取信息或提交修改信息
 二、形式：
     HTTP 的]]></description><category></category></item><item><title><![CDATA[RxJava的使用]]></title><link>https://blog.csdn.net/gdliweibing/article/details/70145944</link><guid>https://blog.csdn.net/gdliweibing/article/details/70145944</guid><author>gdliweibing</author><pubDate>Wed, 12 Apr 2017 18:17:24 +0800</pubDate><description><![CDATA[RxJava的使用
1、app   build.gradle中添加
    compile 'io.reactivex.rxjava2:rxjava:2.0.0'
    compile 'org.reactivestreams:reactive-streams:1.0.0'
2、测试
package com.test.main;

import android.os.Bundle;
im]]></description><category></category></item></channel></rss>