Update Android encoder to use GetEncoderInfo()
This method replaces GetScalingSettings(), SupportsNativeHandle() and
GetImplementationName().
Bug: webrtc:9890
Change-Id: I755cd4c6b1f04853a35f1185a84bda7c8c8efb62
Reviewed-on: https://webrtc-review.googlesource.com/c/109440
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25527}
diff --git a/sdk/android/src/jni/androidmediaencoder.cc b/sdk/android/src/jni/androidmediaencoder.cc
index d593548..d25b0db 100644
--- a/sdk/android/src/jni/androidmediaencoder.cc
+++ b/sdk/android/src/jni/androidmediaencoder.cc
@@ -107,9 +107,7 @@
int32_t Release() override;
int32_t SetRateAllocation(const VideoBitrateAllocation& rate_allocation,
uint32_t frame_rate) override;
-
- bool SupportsNativeHandle() const override { return has_egl_context_; }
- const char* ImplementationName() const override;
+ EncoderInfo GetEncoderInfo() const override;
// Fills the input buffer with data from the buffers passed as parameters.
bool FillInputBuffer(JNIEnv* jni,
@@ -178,7 +176,7 @@
// true on success.
bool DeliverPendingOutputs(JNIEnv* jni);
- VideoEncoder::ScalingSettings GetScalingSettings() const override;
+ VideoEncoder::ScalingSettings GetScalingSettingsInternal() const;
// Displays encoder statistics.
void LogStatistics(bool force_log);
@@ -923,6 +921,14 @@
return WEBRTC_VIDEO_CODEC_OK;
}
+VideoEncoder::EncoderInfo MediaCodecVideoEncoder::GetEncoderInfo() const {
+ EncoderInfo info;
+ info.supports_native_handle = has_egl_context_;
+ info.implementation_name = "MediaCodec";
+ info.scaling_settings = GetScalingSettingsInternal();
+ return info;
+}
+
bool MediaCodecVideoEncoder::DeliverPendingOutputs(JNIEnv* jni) {
RTC_DCHECK_CALLED_SEQUENTIALLY(&encoder_queue_checker_);
@@ -1141,8 +1147,8 @@
}
}
-VideoEncoder::ScalingSettings MediaCodecVideoEncoder::GetScalingSettings()
- const {
+VideoEncoder::ScalingSettings
+MediaCodecVideoEncoder::GetScalingSettingsInternal() const {
if (!scale_)
return VideoEncoder::ScalingSettings::kOff;
@@ -1199,10 +1205,6 @@
return VideoEncoder::ScalingSettings::kOff;
}
-const char* MediaCodecVideoEncoder::ImplementationName() const {
- return "MediaCodec";
-}
-
static void JNI_MediaCodecVideoEncoder_FillInputBuffer(
JNIEnv* jni,
const JavaParamRef<jclass>&,
diff --git a/sdk/android/src/jni/videoencoderwrapper.cc b/sdk/android/src/jni/videoencoderwrapper.cc
index 5878a41..f63785d 100644
--- a/sdk/android/src/jni/videoencoderwrapper.cc
+++ b/sdk/android/src/jni/videoencoderwrapper.cc
@@ -148,8 +148,16 @@
return HandleReturnCode(jni, ret, "setRateAllocation");
}
-VideoEncoderWrapper::ScalingSettings VideoEncoderWrapper::GetScalingSettings()
- const {
+VideoEncoder::EncoderInfo VideoEncoderWrapper::GetEncoderInfo() const {
+ EncoderInfo info;
+ info.supports_native_handle = true;
+ info.implementation_name = implementation_name_;
+ info.scaling_settings = GetScalingSettingsInternal();
+ return info;
+}
+
+VideoEncoderWrapper::ScalingSettings
+VideoEncoderWrapper::GetScalingSettingsInternal() const {
JNIEnv* jni = AttachCurrentThreadIfNeeded();
ScopedJavaLocalRef<jobject> j_scaling_settings =
Java_VideoEncoder_getScalingSettings(jni, encoder_);
@@ -198,14 +206,6 @@
}
}
-bool VideoEncoderWrapper::SupportsNativeHandle() const {
- return true;
-}
-
-const char* VideoEncoderWrapper::ImplementationName() const {
- return implementation_name_.c_str();
-}
-
void VideoEncoderWrapper::OnEncodedFrame(JNIEnv* jni,
const JavaRef<jobject>& j_caller,
const JavaRef<jobject>& j_buffer,
diff --git a/sdk/android/src/jni/videoencoderwrapper.h b/sdk/android/src/jni/videoencoderwrapper.h
index d1cf502..c35b880 100644
--- a/sdk/android/src/jni/videoencoderwrapper.h
+++ b/sdk/android/src/jni/videoencoderwrapper.h
@@ -48,9 +48,7 @@
int32_t SetRateAllocation(const VideoBitrateAllocation& allocation,
uint32_t framerate) override;
- ScalingSettings GetScalingSettings() const override;
-
- bool SupportsNativeHandle() const override;
+ EncoderInfo GetEncoderInfo() const override;
// Should only be called by JNI.
void OnEncodedFrame(JNIEnv* jni,
@@ -64,8 +62,6 @@
jboolean complete_frame,
const JavaRef<jobject>& j_qp);
- const char* ImplementationName() const override;
-
private:
struct FrameExtraInfo {
int64_t capture_time_ns; // Used as an identifier of the frame.
@@ -90,6 +86,8 @@
const VideoBitrateAllocation& allocation);
std::string GetImplementationName(JNIEnv* jni) const;
+ ScalingSettings GetScalingSettingsInternal() const;
+
const ScopedJavaGlobalRef<jobject> encoder_;
const ScopedJavaGlobalRef<jclass> int_array_class_;