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)