2

MediaCodec API を使用してデータを復号化およびデコードすることは可能ですか? widevine やその他の DRM メカニズムによって暗号化されたデータを復号化し、デコードしたいと考えています。私が試したい基本的なことは、SurfaceTexure から作成された Surface で MediaCodec を構成したことです。 MediaCodec->configure(..????., with mediacrypto instance, ...)この場合、SurfaceTexture を渡すことができるかどうかわかりません。または、私がすべき安全な設定はありますか?

MediaCodec->start()
MediaCodec->queuesecureinputbuffer(...,with cryptoinfo,...)
MediaCodec->dequeoutputbuffer() to get the decoded data back....

私が見つけたサンプルは、復号化されたデータを SurfaceView に直接レンダリングすることです。

しかし、MediaCodec によってレンダリングされるデコードされたバッファーまたは SurfaceTexture を取得したいだけです。

などの安全な構成を設定しなかった場合MediaFormat->SetFeatureEnabled("secure-playback", true); OMX.qcom.video.decoder.avc を使用してデコーダを作成します。このようなエラーが発生します。

E/OMX-VDEC-1080P(23290): 
E/OMX-VDEC-1080P(23290): ERROR: Sending OMX_EventError to Client
E/        (23290): not in avi mode
E/ACodec  ( 1930): [OMX.qcom.video.decoder.avc] ERROR(0x80001009)
E/ACodec  ( 1930): signalError(omxError 0x80001009, internalError -2147483648)
E/MediaCodec( 1930): Codec reported err 0x80001009, actionCode 0, while in state 6
W/System.err( 1930): java.lang.IllegalStateException
W/System.err( 1930):  at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
W/System.err( 1930):  at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:1033)

セキュア構成を設定して MediaCodec::CreateByCodecName (「.secure」を追加) を使用すると、この種のエラーが発生します...

E/ACodec: native window could not be authenticated
E/ACodec: Failed to allocate buffers after transitioning to IDLE state (error 0xffffffff)
E/ACodec: signalError(omxError 0x80001001, internalError -1)
4

1 に答える 1