5
5
import android .graphics .Rect ;
6
6
import android .media .MediaCodec ;
7
7
import android .media .MediaCodecInfo ;
8
- import android .media .MediaCodecList ;
9
8
import android .media .MediaFormat ;
10
9
import android .os .Build ;
11
10
import android .os .IBinder ;
14
13
15
14
import java .io .IOException ;
16
15
import java .nio .ByteBuffer ;
17
- import java .util .ArrayList ;
18
- import java .util .Arrays ;
19
16
import java .util .List ;
20
17
import java .util .concurrent .atomic .AtomicBoolean ;
21
18
@@ -199,24 +196,13 @@ private boolean encode(MediaCodec codec, Streamer streamer) throws IOException {
199
196
return !eof ;
200
197
}
201
198
202
- private static MediaCodecInfo [] listEncoders (String videoMimeType ) {
203
- List <MediaCodecInfo > result = new ArrayList <>();
204
- MediaCodecList list = new MediaCodecList (MediaCodecList .REGULAR_CODECS );
205
- for (MediaCodecInfo codecInfo : list .getCodecInfos ()) {
206
- if (codecInfo .isEncoder () && Arrays .asList (codecInfo .getSupportedTypes ()).contains (videoMimeType )) {
207
- result .add (codecInfo );
208
- }
209
- }
210
- return result .toArray (new MediaCodecInfo [result .size ()]);
211
- }
212
-
213
199
private static MediaCodec createMediaCodec (Codec codec , String encoderName ) throws IOException , ConfigurationException {
214
200
if (encoderName != null ) {
215
201
Ln .d ("Creating encoder by name: '" + encoderName + "'" );
216
202
try {
217
203
return MediaCodec .createByCodecName (encoderName );
218
204
} catch (IllegalArgumentException e ) {
219
- Ln .e (buildUnknownEncoderMessage (codec , encoderName ));
205
+ Ln .e (CodecUtils . buildUnknownEncoderMessage (codec , encoderName ));
220
206
throw new ConfigurationException ("Unknown encoder: " + encoderName );
221
207
}
222
208
}
@@ -225,18 +211,6 @@ private static MediaCodec createMediaCodec(Codec codec, String encoderName) thro
225
211
return mediaCodec ;
226
212
}
227
213
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 ());
231
- if (encoders != null && encoders .length > 0 ) {
232
- msg .append ("\n Try to use one of the available encoders:" );
233
- for (MediaCodecInfo encoder : encoders ) {
234
- msg .append ("\n scrcpy --video-codec=" ).append (codec .getName ()).append (" --encoder='" ).append (encoder .getName ()).append ("'" );
235
- }
236
- }
237
- return msg .toString ();
238
- }
239
-
240
214
private static MediaFormat createFormat (String videoMimeType , int bitRate , int maxFps , List <CodecOption > codecOptions ) {
241
215
MediaFormat format = new MediaFormat ();
242
216
format .setString (MediaFormat .KEY_MIME , videoMimeType );
0 commit comments