Added java interface VideoEncoderFactory.VideoEncoderSelector and implemented VideoEncoderSelectorWrapper.

Bug: webrtc:11341
Change-Id: Ic15658e09643aec119a97ddfaebfdb72ba3407c7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168487
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30519}
This commit is contained in:
philipel
2020-02-12 11:24:45 +01:00
committed by Commit Bot
parent 677e62785d
commit cddfc46db6
3 changed files with 85 additions and 0 deletions

View File

@ -14,6 +14,25 @@ import android.support.annotation.Nullable;
/** Factory for creating VideoEncoders. */
public interface VideoEncoderFactory {
public interface VideoEncoderSelector {
/** Called with the VideoCodecInfo of the currently used encoder. */
@CalledByNative("VideoEncoderSelector") void onCurrentEncoder(VideoCodecInfo info);
/**
* Called with the current encoding bitrate. Returns null if the encoder
* selector which to keep the current encoder or a VideoCodecInfo if a
* new encoder is preferred.
*/
@Nullable @CalledByNative("VideoEncoderSelector") VideoCodecInfo onEncodingBitrate(int kbps);
/**
* Called when the currently used encoder signal itself as broken. Returns
* null if the encoder selector which to keep the current encoder or a
* VideoCodecInfo if a new encoder is preferred.
*/
@Nullable @CalledByNative("VideoEncoderSelector") VideoCodecInfo onEncoderBroken();
}
/** Creates an encoder for the given video codec. */
@Nullable @CalledByNative VideoEncoder createEncoder(VideoCodecInfo info);
@ -32,4 +51,13 @@ public interface VideoEncoderFactory {
default VideoCodecInfo[] getImplementations() {
return getSupportedCodecs();
}
/**
* Returns a VideoEncoderSelector if implemented by the VideoEncoderFactory,
* null otherwise.
*/
@CalledByNative
default VideoEncoderSelector getEncoderSelector() {
return null;
}
}