processVideoFrame method
@detail api @author zhushufan.ref @brief 获取 RTC SDK 采集得到的视频帧,根据 registerLocalVideoProcessor{@link #RTCEngine#registerLocalVideoProcessor} 设置的视频前处理器,进行视频前处理,最终将处理后的视频帧给到 RTC SDK 用于编码传输。 @param frame RTC SDK 采集得到的视频帧,参看 IVideoFrame{@link #IVideoFrame}。 @return 经过视频前处理后的视频帧,返回给 RTC SDK 供编码和传输,参看 IVideoFrame{@link #IVideoFrame}。 @note - 在进行视频前处理前,你需要调用 registerLocalVideoProcessor{@link #RTCEngine#registerLocalVideoProcessor} 设置视频前处理器。 - 如果需要取消视频前处理,可以将视频前处理器设置为 nullptr。 - 对于纹理类型的视频数据,应用层需要在自己的工作线程准备OpenGL上下文进行视频处理。 - 应用层实现IVideoProcessor.processVideoFrame 接口时,可以直接修改参数 frame 的缓冲区,将frame引用计数加一(调用addRef方法),然后将修改后的frame返回。应用层也可以创建一个新的视频帧并返回。 - 对于 IVideoProcessor.processVideoFrame返回的视频帧,在SDK层消费完成后,SDK内部总是调用这个视频帧的releaseRef方法。
Implementation
FutureOr<IVideoFrame> processVideoFrame(IVideoFrame frame) async {
final result = await nativeCall('processVideoFrame', [frame]);
return packObject(result,
() => IVideoFrame(const NativeClassOptions([], disableInit: true)));
}