纹理抗锯齿主要是指在计算机图形学中,减少或消除图像中由于纹理映射导致的锯齿效应的技术。常见的有以下几种:
为什么能提高效率:
双 PBO
例如上图所示,利用 2 个 PBO 从帧缓冲区读回图像数据,使用 glReadPixels
通知 GPU 将图像数据从帧缓冲区读回到 PBO1 中,同时 CPU 可以直接处理 PBO2 中的图像数据。
通过交换 PBO 的方式进行拷贝和传送,可以实现这两步操作同时进行。
初始化 AVAssetWriter
时可以设置 outputFileTypeProfile = AVFileTypeProfileMPEG4AppleHLS
即可打开 MP4 分段转码。
通过 preferredOutputSegmentInterval
设置转码后的每片大小。如果想手动切片,需要设置 preferredOutputSegmentInterval = kCMTimeIndefinite
,并且在每次想要切片的位置调用 flushSegment
接口强制分片,注意调用接口的时机必须是 Sync 帧前。即每片的开始帧都是 Sync 帧。
分片的结果会通过设置的 AVAssetWriterDelegate
内部方法返回。
assetWriter_ = [[AVAssetWriter alloc] initWithContentType:[UTType typeWithIdentifier:AVFileTypeMPEG4]]; // 不能设置输出文件因为已经分段
assetWriter_.outputFileTypeProfile = AVFileTypeProfileMPEG4AppleHLS;
assetWriter_.preferredOutputSegmentInterval = CMTimeMake(5, 1); // 5s 一段
assetWriter_.initialSegmentStartTime = kCMTimeZero; // 开始时间,必设
assetWriter_.delegate = self;
iOS 的 API 中能找到的平面格式有:kCVPixelFormatType_420YpCbCr8Planar
、kCVPixelFormatType_420YpCbCr8PlanarFullRange
,这两种平面格式分别对应 y420 和 f420。对这两种格式测试下来,目前系统播放器支持,系统相机不支持。yuv422 和 yuv444 的平面格式目前没找到。
此外,iOS 的 API 中能找到的半平面格式有:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
、kCVPixelFormatType_422YpCbCr8BiPlanarVideoRange
、kCVPixelFormatType_444YpCbCr8BiPlanarVideoRange
这些。