В сборке 2.6.6 добавлена возможность использования RTCMTLVideoView для отображения видео, если устройство поддерживает данный вид.
Разберем автоматическое переключение между видами для отображения локального видео на примере TwoWayStreaming
1. Определяем, поддерживается ли Metal View
id<MTLDevice> localDevice; #ifdef __aarch64__ localDevice = MTLCreateSystemDefaultDevice(); ... #endif |
2. Если MTLCreateSystemDefaultDevice() возвращает не nil, создаем объект RTCMTLVideoView
... #ifdef __aarch64__ localDevice = MTLCreateSystemDefaultDevice(); if (localDevice) { RTCMTLVideoView *localView = [[RTCMTLVideoView alloc] init]; localView.delegate = self; _localDisplay = localView; } #endif ... |
3. Если MTLCreateSystemDefaultDevice() возвращает nil, создаем объект RTCEAGLVideoView
... if (!localDevice) { RTCEAGLVideoView *localView = [[RTCEAGLVideoView alloc] init]; localView.delegate = self; _localDisplay = localView; } ... |
Полный код примера
id<MTLDevice> localDevice; #ifdef __aarch64__ localDevice = MTLCreateSystemDefaultDevice(); if (localDevice) { RTCMTLVideoView *localView = [[RTCMTLVideoView alloc] init]; localView.delegate = self; _localDisplay = localView; } #endif if (!localDevice) { RTCEAGLVideoView *localView = [[RTCEAGLVideoView alloc] init]; localView.delegate = self; _localDisplay = localView; } _localDisplay.translatesAutoresizingMaskIntoConstraints = NO; |