Skip to content

Commit cd81ba0

Browse files
authored
[flutter_webrtc_tizen]Upgrade flutter webrtc to 1.4.1 (#993)
1 parent f441bc0 commit cd81ba0

56 files changed

Lines changed: 1433 additions & 381 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

packages/flutter_webrtc/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
## NEXT
22

3+
## 0.2.0
4+
35
* Update minimum Flutter and Dart version to 3.13 and 3.1.
46
* Fix analyze issue.
57
* Update code format.
68
* Adds compatibility with `http` 1.0 in example.
9+
* Update flutter_webrtc to 1.4.1.
710

811
## 0.1.3
912

packages/flutter_webrtc/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ For other Tizen devices :
4040

4141
```yaml
4242
dependencies:
43-
flutter_webrtc: ^0.9.46
44-
flutter_webrtc_tizen: ^0.1.3
43+
flutter_webrtc: ^1.3.1
44+
flutter_webrtc_tizen: ^0.2.0
4545
```
4646
4747
## Functionality

packages/flutter_webrtc/example/flutter_webrtc_demo/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ dependencies:
1010
cupertino_icons: ^1.0.3
1111
flutter:
1212
sdk: flutter
13-
flutter_webrtc: 0.9.46 # Use a fixed version due to build errors.
13+
flutter_webrtc: ^1.4.1
1414
flutter_webrtc_tizen:
1515
path: ../../
1616
http: ">=0.13.0 <2.0.0"

packages/flutter_webrtc/example/flutter_webrtc_example/pubspec.yaml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,24 @@ description: Demonstrates how to use the webrtc plugin.
33
publish_to: "none"
44

55
environment:
6-
sdk: ">=3.1.0 <4.0.0"
6+
sdk: ">=3.3.0 <4.0.0"
77
flutter: ">=3.13.0"
88

99
dependencies:
10+
cupertino_icons: ^1.0.2
1011
flutter:
1112
sdk: flutter
1213
flutter_background: ^1.0.0
13-
flutter_webrtc: 0.9.46 # Use a fixed version due to build errors.
14+
flutter_webrtc: ^1.4.1
1415
flutter_webrtc_tizen:
1516
path: ../../
17+
gallery_saver_plus: 3.2.4
1618
path_provider: ^2.0.7
1719
path_provider_tizen: ^2.0.2
1820
permission_handler: ^10.4.3
1921
permission_handler_tizen: ^1.3.0
20-
web: ^0.3.0
22+
sdp_transform: ^0.3.2
23+
web: ^1.0.0
2124

2225
dev_dependencies:
2326
flutter_test:

packages/flutter_webrtc/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ name: flutter_webrtc_tizen
22
homepage: https://github.com/flutter-tizen/plugins
33
description: Flutter WebRTC plugin for Tizen, based on GoogleWebRTC.
44
repository: https://github.com/flutter-tizen/plugins/tree/master/packages/flutter_webrtc
5-
version: 0.1.3
5+
version: 0.2.0
66

77
environment:
8-
sdk: ">=3.1.0 <4.0.0"
8+
sdk: ">=3.3.0 <4.0.0"
99
flutter: ">=3.13.0"
1010

1111
flutter:

packages/flutter_webrtc/tizen/inc/flutter_common.h

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212

1313
#include <list>
1414
#include <memory>
15+
#include <mutex>
16+
#include <optional>
17+
#include <queue>
1518
#include <string>
1619

1720
typedef flutter::EncodableValue EncodableValue;
@@ -26,6 +29,8 @@ typedef flutter::EventSink<EncodableValue> EventSink;
2629
typedef flutter::MethodCall<EncodableValue> MethodCall;
2730
typedef flutter::MethodResult<EncodableValue> MethodResult;
2831

32+
class TaskRunner;
33+
2934
// foo.StringValue() becomes std::get<std::string>(foo)
3035
// foo.IsString() becomes std::holds_alternative<std::string>(foo)
3136

@@ -88,6 +93,14 @@ inline double findDouble(const EncodableMap& map, const std::string& key) {
8893
return 0.0;
8994
}
9095

96+
inline std::optional<double> maybeFindDouble(const EncodableMap& map,
97+
const std::string& key) {
98+
auto it = map.find(EncodableValue(key));
99+
if (it != map.end() && TypeIs<double>(it->second))
100+
return GetValue<double>(it->second);
101+
return std::nullopt;
102+
}
103+
91104
inline std::vector<uint8_t> findVector(const EncodableMap& map,
92105
const std::string& key) {
93106
auto it = map.find(EncodableValue(key));
@@ -161,7 +174,8 @@ class MethodResultProxy {
161174
class EventChannelProxy {
162175
public:
163176
static std::unique_ptr<EventChannelProxy> Create(
164-
BinaryMessenger* messenger, const std::string& channelName);
177+
BinaryMessenger* messenger, TaskRunner* task_runner,
178+
const std::string& channelName);
165179

166180
virtual ~EventChannelProxy() = default;
167181

packages/flutter_webrtc/tizen/inc/flutter_data_channel.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ class FlutterRTCDataChannelObserver : public RTCDataChannelObserver {
1010
public:
1111
FlutterRTCDataChannelObserver(scoped_refptr<RTCDataChannel> data_channel,
1212
BinaryMessenger* messenger,
13+
TaskRunner* task_runner,
1314
const std::string& channel_name);
1415
virtual ~FlutterRTCDataChannelObserver();
1516

@@ -38,6 +39,9 @@ class FlutterDataChannel {
3839
const EncodableValue& data,
3940
std::unique_ptr<MethodResultProxy>);
4041

42+
void DataChannelGetBufferedAmount(RTCDataChannel* data_channel,
43+
std::unique_ptr<MethodResultProxy> result);
44+
4145
void DataChannelClose(RTCDataChannel* data_channel,
4246
const std::string& data_channel_uuid,
4347
std::unique_ptr<MethodResultProxy>);
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#ifndef FLUTTER_WEBRTC_RTC_DATA_PACKET_CRYPTOR_HXX
2+
#define FLUTTER_WEBRTC_RTC_DATA_PACKET_CRYPTOR_HXX
3+
4+
#include "flutter_common.h"
5+
#include "flutter_webrtc_base.h"
6+
#include "rtc_data_packet_cryptor.h"
7+
8+
namespace flutter_webrtc_plugin {
9+
10+
class FlutterDataPacketCryptor {
11+
public:
12+
FlutterDataPacketCryptor(FlutterWebRTCBase* base) : base_(base) {}
13+
14+
bool HandleDataPacketCryptorMethodCall(
15+
const MethodCallProxy& method_call,
16+
std::unique_ptr<MethodResultProxy> result,
17+
std::unique_ptr<MethodResultProxy>* outResult);
18+
19+
void CreateDataPacketCryptor(const EncodableMap& constraints,
20+
std::unique_ptr<MethodResultProxy> result);
21+
22+
void DataPacketCryptorDispose(const EncodableMap& constraints,
23+
std::unique_ptr<MethodResultProxy> result);
24+
25+
void DataPacketCryptorEncrypt(const EncodableMap& constraints,
26+
std::unique_ptr<MethodResultProxy> result);
27+
28+
void DataPacketCryptorDecrypt(const EncodableMap& constraints,
29+
std::unique_ptr<MethodResultProxy> result);
30+
31+
private:
32+
FlutterWebRTCBase* base_;
33+
std::map<std::string, scoped_refptr<libwebrtc::RTCDataPacketCryptor>>
34+
data_packet_cryptors_;
35+
};
36+
37+
} // namespace flutter_webrtc_plugin
38+
39+
#endif // FLUTTER_WEBRTC_RTC_DATA_PACKET_CRYPTOR_HXX
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#ifndef FLUTTER_WEBRTC_RTC_FRAME_CAPTURER_HXX
2+
#define FLUTTER_WEBRTC_RTC_FRAME_CAPTURER_HXX
3+
4+
#include <atomic>
5+
#include <condition_variable>
6+
#include <mutex>
7+
8+
#include "flutter_common.h"
9+
#include "flutter_webrtc_base.h"
10+
#include "rtc_video_frame.h"
11+
#include "rtc_video_renderer.h"
12+
13+
namespace flutter_webrtc_plugin {
14+
15+
using namespace libwebrtc;
16+
17+
class FlutterFrameCapturer
18+
: public RTCVideoRenderer<scoped_refptr<RTCVideoFrame>> {
19+
public:
20+
FlutterFrameCapturer(RTCVideoTrack* track, std::string path);
21+
22+
virtual void OnFrame(scoped_refptr<RTCVideoFrame> frame) override;
23+
24+
void CaptureFrame(std::unique_ptr<MethodResultProxy> result);
25+
26+
private:
27+
RTCVideoTrack* track_;
28+
std::string path_;
29+
std::mutex mutex_;
30+
std::condition_variable cv_;
31+
scoped_refptr<RTCVideoFrame> frame_;
32+
std::atomic<bool> catch_frame_;
33+
34+
bool SaveFrame();
35+
};
36+
37+
} // namespace flutter_webrtc_plugin
38+
39+
#endif // !FLUTTER_WEBRTC_RTC_FRAME_CAPTURER_HXX

packages/flutter_webrtc/tizen/inc/flutter_frame_cryptor.h

100755100644
Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ namespace flutter_webrtc_plugin {
1010
class FlutterFrameCryptorObserver : public libwebrtc::RTCFrameCryptorObserver {
1111
public:
1212
FlutterFrameCryptorObserver(BinaryMessenger* messenger,
13+
TaskRunner* task_runner,
1314
const std::string& channelName)
14-
: event_channel_(EventChannelProxy::Create(messenger, channelName)) {}
15+
: event_channel_(
16+
EventChannelProxy::Create(messenger, task_runner, channelName)) {}
1517
void OnFrameCryptionStateChanged(const string participant_id,
1618
libwebrtc::RTCFrameCryptionState state);
1719

@@ -23,8 +25,12 @@ class FlutterFrameCryptor {
2325
public:
2426
FlutterFrameCryptor(FlutterWebRTCBase* base) : base_(base) {}
2527

26-
bool HandleFrameCryptorMethodCall(const MethodCallProxy& method_call,
27-
std::unique_ptr<MethodResultProxy> result);
28+
// Since this takes ownership of result, ownership will be passed back to
29+
// 'outResult' if this function fails
30+
bool HandleFrameCryptorMethodCall(
31+
const MethodCallProxy& method_call,
32+
std::unique_ptr<MethodResultProxy> result,
33+
std::unique_ptr<MethodResultProxy>* outResult);
2834

2935
void FrameCryptorFactoryCreateFrameCryptor(
3036
const EncodableMap& constraints,
@@ -57,6 +63,7 @@ class FlutterFrameCryptor {
5763

5864
void KeyProviderExportSharedKey(const EncodableMap& constraints,
5965
std::unique_ptr<MethodResultProxy> result);
66+
6067
void KeyProviderSetKey(const EncodableMap& constraints,
6168
std::unique_ptr<MethodResultProxy> result);
6269

@@ -91,7 +98,6 @@ class FlutterFrameCryptor {
9198
frame_cryptors_;
9299
std::map<std::string, scoped_refptr<FlutterFrameCryptorObserver>>
93100
frame_cryptor_observers_;
94-
std::map<std::string, scoped_refptr<libwebrtc::KeyProvider>> key_providers_;
95101
};
96102

97103
} // namespace flutter_webrtc_plugin

0 commit comments

Comments
 (0)