Add --require-audio

By default, scrcpy mirrors only the video when audio capture fails on
the device. Add an option to force scrcpy to fail if audio is enabled
but does not work.

PR #3757 <https://github.com/Genymobile/scrcpy/pull/3757>
This commit is contained in:
Romain Vimont
2023-02-28 21:19:43 +01:00
parent 47f67412e4
commit ce924d8f05
9 changed files with 46 additions and 21 deletions

View File

@@ -176,14 +176,13 @@ run_demuxer(void *data) {
struct sc_demuxer *demuxer = data;
// Flag to report end-of-stream (i.e. device disconnected)
bool eos = false;
enum sc_demuxer_status status = SC_DEMUXER_STATUS_ERROR;
uint32_t raw_codec_id;
bool ok = sc_demuxer_recv_codec_id(demuxer, &raw_codec_id);
if (!ok) {
LOGE("Demuxer '%s': stream disabled due to connection error",
demuxer->name);
eos = true;
goto end;
}
@@ -191,7 +190,7 @@ run_demuxer(void *data) {
LOGW("Demuxer '%s': stream explicitly disabled by the device",
demuxer->name);
sc_demuxer_disable_sinks(demuxer);
eos = true;
status = SC_DEMUXER_STATUS_DISABLED;
goto end;
}
@@ -241,7 +240,7 @@ run_demuxer(void *data) {
bool ok = sc_demuxer_recv_packet(demuxer, packet);
if (!ok) {
// end of stream
eos = true;
status = SC_DEMUXER_STATUS_EOS;
break;
}
@@ -272,7 +271,7 @@ run_demuxer(void *data) {
finally_close_sinks:
sc_demuxer_close_sinks(demuxer);
end:
demuxer->cbs->on_ended(demuxer, eos, demuxer->cbs_userdata);
demuxer->cbs->on_ended(demuxer, status, demuxer->cbs_userdata);
return 0;
}