1

参照: https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/ExtractDecodeEditEncodeMuxTest.java

解像度とビットレートが低いビデオを作成するために、上記のコードを使用してエンコード/デコード/マルチプレクサーを実行しています。nexus5、LG g3、one plus の 4k ビデオを含むすべての解像度で問題なく動作します。

しかし、サムスンのデバイスは不適切な動作を示します。

  • 入力として 4k ビデオ (3840x2160) を取り、その解像度を 1920x1080 に下げたい場合、例外が発生します。

  • 入力として 4k ビデオ (3840x2160) を取り、その解像度を 1280x720 に下げたい場合でも例外が発生します。

  • ターゲットの解像度を 640x360 に設定すると、問題なく動作します。

これは、samsung デバイスのコーデックの問題に関連している可能性があると思います。

以下はコードスニペットです

 MediaCodec encoder = MediaCodec.createByCodecName(codecInfo.getName());
        encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
        surfaceReference.set(encoder.createInputSurface());
        encoder.start();

  MediaCodec decoder = MediaCodec.createDecoderByType(getMimeTypeFor(inputFormat));
        decoder.configure(inputFormat, surface, null, 0);
decoder.start();

次のステートメントは例外を引き起こします

decoder.configure(inputFormat, surface, null, 0);

以下はスタックトレースです

I/ACodec: [OMX.Exynos.AVC.Encoder] Now Executing
03-15 14:35:23.801 25357-26008/com.test I/ACodec:  [] Now uninitialized
03-15 14:35:23.801 25357-26036/com.test I/OMXClient: Using client-side OMX mux.
03-15 14:35:23.811 25357-26036/com.test I/ACodec: can't find wfdsink-exynos-enable
03-15 14:35:23.811 25357-26036/com.test E/ACodec:  configureCodec multi window instance fail  appPid : 25357
03-15 14:35:23.811 25357-26036/com.test E/ACodec: [OMX.Exynos.avc.dec] configureCodec returning error -1021
03-15 14:35:23.811 25357-26036/com.test E/ACodec: signalError(omxError 0x80001001, internalError -1021)
03-15 14:35:23.811 25357-26035/com.test E/MediaCodec: Codec reported err 0xfffffc03, actionCode 0, while in state 3
03-15 14:35:23.811 25357-26008/com.test E/MediaCodec: configure failed with err 0xfffffc03, resetting...
03-15 14:35:23.811 25357-26036/com.test I/ACodec:  [OMX.Exynos.avc.dec] Now uninitialized
03-15 14:35:23.811 25357-26008/com.test I/ACodec:  [] Now uninitialized
03-15 14:35:23.811 25357-26036/com.test I/OMXClient: Using client-side OMX mux.
4

1 に答える 1