/* * Copyright 2013 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. */ package org.webrtc; import android.content.Context; // Base interface for all VideoCapturers to implement. public interface VideoCapturer { /** * This function is used to initialize the camera thread, the android application context, and the * capture observer. It will be called only once and before any startCapture() request. The * camera thread is guaranteed to be valid until dispose() is called. If the VideoCapturer wants * to deliver texture frames, it should do this by rendering on the SurfaceTexture in * {@code surfaceTextureHelper}, register itself as a listener, and forward the frames to * CapturerObserver.onFrameCaptured(). The caller still has ownership of {@code * surfaceTextureHelper} and is responsible for making sure surfaceTextureHelper.dispose() is * called. This also means that the caller can reuse the SurfaceTextureHelper to initialize a new * VideoCapturer once the previous VideoCapturer has been disposed. */ void initialize(SurfaceTextureHelper surfaceTextureHelper, Context applicationContext, CapturerObserver capturerObserver); /** * Start capturing frames in a format that is as close as possible to {@code width x height} and * {@code framerate}. */ void startCapture(int width, int height, int framerate); /** * Stop capturing. This function should block until capture is actually stopped. */ void stopCapture() throws InterruptedException; void changeCaptureFormat(int width, int height, int framerate); /** * Perform any final cleanup here. No more capturing will be done after this call. */ void dispose(); /** * @return true if-and-only-if this is a screen capturer. */ boolean isScreencast(); }