xref: /aosp_15_r20/external/webrtc/sdk/objc/unittests/RTCNV12TextureCache_xctest.m (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker/*
2*d9f75844SAndroid Build Coastguard Worker *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
3*d9f75844SAndroid Build Coastguard Worker *
4*d9f75844SAndroid Build Coastguard Worker *  Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker *  that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker *  tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker *  in the file PATENTS.  All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker *  be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker */
10*d9f75844SAndroid Build Coastguard Worker
11*d9f75844SAndroid Build Coastguard Worker#import <CoreVideo/CoreVideo.h>
12*d9f75844SAndroid Build Coastguard Worker#import <Foundation/Foundation.h>
13*d9f75844SAndroid Build Coastguard Worker#import <GLKit/GLKit.h>
14*d9f75844SAndroid Build Coastguard Worker#import <XCTest/XCTest.h>
15*d9f75844SAndroid Build Coastguard Worker
16*d9f75844SAndroid Build Coastguard Worker#import "base/RTCVideoFrame.h"
17*d9f75844SAndroid Build Coastguard Worker#import "base/RTCVideoFrameBuffer.h"
18*d9f75844SAndroid Build Coastguard Worker#import "components/renderer/opengl/RTCNV12TextureCache.h"
19*d9f75844SAndroid Build Coastguard Worker#import "components/video_frame_buffer/RTCCVPixelBuffer.h"
20*d9f75844SAndroid Build Coastguard Worker
21*d9f75844SAndroid Build Coastguard Worker@interface RTCNV12TextureCacheTests : XCTestCase
22*d9f75844SAndroid Build Coastguard Worker@end
23*d9f75844SAndroid Build Coastguard Worker
24*d9f75844SAndroid Build Coastguard Worker@implementation RTCNV12TextureCacheTests {
25*d9f75844SAndroid Build Coastguard Worker  EAGLContext *_glContext;
26*d9f75844SAndroid Build Coastguard Worker  RTCNV12TextureCache *_nv12TextureCache;
27*d9f75844SAndroid Build Coastguard Worker}
28*d9f75844SAndroid Build Coastguard Worker
29*d9f75844SAndroid Build Coastguard Worker- (void)setUp {
30*d9f75844SAndroid Build Coastguard Worker  [super setUp];
31*d9f75844SAndroid Build Coastguard Worker  _glContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];
32*d9f75844SAndroid Build Coastguard Worker  if (!_glContext) {
33*d9f75844SAndroid Build Coastguard Worker    _glContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
34*d9f75844SAndroid Build Coastguard Worker  }
35*d9f75844SAndroid Build Coastguard Worker  _nv12TextureCache = [[RTCNV12TextureCache alloc] initWithContext:_glContext];
36*d9f75844SAndroid Build Coastguard Worker}
37*d9f75844SAndroid Build Coastguard Worker
38*d9f75844SAndroid Build Coastguard Worker- (void)tearDown {
39*d9f75844SAndroid Build Coastguard Worker  _nv12TextureCache = nil;
40*d9f75844SAndroid Build Coastguard Worker  _glContext = nil;
41*d9f75844SAndroid Build Coastguard Worker  [super tearDown];
42*d9f75844SAndroid Build Coastguard Worker}
43*d9f75844SAndroid Build Coastguard Worker
44*d9f75844SAndroid Build Coastguard Worker- (void)testNV12TextureCacheDoesNotCrashOnEmptyFrame {
45*d9f75844SAndroid Build Coastguard Worker  CVPixelBufferRef nullPixelBuffer = NULL;
46*d9f75844SAndroid Build Coastguard Worker  RTC_OBJC_TYPE(RTCCVPixelBuffer) *badFrameBuffer =
47*d9f75844SAndroid Build Coastguard Worker      [[RTC_OBJC_TYPE(RTCCVPixelBuffer) alloc] initWithPixelBuffer:nullPixelBuffer];
48*d9f75844SAndroid Build Coastguard Worker  RTC_OBJC_TYPE(RTCVideoFrame) *badFrame =
49*d9f75844SAndroid Build Coastguard Worker      [[RTC_OBJC_TYPE(RTCVideoFrame) alloc] initWithBuffer:badFrameBuffer
50*d9f75844SAndroid Build Coastguard Worker                                                  rotation:RTCVideoRotation_0
51*d9f75844SAndroid Build Coastguard Worker                                               timeStampNs:0];
52*d9f75844SAndroid Build Coastguard Worker  [_nv12TextureCache uploadFrameToTextures:badFrame];
53*d9f75844SAndroid Build Coastguard Worker}
54*d9f75844SAndroid Build Coastguard Worker
55*d9f75844SAndroid Build Coastguard Worker@end
56