Quit on audio configuration failure

When audio capture fails on the device, scrcpy continue mirroring the
video stream. This allows to enable audio by default only when
supported.

However, if an audio configuration occurs (for example the user
explicitly selected an unknown audio encoder), this must be treated as
an error and scrcpy must exit.

PR #3757 <https://github.com/Genymobile/scrcpy/pull/3757>
This commit is contained in:
Romain Vimont
2023-02-23 21:27:11 +01:00
parent afbeeeb678
commit b93a8b911b
4 changed files with 32 additions and 8 deletions

View File

@@ -222,7 +222,7 @@ public final class AudioEncoder {
public void encode() throws IOException, ConfigurationException {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
Ln.w("Audio disabled: it is not supported before Android 11");
streamer.writeDisableStream();
streamer.writeDisableStream(false);
return;
}
@@ -279,9 +279,13 @@ public final class AudioEncoder {
outputThread.start();
waitEnded();
} catch (ConfigurationException e) {
// Notify the error to make scrcpy exit
streamer.writeDisableStream(true);
throw e;
} catch (Throwable e) {
// Notify the client that the audio could not be captured
streamer.writeDisableStream();
streamer.writeDisableStream(false);
throw e;
} finally {
// Cleanup everything (either at the end or on error at any step of the initialization)