1eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström/* 2eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 3eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström * 4eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström * Use of this source code is governed by a BSD-style license 5eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström * that can be found in the LICENSE file in the root of the source 6eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström * tree. An additional intellectual property rights grant can be found 7eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström * in the file PATENTS. All contributing project authors may 8eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström * be found in the AUTHORS file in the root of the source tree. 9eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström */ 10eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström#ifndef WEBRTC_TEST_FAKE_TEXTURE_FRAME_H_ 11eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström#define WEBRTC_TEST_FAKE_TEXTURE_FRAME_H_ 12eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström 13eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström#include "webrtc/base/checks.h" 146f8ce060a21fcdc1c951fbf06768eb0cc0083b2fkjellander#include "webrtc/common_video/include/video_frame_buffer.h" 15eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström#include "webrtc/video_frame.h" 16eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström 17eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boströmnamespace webrtc { 18eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boströmnamespace test { 19eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström 2013f61dfea59a546e4e0081eb79e38c542ec51cf6Peter Boströmclass FakeNativeHandle { 2113f61dfea59a546e4e0081eb79e38c542ec51cf6Peter Boström public: 2213f61dfea59a546e4e0081eb79e38c542ec51cf6Peter Boström static VideoFrame CreateFrame(FakeNativeHandle* native_handle, 2313f61dfea59a546e4e0081eb79e38c542ec51cf6Peter Boström int width, 2413f61dfea59a546e4e0081eb79e38c542ec51cf6Peter Boström int height, 2513f61dfea59a546e4e0081eb79e38c542ec51cf6Peter Boström uint32_t timestamp, 2613f61dfea59a546e4e0081eb79e38c542ec51cf6Peter Boström int64_t render_time_ms, 2713f61dfea59a546e4e0081eb79e38c542ec51cf6Peter Boström VideoRotation rotation); 2813f61dfea59a546e4e0081eb79e38c542ec51cf6Peter Boström}; 29eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström 30eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boströmclass FakeNativeHandleBuffer : public NativeHandleBuffer { 31eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström public: 32eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström FakeNativeHandleBuffer(void* native_handle, int width, int height) 33eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström : NativeHandleBuffer(native_handle, width, height) {} 34eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström 35eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström ~FakeNativeHandleBuffer() { 36eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström delete reinterpret_cast<FakeNativeHandle*>(native_handle_); 37eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström } 38eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström 39eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström private: 40eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström rtc::scoped_refptr<VideoFrameBuffer> NativeToI420Buffer() override { 41eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström rtc::scoped_refptr<VideoFrameBuffer> buffer( 42eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström new rtc::RefCountedObject<I420Buffer>(width_, height_)); 43eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström int half_height = (height_ + 1) / 2; 44eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström int half_width = (width_ + 1) / 2; 453318f984cd7f51d24da4726665c05f5f06f82e6dMagnus Jedvert memset(buffer->MutableData(kYPlane), 0, height_ * width_); 463318f984cd7f51d24da4726665c05f5f06f82e6dMagnus Jedvert memset(buffer->MutableData(kUPlane), 0, half_height * half_width); 473318f984cd7f51d24da4726665c05f5f06f82e6dMagnus Jedvert memset(buffer->MutableData(kVPlane), 0, half_height * half_width); 48eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström return buffer; 49eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström } 50eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström}; 51eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström 52eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström} // namespace test 53eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström} // namespace webrtc 54eb66e800d1f5f74ab366715d2618fbede8cf3e12Peter Boström#endif // WEBRTC_TEST_FAKE_TEXTURE_FRAME_H_ 55