Skip to content

Commit 4622b6f

Browse files
authored
Enable H264 codec on desktop platforms (#130)
1 parent 676ae1c commit 4622b6f

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

crates/libwebrtc-sys/build.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ fn main() -> anyhow::Result<()> {
5252
.include(libpath.join("include"))
5353
.include(libpath.join("include/third_party/abseil-cpp"))
5454
.include(libpath.join("include/third_party/libyuv/include"))
55-
.flag("-DNOMINMAX");
55+
.flag("-DNOMINMAX")
56+
.flag("-DWEBRTC_USE_H264");
5657

5758
#[cfg(target_os = "windows")]
5859
build.flag("-DNDEBUG");

example/integration_test/webrtc_test.dart

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,47 @@ void main() {
6464
await videoTrans1.dispose();
6565
});
6666

67+
testWidgets('Correct codecs', (WidgetTester tester) async {
68+
var server = IceServer(['stun:stun.l.google.com:19302']);
69+
var pc1 = await PeerConnection.create(IceTransportType.all, [server]);
70+
71+
var videoTransceiver = await pc1.addTransceiver(
72+
MediaKind.video, RtpTransceiverInit(TransceiverDirection.sendOnly));
73+
74+
var offer = (await pc1.createOffer()).description;
75+
76+
var codecs = ['VP8/90000', 'VP9/90000', 'AV1/90000'];
77+
if (!Platform.isAndroid) {
78+
codecs.add('H264/90000');
79+
}
80+
81+
for (var codec in codecs) {
82+
var reg = RegExp(r'a=rtpmap:\d{2,3} ' + codec);
83+
expect(offer.contains(reg), isTrue);
84+
85+
var rtpmaps = reg
86+
.allMatches(offer)
87+
.map((e) => RegExp(r'\d{2,3}').firstMatch(e[0]!)![0]!);
88+
89+
for (var rtpmap in rtpmaps) {
90+
var fbPref = 'a=rtcp-fb:$rtpmap ';
91+
92+
for (var fb in [
93+
'goog-remb',
94+
'transport-cc',
95+
'ccm fir',
96+
'nack',
97+
'nack pli',
98+
]) {
99+
expect(offer.contains(fbPref + fb), isTrue);
100+
}
101+
}
102+
}
103+
104+
await pc1.close();
105+
await videoTransceiver.dispose();
106+
});
107+
67108
testWidgets('Get transceivers', (WidgetTester tester) async {
68109
var pc = await PeerConnection.create(IceTransportType.all, []);
69110
var t1 = await pc.addTransceiver(

0 commit comments

Comments
 (0)