| /* | |
| * 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. | |
| */ | |
| package org.webrtc; | |
| import android.media.MediaCodec; | |
| import android.media.MediaCodecInfo; | |
| import android.media.MediaCrypto; | |
| import android.media.MediaFormat; | |
| import android.os.Bundle; | |
| import android.view.Surface; | |
| import java.nio.ByteBuffer; | |
| /** | |
| * Subset of methods defined in {@link android.media.MediaCodec} needed by | |
| * {@link HardwareVideoEncoder} and {@link AndroidVideoDecoder}. This interface | |
| * exists to allow mocking and using a fake implementation in tests. | |
| */ | |
| interface MediaCodecWrapper { | |
| void configure(MediaFormat format, Surface surface, MediaCrypto crypto, int flags); | |
| void start(); | |
| void flush(); | |
| void stop(); | |
| void release(); | |
| int dequeueInputBuffer(long timeoutUs); | |
| void queueInputBuffer(int index, int offset, int size, long presentationTimeUs, int flags); | |
| int dequeueOutputBuffer(MediaCodec.BufferInfo info, long timeoutUs); | |
| void releaseOutputBuffer(int index, boolean render); | |
| MediaFormat getInputFormat(); | |
| MediaFormat getOutputFormat(); | |
| MediaFormat getOutputFormat(int index); | |
| ByteBuffer getInputBuffer(int index); | |
| ByteBuffer getOutputBuffer(int index); | |
| Surface createInputSurface(); | |
| void setParameters(Bundle params); | |
| MediaCodecInfo getCodecInfo(); | |
| } |