自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android系统攻城狮

CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

  • 博客(3205)
  • 资源 (98)
  • 收藏
  • 关注

原创 欢迎关注公众号:Android系统攻城狮 原创持续更新中!!!

更多原创,欢迎关注:Android系统攻城狮。

2023-04-13 14:32:43 383

原创 Android9.0 setStereoVolume左右声道流程(二十四)

注意:这条路其实没有走,过后会写第二篇分析到底是怎么控制AudioTrack的左右声道的。栗子:setStereoVolume()控制左右声道流程.private AudioTrack mAudioTrack;int bufferSize = AudioTrack.getMinBufferSize(mSampleRateInHz, mChannelConfig, AudioFormat....

2019-03-06 18:30:21 3688 1

原创 通过AMS分析Binder流程(Java到Kernel)

栗子:public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = new Intent(this, D...

2019-01-08 13:00:08 1203

原创 MediaPlayer到ACodec到OMX流程(十九)

********************************************************************************OpenMax(OMX)框架位置及作用1.android系统中只用openmax来做code,所以android向上抽象了一层OMXCodec,提供给上层播放器用。 播放器中音视频解码器mVideosource、mAudiosou...

2018-09-01 18:12:36 3873

原创 Android7.1 audio 播放流程(三十五)

MediaPlayer基本使用方式:播放一首MP3歌曲MediaPlayer mp = new MediaPlayer();mp.setDataSource("/sdcard/test.mp3");mp.prepare();mp.start();//这里初始化CCDeCoder解码器1. IMediaPlayer.cpp/h<1>.头文件frameworks/av/i...

2018-08-03 17:26:31 2343 2

原创 tshark/wireshark/tcpdump实战笔记(更新中...)

注意Wireshark表示意义:Source: 发送方IP Destination: 接收方IPProtoco: 协议Length: 这里显示的物理层(Frame)数据长度,Frame层长度最长,因为每层都要加上包头。info: 显示发送和接收数据的状态//安装tshark和wireshark# sudo apt-get install tshark# sudo apt-g...

2018-05-18 17:51:19 1829

原创 Android输入事件InputReader和InputDispatcher分析

.C++frameworks/native/services/inputflinger/InputDispatcher.cppvoid InputDispatcher::notifyKey(const NotifyKeyArgs* args) { mPolicy->interceptKeyBeforeQueueing(&event, /*byref*/ policyFlags);}.J

2017-08-10 17:07:25 1819 2

原创 Linux之常用命令备忘<不断更新中...>(十七)

1、模糊查找字符串# find . "*" | xargs grep "ro.hardware" -rn --color# find -name "*.rc" | xargs grep "ro.hardware" -rn --color# find -name "*.rc" | xargs grep -rn --color "ro.hardware"//过滤不想看到的字符...

2016-11-09 15:20:23 1669

原创 Android4.4之Camera2预览流程APP到Driver(十四)

1.APP调用 packages/apps/Camera2/src/com/android/camera/PhotoModule.java private void startPreview() { Log.v(TAG, "startPreview"); mCameraDevice.startPreviewAsync(); mFocu...

2016-11-03 18:59:46 3609

原创 Linux内核之kfree实现及用法实例(四十九)

本篇目的:Linux内核之kfree实现及用法实例在Linux内核中,kfree是一个用于释放内存的函数,它用于释放通过kmallockzallocvmalloc等函数分配的内存。这些分配函数在内核空间中动态地分配内存,而kfree则用于在不再需要这些内存时将其释放回系统。当一个内核函数需要一些临时内存来存储数据时,它会调用kmalloc或kzallockzalloc是kmalloc的一个变体,它会在分配内存后将其清零)。这些函数返回一个指向分配的内存的指针。

2024-04-18 07:43:54 221

原创 Linux内核之WRITE_ONCE用法实例(四十八)

本篇目的:Linux内核之WRITE_ONCE用法实例WRITE_ONCE是一个宏,它在Linux内核中用于确保对变量的写操作是原子性的,并且不会被编译器的优化重排。这个宏的主要目的是在多线程环境中提供一种安全的方式来写入共享变量,确保其他线程能够看到正确的值。WRITE_ONCE宏的实现利用了C语言的结构体和联合体的特性。首先,它定义了一个匿名联合体,其中包含一个与目标变量x类型相同的成员__val,以及一个字符数组__c。这个字符数组的大小设置为1,是为了确保联合体的大小与x的大小相同。

2024-04-17 06:00:00 431

原创 Linux内核之aligned用法实例(四十七)

本篇目的:Linux内核之aligned用法实例在Linux内核中,aligned关键字是一个编译器指令,它用于指定变量或结构体的对齐方式。对齐是指变量或结构体在内存中的起始地址与某个数的倍数对齐。对齐对于性能至关重要,特别是在处理对齐敏感的数据类型(如浮点数)或使用SIMD指令时。正确的对齐可以减少内存访问时间,提高程序的性能。在Linux内核中,aligned关键字通常与一起使用,其中n是一个整数,指定了对齐边界。n必须是2的幂,因为大多数处理器和内存系统都对齐到2的幂边界上的地址。

2024-04-17 05:00:00 512

原创 Emacs之增加/取消输入括号自动匹配(一百三十六)

本篇目的:Emacs之取消输入括号自动匹配Emacs 是一个功能强大的文本编辑器,它拥有丰富的扩展和自定义选项,能够满足各种编程和文本编辑需求。其中一个非常实用的功能就是输入括号自动匹配,也就是。是 Emacs 中的一个模式,当你在编辑器中输入一个开放括号(如等)时,Emacs 会自动为你插入一个对应的闭合括号,并将光标放在这两个括号之间。这不仅使代码看起来更加整洁,还有助于减少因遗漏或错位括号而导致的语法错误。要启用,你可以在 Emacs 的配置文件(通常是.emacs或init.el。

2024-04-16 06:15:00 1151

原创 C语言之探秘:访问结构体空指针与结构体空指针的地址的区别(九十三)

本篇目的:C语言之探秘:访问结构体空指针与结构体空指针的地址的区别在C语言中,结构体(Struct)是一种复合数据类型,它可以包含多个不同类型的数据项。指针(Pointer)是一种特殊的数据类型,用于存储变量地址。空指针(Null Pointer)是一个不指向任何有效内存地址的特殊指针。当我们谈论结构体空指针与结构体空指针的地址时,我们需要明确两个概念:结构体变量的地址和结构体指针的地址。结构体空指针:结构体空指针是指未经初始化的结构体指针,它不指向任何有效的内存地址。在C语言中,我们可以使用。

2024-04-16 04:30:00 790

原创 Android14音频进阶之Perfetto高级调试技巧(六十七)

本篇目的:Android14音频进阶之Perfetto高级调试技巧接第六十六篇:Android14音频进阶之<进阶调试>:Perfetto定位系统音频问题上一篇与读者分享如何使用谷歌新一代的性能分析工具Perfetto,可能还有些读者还是云里雾里,本文来一个dump Android各个层级trace的实战篇。Perfetto是一个很强大的性能优化和debug系统疑难杂症的工具,有了它图形化的功能,可以帮我们达到事半功倍的效果,学习它,是为了让它的能力能够释放出来,帮我们从繁杂的debug中解脱出来。

2024-04-15 07:00:00 981

原创 C语言之哈希表节点插入与遍历学习(九十二)

本篇目的:C语言之哈希表节点插入与遍历学习哈希表(Hash Table)是一种数据结构,用于存储键值对(Key-Value Pair)的集合。它通过哈希函数将键映射到表中的一个位置,以加快查找速度。在哈希表中,数据是以数组的形式存储的,数组的索引是通过哈希函数计算得出的。哈希表的核心思想是将键通过哈希函数转换为一个整数值,然后将这个整数值作为数组索引,将对应的值存储在数组中。当我们想要查找一个键对应的值时,只需要再次使用哈希函数计算数组索引,然后直接访问数组中的对应位置即可。

2024-04-15 06:00:00 716

原创 C语言之offsetof实现分析(九十一)

本篇目的:C语言之offsetof实现分析C语言中的offsetof宏是一个非常有用的工具,它用于计算结构体中某个成员相对于结构体开头的偏移量。这个宏定义在头文件中,它是C标准库的一部分。offsetof宏的使用方法非常简单,它的原型如下:其中,type是一个结构体类型,member是type结构体中的一个成员。offsetof宏的返回值是member成员相对于type结构体开头的字节偏移量。

2024-04-15 04:45:00 699

原创 C语言之typeof用法实例(九十二)

本篇目的:C语言之typeof用法实例C语言的typeof运算符是一个编译时运算符,它用于获取表达式的类型。这个运算符是由GCC扩展引入的,不是标准C语言的一部分。typeof运算符允许我们在编写泛型代码时避免硬编码特定的数据类型,从而提高代码的灵活性和可重用性。typeof运算符的基本形式如下:其中expr是任何有效的C语言表达式。typeof运算符将返回expr的类型,这个类型可以用于定义新的变量、函数参数或者作为类型转换的目标类型。typeof运算符的一个主要优点是它提供了类型推断的能力。

2024-04-14 06:15:00 722

原创 C语言之_Generic用法实例(九十一)

本篇目的:C语言之_Generic用法实例C语言的_Generic表达式是C11标准引入的一个特性,它提供了一种在编译时基于表达式类型选择函数或值的方法。这种机制与C++中的模板元编程相似,但更为简单和受限。_Generic表达式的基本形式如下:其中expr是我们要判断的表达式,是可能的类型,是对应的类型为真时返回的值,是默认返回的值(当没有任何类型匹配时)。_Generic表达式的基本思想是,根据expr的类型,从多个候选值中选择一个。这种选择是在编译时进行的,因此_Generic。

2024-04-14 05:15:00 659

原创 Linux内核之互斥锁mutex_init和自旋锁spin_lock区别及用法实例(四十六)

本篇目的:Linux内核之互斥锁mutex_init和自旋锁spin_lock区别及用法实例在Linux内核中,mutex_init和spin_lock是两种常用的同步机制,用于在多线程或多处理器环境中保护共享资源,防止并发访问造成的数据不一致问题。mutex_init用于初始化一个互斥锁(mutex),它是一种睡眠锁。当一个线程尝试获取一个已经被其他线程持有的互斥锁时,该线程会被阻塞,进入睡眠状态,直到互斥锁被释放。互斥锁适用于那些可能造成较长时间阻塞的场景,因为线程睡眠状态不会消耗CPU资源。

2024-04-13 06:45:00 1356

原创 Linux内核之自旋锁:自旋锁初始化之spin_lock_init用法实例(四十五)

本篇目的:Linux内核之自旋锁:spin_lock_init用法实例Linux内核是一个开源的类UNIX操作系统内核,被广泛用于各种计算机系统。在Linux内核中,同步机制是确保多线程程序正确性的关键部分。是Linux内核中用于初始化自旋锁的一个函数,它用于保护内核中的临界区,防止多个线程同时访问共享资源。自旋锁(spinlock)是一种锁,当一个线程尝试获取一个已被其他线程获取的锁时,该线程将在一个循环中不断地检查锁是否已经可用。这个过程被称为“自旋”。

2024-04-13 05:15:00 824

原创 Linux内核之Binder驱动红黑树:rb_root用法实例(四十四)

本篇目的:Linux内核之Binder驱动关键结构体rb_root用法实例Binder是Android系统中实现跨进程通信(IPC)的机制,它由内核空间的Binder驱动和用户空间的Binder库组成。Binder驱动中的关键数据结构之一是rb_root,它用于管理Binder实体的高速缓存。在Binder驱动中,每个进程都有一个binder_proc结构体,用于管理该进程中的Binder实体和引用。

2024-04-12 06:30:00 822

原创 Linux内核之Binder驱动关键结构体binder_ref用法实例(四十三)

本篇目的:Linux内核之Binder驱动关键结构体binder_ref用法实例Binder是Android系统中一个非常重要的组件,它负责在进程间进行通信(IPC)。Binder驱动是Binder机制的核心部分,它工作在内核空间,负责处理跨进程的通信细节。Binder驱动通过一个名为binder_ref的数据结构来管理进程间的引用关系。在Binder驱动中,每个进程都有一个对应的binder_proc结构体,该结构体包含了进程的所有Binder相关的信息。

2024-04-12 05:45:00 1404

原创 Linux内核之Binder驱动关键结构体binder_node用法实例(四十二)

本篇目的:Linux内核之Binder驱动关键结构体binder_node用法实例是 Android Binder 驱动中用于表示 Binder 实体的核心数据结构。Binder 实体是 Binder 通信机制中的基本单元,它可以是一个服务,也可以是一个客户端句柄。每个 Binder 实体都对应一个结构,该结构包含了实体的各种信息,如引用计数、节点 ID、用户数据等。Binder 实体在 Binder 驱动中通过来管理,它是实现进程间通信(IPC)和服务管理的基础。

2024-04-11 07:45:00 696

原创 Linux内核之Binder驱动关键结构体binder_proc用法实例(四十一)

在 Android 系统中,Binder 是一个提供进程间通信(IPC)的驱动程序。它允许一个进程(称为服务器)提供服务给其他进程(称为客户端)。struct binder_proc 是 Binder 驱动中的一个关键结构体,它代表了一个使用 Binder 机制的进程。这个结构体包含了进程的 Binder 相关的所有信息,如线程池、内存分配情况、已打开的 Binder 实体等。

2024-04-11 05:45:00 1265

原创 Linux内核之等待队列wait_queue_head_t数据结构用法实例(四十)

本篇目的:Linux内核之等待队列wait_queue_head_t用法实例是 Linux 内核中用于实现等待队列的基本数据结构。在 Linux 内核中,等待队列是一种常见的机制,用于让进程在某个条件不满足时进入睡眠状态,当条件满足时被唤醒继续执行。这种机制在很多内核子系统中都有应用,如进程调度、设备驱动、同步等。结构体定义了一个等待队列的头部,它包含了等待队列的基本信息和一个用于同步的锁。等待队列实际上是一个进程列表,这些进程都在等待某个条件变为真。每个等待队列都有一个对应的结构体,用于管理这个队列。

2024-04-10 07:15:00 1368

原创 Linux内核之原子操作atomic_t用法实例(三十九)

本篇目的:Linux内核之atomic_t用法实例Linux内核中的atomic_t是一个原子操作的计数器类型,它被广泛用于多线程环境中,确保对计数器的操作是线程安全的。在Linux内核中,许多场合需要对某些值进行原子操作,例如,进程计数、互斥锁的计数器等。atomic_t提供了对这些值进行增加、减少和获取当前值的原子操作,避免了在多线程环境中由于竞态条件引起的并发问题。atomic_t的定义在头文件中,它是一个简单的整数类型(通常是32位),并提供了以下几个主要的操作函数::初始化一个。

2024-04-10 05:45:00 825

原创 Linux内核之Binder驱动内存映射实现:binder_update_page_range实例用法(三十八)

本篇目的:Linux内核之binder_update_page_range实例用法Android Binder是Android系统中用于进程间通信(IPC)的一种机制。Binder驱动程序负责实现Binder机制的核心功能,包括数据的传递、线程的管理等。在Binder驱动程序中,函数是一个重要的函数,用于处理内存映射的相关操作。函数主要处理Binder内存映射的更新。在Binder通信中,客户端与服务端通过Binder机制进行数据交换,这些数据通常存储在内核空间的内存中。

2024-04-09 10:27:29 1056

原创 Linux内核之get_vm_area分配虚拟内存地址,并映射到物理内存(三十七)

本篇目的:Linux内核之get_vm_area用法实例函数是 Linux 内核中用于申请内存区域的一个核心函数,它在内核内存管理子系统中发挥着重要作用。这个函数的主要职责是在内核地址空间中寻找一块足够大的连续虚拟内存区域,以满足内核或内核模块动态申请内存的需要。在详细介绍函数之前,有必要了解一些基本概念。在 Linux 操作系统中,每个进程都有其独立的虚拟地址空间,这个地址空间被分为用户空间和内核空间。

2024-04-09 10:09:40 878

原创 C++之realloc用法及代码实例(二百七十)

本篇目的:C++中,一个内存管理的重要函数,可以重新分配内存大小,随分享之。C++ 中的realloc函数是一个重要的内存管理函数,用于动态分配和释放内存。它可以改变已分配的内存块的大小,如果需要增加内存空间,则分配一个新的更大的内存块,然后将原内存块的内容复制到新块中,并释放原内存块。如果需要减少内存空间,则尝试将内存块的大小减少到新的大小,并返回调整后的内存块地址。realloc函数的原型为:其中,ptr是指向之前分配的内存块的指针,size是要分配的新内存块的大小(以字节为单位)。如果ptr为。

2024-04-08 17:02:00 788

原创 Android14音频进阶之<进阶调试>:Perfetto定位系统音频问题(六十六)

本篇目的:Android14音频进阶之Perfetto如何定位系统音频问题接第六十五篇:混音线程MixerThread、FastMixer、FastThread、AudioMixer到底什么关系本篇来学习如何分析音频性能?以及如何在函数级别定位问题?其实本篇不只是用于音频,也可以延伸到其他模块。我们来借助一款系统和应用的分析工具:Perfetto!在Android9.0以前,其实用的是systrace工具分析。

2024-04-08 16:48:18 1858

原创 Android14之智能指针的弱引用、强引用、弱指针、强指针用法区别及代码实例(二百零五)

本篇目的:Android源码中,理解智能指针的弱引用、强引用、弱指针、强指针的用法与区别。在 Android 的 C++ 开发中,弱引用、强引用、弱指针和强指针都是用于管理对象生命周期的工具。它们是在 Android Framework 中实现的智能指针,用于避免内存泄漏和悬空指针问题。强指针是指向对象的指针,它会增加对象的引用计数,从而延长对象的生命周期。当有一个或多个强指针指向某个对象时,该对象的引用计数会增加。只有当所有指向该对象的强指针都释放时,对象的引用计数才会减少,从而触发对象的销毁。

2024-04-07 04:30:00 923

原创 C++之链表与哈希表的作用及代码实例(二百六十九)

本篇目的:了解链表和哈希表的作用,再用C++实例说明。存储有序数据集合:链表是一种数据结构,用于存储有序的元素集合。每个元素(节点)都包含了指向下一个元素的指针,从而形成了一个有序的序列。动态内存分配:链表的节点通常可以动态分配内存,这使得链表能够在运行时动态增长和收缩,不需要预先指定存储空间的大小。插入和删除操作:链表的插入和删除操作非常高效,时间复杂度为 O(1),因为只需要修改相邻节点的指针,而不需要移动整个数据集合。实现其他数据结构:链表可以用于实现其他数据结构,如队列、栈、图的邻接表等。

2024-04-06 06:15:00 654

原创 C++之双向链表与哈希链表用法区别实例(二百六十八)

本篇目的:在阅读Linux内核代码时,发现Binder驱动中的双向链表和哈希链表的挺有意思,分享给大家。在Android的Binder区域中,双向链表(struct list_head)和哈希链表(struct hlist_node)是两种不同的数据结构,它们在实现中有一些区别和各自的作用。首先,让我们了解这两种数据结构的基本概念:双向链表(struct list_head)双向链表是一种数据结构,其中每个节点都包含指向前一个节点和后一个节点的指针。这使得在双向链表中,节点可以双向遍历。

2024-04-06 05:00:00 776

原创 XUbuntu22.04之Typora添加水印并输出pdf文件(二百二十七)

本篇目的:在XUbuntu22.04下,Typora在内容中添加水印,并输出出到pdf文件中。Typora 是一款轻量级、跨平台的Markdown编辑器,它将写作和预览融为一体,为用户提供了一种全新的文档编辑体验。自从推出以来,Typora凭借其简洁的界面、强大的功能和便捷的操作受到了广大用户的喜爱。Typora 的界面设计非常简洁,没有复杂的菜单和工具栏,让用户可以将全部注意力集中在写作上。它采用了实时预览的技术,让用户在编辑Markdown文档时能够立即看到最终的排版效果,极大地提高了写作效率。

2024-04-05 07:00:00 689

原创 Emacs之实现复制当前已打开文件buffer(一百三十五)

本篇目的:为了方便复制已打开文件的全部内容,写了两个实现,提高开发效率。是 Emacs Lisp(elisp)中的一个内置函数,用于获取缓冲区(buffer)中的文本内容,并将其作为字符串返回。在 Emacs 中,每个文件、目录或区域都有一个与之对应的缓冲区,缓冲区内部维护着这些内容的状态,包括文本内容、光标位置等。函数- 提供了一种方便的方式来访问缓冲区中的文本内容。函数的基本语法如下:其中,start和end参数分别指定了一个范围,用来截取缓冲区中的一部分文本。如果不指定这些参数,

2024-04-05 05:30:00 1606

原创 C++之std::variant关键字代码实例(二百六十七)

本篇目的:C++之std::variant关键字代码实例std::variant 是 C++17 标准库中的一个模板类,它用于表示一个可以容纳多种不同类型值的类型安全的联合(union)。std::variant 提供了一种方便的方式来处理多种可能类型的值,而无需使用复杂的继承结构或联合,同时保持了类型的安全性。

2024-04-04 07:30:00 502

原创 C语言之结构体初始化10种写法总结(九十)

本篇目的:C之结构体初始化10种写法总结。

2024-04-04 05:45:00 1002

原创 Emacs之解除comment-region绑定C-c C-c快捷键(一百三十四)

本篇目的:在Emacs中,使用了C-c C-c快捷键,但是发现被人占用了,费了一番周折才找到原因,分享给大家避坑!是一个 Emacs Lisp(elisp)函数,用于注释或取消注释选定的文本区域。这个函数非常有用,特别是在处理代码时,因为它可以提高编写和阅读代码的效率。在 Emacs 中,注释通常使用反斜杠()或井号()来完成。使用反斜杠的注释方式是Emacs的默认注释方式,它适用于所有类型的文本。而使用井号的方式主要适用于编程语言,如C、C++、Java等。函数支持这两种注释方式。

2024-04-03 18:26:52 984

原创 Linux内核之kmemdup与kstrdup用法实例区别(三十六)

本篇目的:在阅读Linux内核源码时,发现kmemdup和kstrdup函数优点不太相同,随分享之,以示区别。

2024-04-03 15:08:38 1015

H.264标准协议(官方中文版)

H.264是一种视频压缩标准,其只规定了符合标准的码流的格式,以及码流中各个语法元素的解析方法。 H.264标准协议是每个从事多媒体工作的码农必备的参考书,欢迎下载。

2020-10-28

HxD_Hex编辑器中文版.zip

HxD is a carefully designed and fast hex editor which, additionally to raw disk editing and modifying of main memory (RAM), handles files of any size. The easy to use interface offers features such as searching and replacing, exporting, checksums/digests, insertion of byte patterns, a file shredder

2020-09-12

MultimediaFrameworkOverview.zip

音视频多媒体框架GStreamer、PulseAudio采用插件式架构,支持多格式编解码器,支持不同编码器、解析器、分离器和复用器作为插件式架构!

2020-09-01

Gstreamer-Openmax-gst-openmax.zip

OpenMAX is a royalty-free, cross-platform API that provides abstractions for routines especially useful for computer graphics, video, and audio.

2020-08-17

GStreamer中文开发手册.zip

GStreamer是一个通用的跨平台的流媒体应用程序框架,基于GObject,以C语言写成。 GStreamer并不受限于音频和视频处理,它能够处理任意类型的数据流,因此任意一种流媒体应用都可以支持,如:MeidaPlayer、A/V Editor、VOIP、RTSP、A/V Coder等等。 GStreamer框架是基于插件(plugin)和管道(pipeline)的体系结构,框架中所有功能模块都是可插拔的组件,可随意安装到任意管道上

2020-07-22

win10removeAll.zip

Win10彻底关闭windows defender,解决无故占用大量CPU和内存问题! 建议保留一个杀毒软件,不管是360、火绒还是什么,至少安装一个保证电脑的安全。

2020-06-25

vcxsrv-64.1.20.8.1.zip

VcXsrv是微软Windows的开源显示服务器。 它使Windows操作系统的用户能够运行为X Window System设计的GUI程序。 VcXsrv可以运行安装了WSL(Linux子系统Linux)的Linux GUI程序。 在bash for Windows中,设置DISPLAY环境变量允许WSL程序使用Windows GUI。

2020-06-20

debug_hybris_demo.zip

libhybris主要作用是为了解决libc库的兼容问题,目的是为了在基于GNU C library的系统运行那些用bionic编译的库(主要是Android下的闭源HAL库)。因为这些系统都是基于glibc生态的,然而现有的硬件厂商提供的driver多是为Android而写的,自然也是用bionic编译的。如何让基于glibc的系统能够重用现有Android的driver呢?这就需要像libhybris这样的兼容层。

2020-06-03

手写Fuchsia第一个app

在研究GN和Ninja时,发现Fuchsia也是用的GN和ninja来构建编译系统的,值得一提的是Android7.0以后放弃了Makefile,开始使用ninja来构建编译系统!

2020-03-16

Linux内核内存Cache机制原理

Linux内核内存Cache机制原理从源码的角度来分析流程,可以帮助Linux内核学习者了结Cache的内存机制!

2020-03-14

第五代加固技术ARM VMP原理实现与应用.zip

随着Android逆向开发的升级,Android应用的安全越来越被重视,第五代加固技术ARM VMP原理实现与应用正在探索中发展。

2020-03-01

AUDIO CODEC DAPM详解.zip

本文目的帮助理解音频系统ALSA中的dapm机制建立和触发过程,在这之中,涉及到音频路径的搭建和选择(相信这部分对于大家来说更有应用意义)。在dapm机制深入分析中,会展现alsa设计者的各种理念及实现技巧,很多细节上的考虑和处理值得我们去学习。

2019-12-30

蓝牙Audio调试.zip

蓝牙协议栈有很多种profile,像HFP、A2DP、HSP等等,他们通讯都是蓝牙模块和CPU或者DSP之间,通过AT指令来发送信息,这篇文档介绍各种profile及支持采样率和通道数据,还有调试方式!

2019-12-27

Universal Serial Bus Device Class Definition for Audio Devices.zip

Universal Serial Bus Device Class Definition for Audio Devices(UAC2.0协议文档),研究usb audio必读,欢迎下载!

2019-11-16

Pixel ROM(sailfish)

最近在玩Pixel,自己花了一周时间下载Android源码,编译出来Pixel root版的ROM,分享给爱玩机的朋友!

2019-10-20

最新windows和linux的adb工具

下载了一份最新windows和linux平台的adb工具,以此提供给更多开发者方便使用!

2019-07-30

基于域名路由策略.zip

目前使用主流的Linux配置都是基于ip设置路由策略,此篇讲解怎么基于域名路由策略,仅供参考!

2019-07-17

busybox.zip

Android debug的时候由于android原生的命令太少,编译了一个busybox分享出来,欢迎下载。

2019-06-25

Audition 2019版

Audition是做音频开发不可或缺的重要的开发工具,分享一个Win10 2019免注册版备用,也欢迎下载。

2019-06-13

802.11 Reason Code中文说明(全)

WIFI断网有很多情况,如果去翻看802.11协议文档,全英文的很费劲,把Deauthentication Reason Codes中文说明放在这里,供大家参考

2019-05-21

H266(VVC)视频编码协议标准pdf

H266(VVC)视频编码协议标准最新版 T-REC-H.266-202204-I!!PDF-E.pdf

2023-10-05

ISO 13818-7 AAC标准协议文档

ISO 13818-7 AAC标准是MPEG-2标准中定义的一部分,详细描述了AAC在MPEG-2传输流中的编码和解码方法。

2023-09-03

word2010中输入简谱

word2010中输入简谱

2023-04-25

Picture auto gen tools

Picture auto gen tools for wechat

2023-03-27

AIDL for HALs测试客户端

AIDL for HALs测试客户端

2023-01-10

彻底禁掉Win10 Defender自启动

彻底禁掉Win10 Defender自启动! 彻底禁掉Win10 Defender自启动! 彻底禁掉Win10 Defender自启动! 开机内存不会占用特别高! 开机内存不会占用特别高! 开机内存不会占用特别高!

2022-12-24

免费DLL修复工具For WIn10/Win11

免费DLL修复工具

2022-10-22

Typora free版本for Ubuntu22.04

Typora free版本for Ubuntu22.04

2022-10-22

gnome-boxes虚拟机跨平台工具

gnome-boxes虚拟机工具 1.Windows和Linux剪切版共享工具 2.Windows和Linux文件共享工具

2022-10-12

android10以上源码中编译java及UI代码

1.增加Android.mk编译方式 2.增加Android.bp编译方式

2022-07-18

企业微信for Linux

企业微信forLinux

2022-06-22

微信for Ubuntu18.04

微信for Ubuntu18.04

2022-06-22

qt_audio_record.tar.gz

花了一天时间研究,在x86与ARM平台验证可用,备忘!

2021-04-28

qt_audio_play.tar.gz

QT之QMediaPlayer播放音频demo

2021-04-28

deepin.com.wechat_2.6.8.65deepin0_i386-OK.zip

deepin for wechat

2021-03-22

capture_test.zip

在Android6.0平台上,UVC Camera使用标准V4L2接口获取视频数据,并保存文件,测试debug调试使用。

2021-03-09

java-7-openjdk-amd64.tar.gz

目前OpenJDK-7-JDK的源已经被废弃了,手动安装的花需要安装一系列的依赖,特别麻烦,这里提供给需要的开发人员.

2021-01-22

Elecard HEVC Analyzer_For_Windows.zip

分享一个Elecard h265分析工具,大家都知道Elecard很贵,不多说了,内附registor.

2021-01-06

push_stream_test.zip

此mp4文件为h264编码格式,用于推流使用.

2020-12-23

JM-H264参考手册

JM:JM通常被认为是H.264标准制定团队所认可的官方参考软件,基本实现了H.264标准的全部特征。JM在运行时的运算过程较为复杂,而且没有采用汇编优化等加速方法,因此运行速度较慢,很难达到实时编解码。通常主要用于编解码技术的科学研究领域。

2020-10-28

空空如也

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

TA关注的人

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