MediaCodec を使用すると、多くの場合、OMX レイヤーからエラー メッセージが表示されます。それほど些細ではない問題をデバッグするために、それらをどのように使用できますか? たとえば、h264 ストリームをデコードするためのコーデックの作成に失敗することがあるアプリケーションがあります。Samsung S4 (I9505) などの一部のデバイスでのみ発生するようですが、S3 や Nexus 4(old) では発生しません。S4 では、ほとんどの場合、同じビデオが正常にデコードされます。コーデックを作成する前に、OpeGL を含む集中的な計算が行われます。失敗する行は次のとおりです。
MediaCodec.createByCodecName(codecInfo[0].getName());
logcatcodecInfo[0].getName()
に値OMX.qcom.video.decoder.avc
と次の出力がある場合:
06-23 19:12:18.197: I/OMXClient(23749): Using client-side OMX mux.
06-23 19:12:18.197: E/OMX-VDEC-1080P(282): In OMX vdec Constructor
06-23 19:12:18.197: E/OMX-VDEC-1080P(282): vidc.dec.debug.ts value is 0
06-23 19:12:18.197: E/OMX-VDEC-1080P(282): vidc.dec.debug.concealedmb value is 0
06-23 19:12:18.197: E/OMX-VDEC-1080P(282): vidc.dec.debug.extradata value is 0
06-23 19:12:18.197: E/OMX-VDEC-1080P(282): Successfully opened vdec ion devicefd = 35
06-23 19:12:18.197: E/OMX-VDEC-1080P(282): Successfully created vdec ionlock
06-23 19:12:18.197: E/OMX-VDEC-1080P(282): Vdec instances = 1, ion device fd = 35
06-23 19:12:18.197: E/OMX-VDEC-1080P(282): omx_vdec::component_init(): Start of New Playback : role = OMX.qcom.video.decoder.avc : DEVICE = /dev/msm_vidc_dec
06-23 19:12:18.197: D/STATUSBAR-NetworkController(1111): updateDataNetType()
06-23 19:12:18.197: D/STATUSBAR-NetworkController(1111): Nothing, mRoamingIconId = 0
06-23 19:12:18.227: E/OMX-VDEC-1080P(282): omx_vdec::component_init(): Open returned fd 36, errno 24
06-23 19:12:18.227: E/OMX-VDEC-1080P(282): component_init: current performance level = 0
06-23 19:12:18.227: E/OMX-VDEC-1080P(282): pipe creation failed.
06-23 19:12:18.227: E/OMX-VDEC-1080P(282): Component Init Failed
06-23 19:12:18.227: E/OMX-VDEC-1080P(282): Calling VDEC_IOCTL_STOP_NEXT_MSG
06-23 19:12:18.227: E/OMX-VDEC-1080P(282): In OMX Vdec Destructor(), Vdec instances = 1
06-23 19:12:18.227: E/OMX-VDEC-1080P(282): Calling close() on Video Driver
06-23 19:12:18.247: E/OMX-VDEC-1080P(282): Calling close() on vdec ion devicefd = 35
06-23 19:12:18.247: E/OMX-VDEC-1080P(282): Successfully destroyed vdec ionlock
06-23 19:12:18.247: E/OMX-VDEC-1080P(282): Exit OMX vdec Destructor
06-23 19:12:18.247: E/(282): Destroy C2D instance
06-23 19:12:18.247: E/(282): Destroy C2D instance
06-23 19:12:18.247: E/ACodec(23749): Unable to instantiate decoder 'OMX.qcom.video.decoder.avc'.
06-23 19:12:18.247: E/MediaCodec(23749): Codec reported an error. (omx error 0x80001003, internalError -2147483648)
また、デバイスに依存するエラーの場合、開発者は問題を解決するために何ができますか?