Move MediaConstraintsInterface to sdk/, and make it a concrete class
Bug: webrtc:9239 Change-Id: I545ebf59b078dd94bc466886616dd374e4b2e226 Reviewed-on: https://webrtc-review.googlesource.com/c/122502 Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Reviewed-by: Magnus Jedvert <magjed@webrtc.org> Commit-Queue: Niels Moller <nisse@webrtc.org> Cr-Commit-Position: refs/heads/master@{#26682}
This commit is contained in:
@ -21,10 +21,10 @@ namespace jni {
|
||||
namespace {
|
||||
|
||||
// Helper for translating a List<Pair<String, String>> to a Constraints.
|
||||
MediaConstraintsInterface::Constraints PopulateConstraintsFromJavaPairList(
|
||||
MediaConstraints::Constraints PopulateConstraintsFromJavaPairList(
|
||||
JNIEnv* env,
|
||||
const JavaRef<jobject>& j_list) {
|
||||
MediaConstraintsInterface::Constraints constraints;
|
||||
MediaConstraints::Constraints constraints;
|
||||
for (const JavaRef<jobject>& entry : Iterable(env, j_list)) {
|
||||
constraints.emplace_back(
|
||||
JavaToStdString(env, Java_KeyValuePair_getKey(env, entry)),
|
||||
@ -33,34 +33,17 @@ MediaConstraintsInterface::Constraints PopulateConstraintsFromJavaPairList(
|
||||
return constraints;
|
||||
}
|
||||
|
||||
// Wrapper for a Java MediaConstraints object. Copies all needed data so when
|
||||
// the constructor returns the Java object is no longer needed.
|
||||
class MediaConstraintsJni : public MediaConstraintsInterface {
|
||||
public:
|
||||
MediaConstraintsJni(JNIEnv* env, const JavaRef<jobject>& j_constraints)
|
||||
: mandatory_(PopulateConstraintsFromJavaPairList(
|
||||
env,
|
||||
Java_MediaConstraints_getMandatory(env, j_constraints))),
|
||||
optional_(PopulateConstraintsFromJavaPairList(
|
||||
env,
|
||||
Java_MediaConstraints_getOptional(env, j_constraints))) {}
|
||||
~MediaConstraintsJni() override = default;
|
||||
|
||||
// MediaConstraintsInterface.
|
||||
const Constraints& GetMandatory() const override { return mandatory_; }
|
||||
const Constraints& GetOptional() const override { return optional_; }
|
||||
|
||||
private:
|
||||
const Constraints mandatory_;
|
||||
const Constraints optional_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
std::unique_ptr<MediaConstraintsInterface> JavaToNativeMediaConstraints(
|
||||
// Copies all needed data so Java object is no longer needed at return.
|
||||
std::unique_ptr<MediaConstraints> JavaToNativeMediaConstraints(
|
||||
JNIEnv* env,
|
||||
const JavaRef<jobject>& j_constraints) {
|
||||
return absl::make_unique<MediaConstraintsJni>(env, j_constraints);
|
||||
return absl::make_unique<MediaConstraints>(
|
||||
PopulateConstraintsFromJavaPairList(
|
||||
env, Java_MediaConstraints_getMandatory(env, j_constraints)),
|
||||
PopulateConstraintsFromJavaPairList(
|
||||
env, Java_MediaConstraints_getOptional(env, j_constraints)));
|
||||
}
|
||||
|
||||
} // namespace jni
|
||||
|
||||
@ -14,13 +14,13 @@
|
||||
#include <jni.h>
|
||||
#include <memory>
|
||||
|
||||
#include "api/media_constraints_interface.h"
|
||||
#include "sdk/android/native_api/jni/scoped_java_ref.h"
|
||||
#include "sdk/media_constraints.h"
|
||||
|
||||
namespace webrtc {
|
||||
namespace jni {
|
||||
|
||||
std::unique_ptr<MediaConstraintsInterface> JavaToNativeMediaConstraints(
|
||||
std::unique_ptr<MediaConstraints> JavaToNativeMediaConstraints(
|
||||
JNIEnv* env,
|
||||
const JavaRef<jobject>& j_constraints);
|
||||
|
||||
|
||||
@ -33,7 +33,6 @@
|
||||
#include <utility>
|
||||
|
||||
#include "absl/memory/memory.h"
|
||||
#include "api/media_constraints_interface.h"
|
||||
#include "api/peer_connection_interface.h"
|
||||
#include "api/rtp_receiver_interface.h"
|
||||
#include "api/rtp_sender_interface.h"
|
||||
@ -411,7 +410,7 @@ OwnedPeerConnection::OwnedPeerConnection(
|
||||
OwnedPeerConnection::OwnedPeerConnection(
|
||||
rtc::scoped_refptr<PeerConnectionInterface> peer_connection,
|
||||
std::unique_ptr<PeerConnectionObserver> observer,
|
||||
std::unique_ptr<MediaConstraintsInterface> constraints)
|
||||
std::unique_ptr<MediaConstraints> constraints)
|
||||
: peer_connection_(peer_connection),
|
||||
observer_(std::move(observer)),
|
||||
constraints_(std::move(constraints)) {}
|
||||
@ -482,7 +481,7 @@ static void JNI_PeerConnection_CreateOffer(
|
||||
const JavaParamRef<jobject>& j_pc,
|
||||
const JavaParamRef<jobject>& j_observer,
|
||||
const JavaParamRef<jobject>& j_constraints) {
|
||||
std::unique_ptr<MediaConstraintsInterface> constraints =
|
||||
std::unique_ptr<MediaConstraints> constraints =
|
||||
JavaToNativeMediaConstraints(jni, j_constraints);
|
||||
rtc::scoped_refptr<CreateSdpObserverJni> observer(
|
||||
new rtc::RefCountedObject<CreateSdpObserverJni>(jni, j_observer,
|
||||
@ -497,7 +496,7 @@ static void JNI_PeerConnection_CreateAnswer(
|
||||
const JavaParamRef<jobject>& j_pc,
|
||||
const JavaParamRef<jobject>& j_observer,
|
||||
const JavaParamRef<jobject>& j_constraints) {
|
||||
std::unique_ptr<MediaConstraintsInterface> constraints =
|
||||
std::unique_ptr<MediaConstraints> constraints =
|
||||
JavaToNativeMediaConstraints(jni, j_constraints);
|
||||
rtc::scoped_refptr<CreateSdpObserverJni> observer(
|
||||
new rtc::RefCountedObject<CreateSdpObserverJni>(jni, j_observer,
|
||||
|
||||
@ -108,18 +108,16 @@ class OwnedPeerConnection {
|
||||
OwnedPeerConnection(
|
||||
rtc::scoped_refptr<PeerConnectionInterface> peer_connection,
|
||||
std::unique_ptr<PeerConnectionObserver> observer,
|
||||
std::unique_ptr<MediaConstraintsInterface> constraints);
|
||||
std::unique_ptr<MediaConstraints> constraints);
|
||||
~OwnedPeerConnection();
|
||||
|
||||
PeerConnectionInterface* pc() const { return peer_connection_.get(); }
|
||||
const MediaConstraintsInterface* constraints() const {
|
||||
return constraints_.get();
|
||||
}
|
||||
const MediaConstraints* constraints() const { return constraints_.get(); }
|
||||
|
||||
private:
|
||||
rtc::scoped_refptr<PeerConnectionInterface> peer_connection_;
|
||||
std::unique_ptr<PeerConnectionObserver> observer_;
|
||||
std::unique_ptr<MediaConstraintsInterface> constraints_;
|
||||
std::unique_ptr<MediaConstraints> constraints_;
|
||||
};
|
||||
|
||||
} // namespace jni
|
||||
|
||||
@ -370,7 +370,7 @@ static jlong JNI_PeerConnectionFactory_CreateAudioSource(
|
||||
JNIEnv* jni,
|
||||
jlong native_factory,
|
||||
const JavaParamRef<jobject>& j_constraints) {
|
||||
std::unique_ptr<MediaConstraintsInterface> constraints =
|
||||
std::unique_ptr<MediaConstraints> constraints =
|
||||
JavaToNativeMediaConstraints(jni, j_constraints);
|
||||
cricket::AudioOptions options;
|
||||
CopyConstraintsIntoAudioOptions(constraints.get(), &options);
|
||||
@ -437,7 +437,7 @@ static jlong JNI_PeerConnectionFactory_CreatePeerConnection(
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<MediaConstraintsInterface> constraints;
|
||||
std::unique_ptr<MediaConstraints> constraints;
|
||||
if (!j_constraints.is_null()) {
|
||||
constraints = JavaToNativeMediaConstraints(jni, j_constraints);
|
||||
CopyConstraintsIntoRtcConfiguration(constraints.get(), &rtc_config);
|
||||
|
||||
@ -12,10 +12,10 @@
|
||||
|
||||
#include <utility>
|
||||
|
||||
#include "api/media_constraints_interface.h"
|
||||
#include "sdk/android/generated_peerconnection_jni/jni/SdpObserver_jni.h"
|
||||
#include "sdk/android/native_api/jni/java_types.h"
|
||||
#include "sdk/android/src/jni/jni_helpers.h"
|
||||
#include "sdk/media_constraints.h"
|
||||
|
||||
namespace webrtc {
|
||||
namespace jni {
|
||||
@ -23,7 +23,7 @@ namespace jni {
|
||||
CreateSdpObserverJni::CreateSdpObserverJni(
|
||||
JNIEnv* env,
|
||||
const JavaRef<jobject>& j_observer,
|
||||
std::unique_ptr<MediaConstraintsInterface> constraints)
|
||||
std::unique_ptr<MediaConstraints> constraints)
|
||||
: j_observer_global_(env, j_observer),
|
||||
constraints_(std::move(constraints)) {}
|
||||
|
||||
@ -47,7 +47,7 @@ void CreateSdpObserverJni::OnFailure(webrtc::RTCError error) {
|
||||
SetSdpObserverJni::SetSdpObserverJni(
|
||||
JNIEnv* env,
|
||||
const JavaRef<jobject>& j_observer,
|
||||
std::unique_ptr<MediaConstraintsInterface> constraints)
|
||||
std::unique_ptr<MediaConstraints> constraints)
|
||||
: j_observer_global_(env, j_observer),
|
||||
constraints_(std::move(constraints)) {}
|
||||
|
||||
|
||||
@ -14,10 +14,10 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "api/media_constraints_interface.h"
|
||||
#include "api/peer_connection_interface.h"
|
||||
#include "sdk/android/src/jni/jni_helpers.h"
|
||||
#include "sdk/android/src/jni/pc/session_description.h"
|
||||
#include "sdk/media_constraints.h"
|
||||
|
||||
namespace webrtc {
|
||||
namespace jni {
|
||||
@ -26,34 +26,34 @@ class CreateSdpObserverJni : public CreateSessionDescriptionObserver {
|
||||
public:
|
||||
CreateSdpObserverJni(JNIEnv* env,
|
||||
const JavaRef<jobject>& j_observer,
|
||||
std::unique_ptr<MediaConstraintsInterface> constraints);
|
||||
std::unique_ptr<MediaConstraints> constraints);
|
||||
~CreateSdpObserverJni() override;
|
||||
|
||||
MediaConstraintsInterface* constraints() { return constraints_.get(); }
|
||||
MediaConstraints* constraints() { return constraints_.get(); }
|
||||
|
||||
void OnSuccess(SessionDescriptionInterface* desc) override;
|
||||
void OnFailure(RTCError error) override;
|
||||
|
||||
private:
|
||||
const ScopedJavaGlobalRef<jobject> j_observer_global_;
|
||||
std::unique_ptr<MediaConstraintsInterface> constraints_;
|
||||
std::unique_ptr<MediaConstraints> constraints_;
|
||||
};
|
||||
|
||||
class SetSdpObserverJni : public SetSessionDescriptionObserver {
|
||||
public:
|
||||
SetSdpObserverJni(JNIEnv* env,
|
||||
const JavaRef<jobject>& j_observer,
|
||||
std::unique_ptr<MediaConstraintsInterface> constraints);
|
||||
std::unique_ptr<MediaConstraints> constraints);
|
||||
~SetSdpObserverJni() override;
|
||||
|
||||
MediaConstraintsInterface* constraints() { return constraints_.get(); }
|
||||
MediaConstraints* constraints() { return constraints_.get(); }
|
||||
|
||||
void OnSuccess() override;
|
||||
void OnFailure(RTCError error) override;
|
||||
|
||||
private:
|
||||
const ScopedJavaGlobalRef<jobject> j_observer_global_;
|
||||
std::unique_ptr<MediaConstraintsInterface> constraints_;
|
||||
std::unique_ptr<MediaConstraints> constraints_;
|
||||
};
|
||||
|
||||
} // namespace jni
|
||||
|
||||
Reference in New Issue
Block a user