Add --audio-encoder option

Similar to --video-encoder, but for audio.
This commit is contained in:
Romain Vimont
2023-02-19 20:20:29 +01:00
parent 0e85424ffb
commit d31f858204
10 changed files with 63 additions and 6 deletions

View File

@@ -31,6 +31,10 @@ Select an audio codec (opus or aac).
Default is opus.
.TP
.BI "\-\-audio\-encoder " name
Use a specific MediaCodec audio encoder (depending on the codec provided by \fB\-\-audio\-codec\fR).
.TP
.BI "\-b, \-\-bit\-rate " value
Encode the video at the given bit\-rate, expressed in bits/s. Unit suffixes are supported: '\fBK\fR' (x1000) and '\fBM\fR' (x1000000).

View File

@@ -61,6 +61,7 @@
#define OPT_NO_AUDIO 1041
#define OPT_AUDIO_BIT_RATE 1042
#define OPT_AUDIO_CODEC 1043
#define OPT_AUDIO_ENCODER_NAME 1044
struct sc_option {
char shortopt;
@@ -116,6 +117,13 @@ static const struct sc_option options[] = {
.text = "Select an audio codec (opus or aac).\n"
"Default is opus.",
},
{
.longopt_id = OPT_AUDIO_ENCODER_NAME,
.longopt = "audio-encoder",
.argdesc = "name",
.text = "Use a specific MediaCodec audio encoder (depending on the "
"codec provided by --audio-codec).",
},
{
.shortopt = 'b',
.longopt = "bit-rate",
@@ -1635,6 +1643,9 @@ parse_args_with_getopt(struct scrcpy_cli_args *args, int argc, char *argv[],
case OPT_ENCODER_NAME:
opts->encoder_name = optarg;
break;
case OPT_AUDIO_ENCODER_NAME:
opts->audio_encoder_name = optarg;
break;
case OPT_FORCE_ADB_FORWARD:
opts->force_adb_forward = true;
break;

View File

@@ -97,6 +97,7 @@ struct scrcpy_options {
const char *render_driver;
const char *codec_options;
const char *encoder_name;
const char *audio_encoder_name;
#ifdef HAVE_V4L2
const char *v4l2_device;
#endif

View File

@@ -368,6 +368,7 @@ scrcpy(struct scrcpy_options *options) {
.stay_awake = options->stay_awake,
.codec_options = options->codec_options,
.encoder_name = options->encoder_name,
.audio_encoder_name = options->audio_encoder_name,
.force_adb_forward = options->force_adb_forward,
.power_off_on_close = options->power_off_on_close,
.clipboard_autosync = options->clipboard_autosync,

View File

@@ -73,6 +73,7 @@ sc_server_params_destroy(struct sc_server_params *params) {
free((char *) params->crop);
free((char *) params->codec_options);
free((char *) params->encoder_name);
free((char *) params->audio_encoder_name);
free((char *) params->tcpip_dst);
}
@@ -97,6 +98,7 @@ sc_server_params_copy(struct sc_server_params *dst,
COPY(crop);
COPY(codec_options);
COPY(encoder_name);
COPY(audio_encoder_name);
COPY(tcpip_dst);
#undef COPY
@@ -270,6 +272,9 @@ execute_server(struct sc_server *server,
if (params->encoder_name) {
ADD_PARAM("encoder_name=%s", params->encoder_name);
}
if (params->audio_encoder_name) {
ADD_PARAM("audio_encoder_name=%s", params->audio_encoder_name);
}
if (params->power_off_on_close) {
ADD_PARAM("power_off_on_close=true");
}

View File

@@ -30,6 +30,7 @@ struct sc_server_params {
const char *crop;
const char *codec_options;
const char *encoder_name;
const char *audio_encoder_name;
struct sc_port_range port_range;
uint32_t tunnel_host;
uint16_t tunnel_port;