Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@

# Changelog

[1.0.6] - 2025-05-27
* [iOS] Added native audio route picker for iOS
* [Android] Expanded the mapping for audio device types
* Synced flutter-webrtc v0.14.1
* [Android] fix: Recording bug (#1839)
* [Android] fix: calls in terminated mode by disabling orientation manager (#1840)
* [Android] fix: Wait for audio and video thread to fully stop to avoid corrupted recordings (#1836)

[1.0.5] - 2025-05-20
* [iOS] Bumped StreamWebRTC version to 125.6422.070
* Synced flutter-webrtc v0.14.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.concurrent.CountDownLatch;

class VideoFileRenderer implements VideoSink, SamplesReadyCallback {
private static final String TAG = "VideoFileRenderer";
Expand Down Expand Up @@ -127,27 +128,50 @@ private void renderFrameOnRenderThread(VideoFrame frame) {
/**
* Release all resources. All already posted frames will be rendered first.
*/
// Start Signify modification
void release() {
isRunning = false;
if (audioThreadHandler != null)
CountDownLatch latch = new CountDownLatch(audioThreadHandler != null ? 2 : 1);
if (audioThreadHandler != null) {
audioThreadHandler.post(() -> {
if (audioEncoder != null) {
audioEncoder.stop();
audioEncoder.release();
try{
if (audioEncoder != null) {
audioEncoder.stop();
audioEncoder.release();
}
audioThread.quit();
} finally {
latch.countDown();
}
audioThread.quit();
});
}

renderThreadHandler.post(() -> {
if (encoder != null) {
encoder.stop();
encoder.release();
try {
if (encoder != null) {
encoder.stop();
encoder.release();
}
eglBase.release();
if (muxerStarted) {
mediaMuxer.stop();
mediaMuxer.release();
muxerStarted = false;
}
renderThread.quit();
} finally {
latch.countDown();
}
eglBase.release();
mediaMuxer.stop();
mediaMuxer.release();
renderThread.quit();
});

try {
latch.await();
} catch (InterruptedException e) {
Log.e(TAG, "Release interrupted", e);
Thread.currentThread().interrupt();
}
}
// End Signify modification

private boolean encoderStarted = false;
private volatile boolean muxerStarted = false;
Expand All @@ -174,7 +198,7 @@ private void drainEncoder() {

Log.e(TAG, "encoder output format changed: " + newFormat);
trackIndex = mediaMuxer.addTrack(newFormat);
if (audioTrackIndex != -1 && !muxerStarted) {
if (trackIndex != -1 && !muxerStarted) {
mediaMuxer.start();
muxerStarted = true;
}
Expand Down Expand Up @@ -230,7 +254,7 @@ private void drainAudio() {

Log.w(TAG, "encoder output format changed: " + newFormat);
audioTrackIndex = mediaMuxer.addTrack(newFormat);
if (trackIndex != -1 && !muxerStarted) {
if (audioTrackIndex != -1 && !muxerStarted) {
mediaMuxer.start();
muxerStarted = true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,14 @@ public CameraUtils(GetUserMediaImpl getUserMediaImpl, Activity activity) {
this.getUserMediaImpl = getUserMediaImpl;
this.activity = activity;
this.deviceOrientationManager = new DeviceOrientationManager(activity, 0);
this.deviceOrientationManager.start();
// commented out because you cannot register a reciever when the app is terminated
// because the activity is null?
// this causes the call to break if the app is terminated
// the manager seems to end up at handleOrientationChange which does not do
// anything at the moment so this should be ok

// TODO: get a proper fix at some point
// this.deviceOrientationManager.start();
}

public void setFocusMode(MethodCall call, AnyThreadResult result) {
Expand Down
2 changes: 1 addition & 1 deletion ios/stream_webrtc_flutter.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#
Pod::Spec.new do |s|
s.name = 'stream_webrtc_flutter'
s.version = '1.0.5'
s.version = '1.0.6'
s.summary = 'Flutter WebRTC plugin for iOS.'
s.description = <<-DESC
A new flutter plugin project.
Expand Down
2 changes: 1 addition & 1 deletion macos/stream_webrtc_flutter.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#
Pod::Spec.new do |s|
s.name = 'stream_webrtc_flutter'
s.version = '1.0.5'
s.version = '1.0.6'
s.summary = 'Flutter WebRTC plugin for macOS.'
s.description = <<-DESC
A new flutter plugin project.
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: stream_webrtc_flutter
description: Flutter WebRTC plugin for iOS/Android/Destkop/Web, based on GoogleWebRTC.
version: 1.0.5
version: 1.0.6
homepage: https://github.com/GetStream/webrtc-flutter
environment:
sdk: ">=3.3.0 <4.0.0"
Expand Down
Loading