Reland "Inform VideoEncoder of negotiated capabilities"
This is a reland of 11dfff0878c949f2e19d95a0ddc209cdad94b3b4 Now that I am sure that WebRTC code is not calling the obsolete versions, I will just remove the NOT_REACHED and call the new version from the old ones, so as not to trip up downstream projects. Original change's description: > Inform VideoEncoder of negotiated capabilities > > After this CL lands, an announcement will be made to > discuss-webrtc about the deprecation of one version > of InitEncode(). > > Bug: webrtc:10720 > Change-Id: Ib992af0272bbb16ae16ef7e69491f365702d179e > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140884 > Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> > Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> > Reviewed-by: Erik Språng <sprang@webrtc.org> > Commit-Queue: Elad Alon <eladalon@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#28224} TBR=sakal@webrtc.org,kwiberg@webrtc.org,sprang@webrtc.org Bug: webrtc:10720 Change-Id: I46c69e45c190805c07f7e51acbe277d7eebd1600 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/141412 Commit-Queue: Elad Alon <eladalon@webrtc.org> Reviewed-by: Elad Alon <eladalon@webrtc.org> Cr-Commit-Position: refs/heads/master@{#28236}
This commit is contained in:
@ -97,8 +97,7 @@ class MediaCodecVideoEncoder : public VideoEncoder {
|
||||
|
||||
// VideoEncoder implementation.
|
||||
int32_t InitEncode(const VideoCodec* codec_settings,
|
||||
int32_t /* number_of_cores */,
|
||||
size_t /* max_payload_size */) override;
|
||||
const Settings& settings) override;
|
||||
int32_t Encode(const VideoFrame& input_image,
|
||||
const std::vector<VideoFrameType>* frame_types) override;
|
||||
int32_t RegisterEncodeCompleteCallback(
|
||||
@ -304,8 +303,7 @@ MediaCodecVideoEncoder::MediaCodecVideoEncoder(JNIEnv* jni,
|
||||
}
|
||||
|
||||
int32_t MediaCodecVideoEncoder::InitEncode(const VideoCodec* codec_settings,
|
||||
int32_t /* number_of_cores */,
|
||||
size_t /* max_payload_size */) {
|
||||
const Settings& settings) {
|
||||
RTC_DCHECK_RUN_ON(&encoder_queue_checker_);
|
||||
if (codec_settings == NULL) {
|
||||
ALOGE << "NULL VideoCodec instance";
|
||||
|
||||
@ -38,13 +38,13 @@ VideoEncoderWrapper::VideoEncoderWrapper(JNIEnv* jni,
|
||||
}
|
||||
VideoEncoderWrapper::~VideoEncoderWrapper() = default;
|
||||
|
||||
int32_t VideoEncoderWrapper::InitEncode(const VideoCodec* codec_settings,
|
||||
int32_t number_of_cores,
|
||||
size_t max_payload_size) {
|
||||
int VideoEncoderWrapper::InitEncode(const VideoCodec* codec_settings,
|
||||
const Settings& settings) {
|
||||
JNIEnv* jni = AttachCurrentThreadIfNeeded();
|
||||
|
||||
number_of_cores_ = number_of_cores;
|
||||
codec_settings_ = *codec_settings;
|
||||
capabilities_ = settings.capabilities;
|
||||
number_of_cores_ = settings.number_of_cores;
|
||||
num_resets_ = 0;
|
||||
{
|
||||
rtc::CritScope lock(&encoder_queue_crit_);
|
||||
@ -69,12 +69,16 @@ int32_t VideoEncoderWrapper::InitEncodeInternal(JNIEnv* jni) {
|
||||
automatic_resize_on = true;
|
||||
}
|
||||
|
||||
RTC_DCHECK(capabilities_);
|
||||
ScopedJavaLocalRef<jobject> capabilities =
|
||||
Java_Capabilities_Constructor(jni, capabilities_->loss_notification);
|
||||
|
||||
ScopedJavaLocalRef<jobject> settings = Java_Settings_Constructor(
|
||||
jni, number_of_cores_, codec_settings_.width, codec_settings_.height,
|
||||
static_cast<int>(codec_settings_.startBitrate),
|
||||
static_cast<int>(codec_settings_.maxFramerate),
|
||||
static_cast<int>(codec_settings_.numberOfSimulcastStreams),
|
||||
automatic_resize_on);
|
||||
automatic_resize_on, capabilities);
|
||||
|
||||
ScopedJavaLocalRef<jobject> callback =
|
||||
Java_VideoEncoderWrapper_createEncoderCallback(jni,
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/types/optional.h"
|
||||
#include "api/task_queue/task_queue_base.h"
|
||||
#include "api/video_codecs/video_encoder.h"
|
||||
#include "common_video/h264/h264_bitstream_parser.h"
|
||||
@ -33,8 +34,7 @@ class VideoEncoderWrapper : public VideoEncoder {
|
||||
~VideoEncoderWrapper() override;
|
||||
|
||||
int32_t InitEncode(const VideoCodec* codec_settings,
|
||||
int32_t number_of_cores,
|
||||
size_t max_payload_size) override;
|
||||
const Settings& settings) override;
|
||||
|
||||
int32_t RegisterEncodeCompleteCallback(
|
||||
EncodedImageCallback* callback) override;
|
||||
@ -95,6 +95,7 @@ class VideoEncoderWrapper : public VideoEncoder {
|
||||
EncodedImageCallback* callback_;
|
||||
bool initialized_;
|
||||
int num_resets_;
|
||||
absl::optional<VideoEncoder::Capabilities> capabilities_;
|
||||
int number_of_cores_;
|
||||
VideoCodec codec_settings_;
|
||||
EncoderInfo encoder_info_;
|
||||
|
||||
Reference in New Issue
Block a user