Source code

Revision control

Copy as Markdown

Other Tools

/*
* Copyright 2018 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#import <CoreVideo/CoreVideo.h>
#import <Foundation/Foundation.h>
#import <GLKit/GLKit.h>
#import <XCTest/XCTest.h>
#import "base/RTCVideoFrame.h"
#import "base/RTCVideoFrameBuffer.h"
#import "components/renderer/opengl/RTCNV12TextureCache.h"
#import "components/video_frame_buffer/RTCCVPixelBuffer.h"
@interface RTCNV12TextureCacheTests : XCTestCase
@end
@implementation RTCNV12TextureCacheTests {
EAGLContext *_glContext;
RTCNV12TextureCache *_nv12TextureCache;
}
- (void)setUp {
[super setUp];
_glContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];
if (!_glContext) {
_glContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
}
_nv12TextureCache = [[RTCNV12TextureCache alloc] initWithContext:_glContext];
}
- (void)tearDown {
_nv12TextureCache = nil;
_glContext = nil;
[super tearDown];
}
- (void)testNV12TextureCacheDoesNotCrashOnEmptyFrame {
CVPixelBufferRef nullPixelBuffer = NULL;
RTC_OBJC_TYPE(RTCCVPixelBuffer) *badFrameBuffer =
[[RTC_OBJC_TYPE(RTCCVPixelBuffer) alloc] initWithPixelBuffer:nullPixelBuffer];
RTC_OBJC_TYPE(RTCVideoFrame) *badFrame =
[[RTC_OBJC_TYPE(RTCVideoFrame) alloc] initWithBuffer:badFrameBuffer
rotation:RTCVideoRotation_0
timeStampNs:0];
[_nv12TextureCache uploadFrameToTextures:badFrame];
}
@end