Home

Flutter Plugins

Flutter Plugins 插件类别 Dart packages - dart包, dart通用实现, 主要还是flutter平台上dart编写的库 Plugin packages(Federated plugins) - dart调用本地平台代码, 包含特定平台的实现, 每个平台放一个包里 FFI Plugin packages - dart调用本地库代码, c/c++ Dart Packages flutter create --template=package hello Plugin Packages flutter create --org com.example --template=plugin --platforms=android,i...

Read more

Flutter dart:ffi

Flutter dart:ffi 动态与静态链接 本地库可以有动态链接与静态链接, 一个静态库会嵌入到APP执行映像中, 随应用一起启动 静态链接调用DynamicLibrary.executable 和 DynamicLibrary.process 动态链接库是单独文件放在应用中, 在需要时加载. 动态库是.so(ELF)分发, 每个架构一个 动态链接调用DynamicLibrary.open C/C++注意事项 dart:ffi 只能绑定C语言的符号, 所以C++需要加上 extern “C” attribute((visibility(“default”))) attribute((used)) C/C++源码建议写...

Read more

I/O Multiplexing(多路复用)

I/O Multiplexing(多路复用) 当服务器在一个端口上创建监听, 该监听会阻塞当前线程, 当有一个请求时, 会激活当前 线程来处理请求, 处理完成继续阻塞等待下一个请求. 单线程模式, 一次只能处理一个请求. 当有一个请求时, 创建一个新的线程来处理这个请求, 服务器可以继续监听下一个请求. 多线程模式, 可以处理多个请求. 创建线程, 销毁线程和切换线程会有开销, 一般创建线程占用8M栈内存ulimit -a, 3G空余内存可以创建 300左右线程. 变种就是线程池模式, 解决了创建线程和销毁线程问题, 但是如果是需要多次交互的, 线程会 处于闲置状态, 等待可读或可写, 多个这种业务会占用线程数量, 后面的任务只能等待. 把I/O句柄(包括...

Read more

视频

视频 分辨率 采样频率 采集格式 传输通道 采集源 摄像头 屏幕录制 文件推流 android: setPreviewCallback MediaRecorder iOS: AVFoundation pc: mjpeg-streamer 滤镜: GPUImage 音频: SoundTouch 图像 视频是由一组图像组成的 图像是由像素组成 像素是由RGB组成: 位深 RGB888(24位), RGBA(32位) 分辨率 横轴 x 纵轴 RGB 发光二极管, 用于屏幕图像的展示 RGB与BGR, 有些数据是BGR, 显示前需要把BGR转换成RGB, BMP是使用BGR YUV(YCbCr): Y表示明亮度, UV的作用是描述影像色彩及饱和度, 主要的采样格...

Read more

socket

socket I/O 多路复用 select、poll、epoll是内核的服务: windows下只有 select服务、poll Linux下:select、poll、epoll Reference socket function (winsock2.h)

Read more

解码

解码 硬解码: 使用非CPU芯片解码, 低码率画质较差 软解码: 使用CPU解码, 高画质有些力不从心   画质 性能 内存消耗 支持格式 流畅度 总耗能 硬解码 高 优 低 少 好 低 软解码 高 差 高 无限制 坏 高 Android Android软解码器通常使用”OMX.google“开头, 硬解码器通常使用”OMX“...

Read more