Skip to content

Commit e068fe4

Browse files
committed
Improve error message for unknown encoder
The provided encoder name depends on the selected codec. Improve the error message and the suggestions. PR #3757 <#3757>
1 parent 883a998 commit e068fe4

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

server/src/main/java/com/genymobile/scrcpy/ScreenEncoder.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ public boolean consumeRotationChange() {
6363
}
6464

6565
public void streamScreen() throws IOException, ConfigurationException {
66-
String videoMimeType = streamer.getCodec().getMimeType();
67-
MediaCodec mediaCodec = createMediaCodec(videoMimeType, encoderName);
68-
MediaFormat format = createFormat(videoMimeType, bitRate, maxFps, codecOptions);
66+
Codec codec = streamer.getCodec();
67+
MediaCodec mediaCodec = createMediaCodec(codec, encoderName);
68+
MediaFormat format = createFormat(codec.getMimeType(), bitRate, maxFps, codecOptions);
6969
IBinder display = createDisplay();
7070
device.setRotationListener(this);
7171

@@ -210,28 +210,28 @@ private static MediaCodecInfo[] listEncoders(String videoMimeType) {
210210
return result.toArray(new MediaCodecInfo[result.size()]);
211211
}
212212

213-
private static MediaCodec createMediaCodec(String videoMimeType, String encoderName) throws IOException, ConfigurationException {
213+
private static MediaCodec createMediaCodec(Codec codec, String encoderName) throws IOException, ConfigurationException {
214214
if (encoderName != null) {
215215
Ln.d("Creating encoder by name: '" + encoderName + "'");
216216
try {
217217
return MediaCodec.createByCodecName(encoderName);
218218
} catch (IllegalArgumentException e) {
219-
Ln.e(buildUnknownEncoderMessage(videoMimeType, encoderName));
219+
Ln.e(buildUnknownEncoderMessage(codec, encoderName));
220220
throw new ConfigurationException("Unknown encoder: " + encoderName);
221221
}
222222
}
223-
MediaCodec mediaCodec = MediaCodec.createEncoderByType(videoMimeType);
223+
MediaCodec mediaCodec = MediaCodec.createEncoderByType(codec.getMimeType());
224224
Ln.d("Using encoder: '" + mediaCodec.getName() + "'");
225225
return mediaCodec;
226226
}
227227

228-
private static String buildUnknownEncoderMessage(String videoMimeType, String encoderName) {
229-
StringBuilder msg = new StringBuilder("Encoder '").append(encoderName).append("' not found");
230-
MediaCodecInfo[] encoders = listEncoders(videoMimeType);
228+
private static String buildUnknownEncoderMessage(Codec codec, String encoderName) {
229+
StringBuilder msg = new StringBuilder("Encoder '").append(encoderName).append("' for ").append(codec.getName()).append(" not found");
230+
MediaCodecInfo[] encoders = listEncoders(codec.getMimeType());
231231
if (encoders != null && encoders.length > 0) {
232232
msg.append("\nTry to use one of the available encoders:");
233233
for (MediaCodecInfo encoder : encoders) {
234-
msg.append("\n scrcpy --encoder='").append(encoder.getName()).append("'");
234+
msg.append("\n scrcpy --codec=").append(codec.getName()).append(" --encoder='").append(encoder.getName()).append("'");
235235
}
236236
}
237237
return msg.toString();

0 commit comments

Comments
 (0)