音视频
文章平均质量分 72
fanged
这个作者很懒,什么都没留下…
展开
-
Android音频系统
最近在做UAC的项目,大概就是接收内核UAC的事件,也就是声音相关事件。然后就是pcm_read和AudioTrackr->write之间互传。感觉略微有点奇怪,所以简单总结一下。原创 2024-06-21 18:50:07 · 376 阅读 · 0 评论 -
音视频的Buffer处理
最近在做安卓下UVC的一个案子。正好之前搞过ST方案的开机广告,这个也是我少数最后没搞成功的项目。当时也有点客观原因,当时ST要退出机顶盒市场,所以一切的支持都停了,当时啃他家播放器几十万行的代码,而且几乎没有文档,真的是非常痛苦。后面虽然功能是搞出来了,但是不稳定,持续几次后就会crash。还记得当时最后到底层ST是用的滑动窗口缓存,双指针,一个写指针和一个读指针,当时我做了一个管道往缓存中注数据。主要就是共享内存,滑动窗口,双缓冲,环形缓冲这些内容。就是两个buffer,一个读一个写,写完之后交换。原创 2024-06-20 14:20:23 · 557 阅读 · 0 评论 -
USB UVC 3-- uvc gadget(更新中)
USB分为USB Host和USB Device两种,PC一般是USB Host,手机等终端数码设备一般是USB Device。OTG是指设备既可以作为USB Device,又可以作为USB Host。在Linux中,USB Device设备称为Gadget。这个代码是应用层的,内核将来有时间再写一篇吧。比对着一起看吧,兼听则明啊。原创 2024-05-02 01:55:51 · 310 阅读 · 0 评论 -
USB UVC 2-- libuvc
这个部分的内容就比较多,首先还是libusb_open,然后uvc_get_device_info,获取设备的具体能力,uvc_claim_if,这里申明UVC的接口。然后就是一套,libusb_get_device_descriptor,libusb_fill_interrupt_transfer,libusb_submit_transfer(是 libusb 库中的一个函数,用于将 USB 传输请求提交给 USB 设备。主要就是调用了libusb_init,应该是对usb的初始化。原创 2024-04-26 01:55:21 · 372 阅读 · 0 评论 -
USB UVC 1-- 基础
USB UVC,顾名思义,首先还是USB,整个UVC还是基于USB框架的,要真正掌握这个,还是要掌握USB的协议。然后是UVC,全称是USB Video Class,用于支持视频设备(例如网络摄像头、摄像机、扫描仪等)与计算机之间的通信和交互。首先摄像头要支持USB协议,其次要支持UVC协议,要提供符合UVC协议的设备描述符,然后是遵循UVC定义好的控制命令,多媒体格式,还有传输方式。:Realtek 是一家知名的芯片制造商,在其 RTS 系列中也有支持 UVC 的摄像头芯片。Brightness(背光)原创 2024-02-17 02:05:40 · 444 阅读 · 1 评论 -
试手一下CameraX(APP)
name,contentValues,mediaStoreOutputOptions都是作为参数使用。在output中,好像是使用了lambda函数,弄了一些内置行为。name,contentValues,outputOptions都是作为参数传进去。大体的流程就是首先取得surface,然后使用cameraProvider.bindToLifecycle,将surface作为参数传进去。这个应该是camerax的控件。增加两个按键,分别是takephoto和capturevideo,并增加按键事件。原创 2024-03-03 22:22:28 · 267 阅读 · 0 评论 -
V4L2学习(框架和上层)
上层有什么呢:GStreamer,FFmpeg,OpenCV,v4l-utils。当然,你直接调用ioctl写一个简单的也行,也不算复杂。最近才看了下V4L2,说起来V4L2实际上是一个接口标准。使用V4L2上层接口的应用,V4L2框架,以及使用V4L2下层接口的驱动。另外要值得看的是和GStreamer之间的接口处理,等到看GStreamer的时候再写写吧。上层总的来说不算复杂,10来个接口,照着写一遍就懂了,唯一就是BUF的处理可能会麻烦点。NVIDIA的这个图说的还比较简明扼要。原创 2024-03-04 01:56:31 · 412 阅读 · 0 评论 -
GStreamer 1 简单看看
GStreamer的核心是pipeline,这块很强,很适合现在对视频流进行连续处理。下面的sources,sinks,containers,decoder就是一个个的插件,应该一个插件就是一个so动态链接库。我在想可能它家的机制在商业上也有一定好处,比如说插件之间可以比较独立,而且可以闭源发大财,所以现在很多大厂都基于它在搞。Comprehensive Core Library:核心库,提供插件API框架,应该涉及到线程管理,任务调度,同步,调试系统等等。从它家的主页来看,整个GS大概有以下4个部分。原创 2024-03-22 01:41:38 · 557 阅读 · 0 评论