05-04-2023 12:42 PM
I have an app that utilizes hw accelerated video decoding (via AMediaCodec). Two 8k 25fps streams are decoded. On the latest update (51), the codec fails with OMX_ErrorHardware. It did work before.
Here's a snippet of logs:
05-04 17:59:58.700 921 5812 E OMX-VDEC-1080P: OMX_COMPONENT_GENERATE_HARDWARE_ERROR
05-04 17:59:58.701 921 5812 E OMX-VDEC-1080P: ERROR: Sending OMX_ErrorHardware to Client
05-04 17:59:58.701 921 4965 E OMX-VDEC-1080P: Empty this buffer not allowed after error
05-04 17:59:58.701 921 4965 E OMXNodeInstance: emptyBuffer(0xf262b144:qcom.decoder.hevc, 0xc [16588800@0xbf6fe000 (0..+319512) f=10 ts=1280000 fc=-1]) ERROR: Hardware(0x80001009)
05-04 17:59:58.701 5760 5810 E ACodec : signalError(omxError 0x80001001, internalError -2147483648)
05-04 17:59:58.701 5760 5809 E MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 6/STARTED
05-04 17:59:58.701 921 4965 E OMX-VDEC-1080P: Fill this buffer not allowed after error
05-04 17:59:58.701 5760 5809 D MediaCodec: flushMediametrics
05-04 17:59:58.701 921 4965 E OMXNodeInstance: fillBuffer(0xf262b144:qcom.decoder.hevc, 0x11 [8@0xf2bef990 fc=-1]) ERROR: Hardware(0x80001009)
05-04 17:59:58.701 5760 5809 W mediametrics::Item: selfrecord: failed to record: {codec, (01-01 04:00:00.000), (, -1, -1), (android.media.mediacodec.codec=OMX.qcom.video.decoder.hevc, android.media.mediacodec.encoder=0, android.media.mediacodec.errcode=-2147479551, android.media.mediacodec.errstate=STARTED, android.media.mediacodec.height=5760, android.media.mediacodec.latency.avg=351857, android.media.mediacodec.latency.max=530481, android.media.mediacodec.latency.min=245058, android.media.mediacodec.latency.n=6, android.media.mediacodec.latency.unknown=16, android.media.mediacodec.level=1048576, android.media.mediacodec.lifetimeMs=1289, android.media.mediacodec.log-session-id=, android.media.mediacodec.low-latency.first-frame=-1, android.media.mediacodec.low-latency.off=0, android.media.mediacodec.low-latency.on=0, android.media.mediacodec.mime=video/hevc, android.media.mediacodec.mode=video, android.media.mediacodec.profile=1, android.media.mediacodec.rotation-degrees=0, android.media.mediacodec.width=5760)}
05-04 17:59:58.701 5760 5809 D SurfaceUtils: disconnecting from surface 0xb400007e7aa71010, reason disconnectFromSurface
05-04 17:59:58.701 5760 5809 E Surface : freeAllBuffers: 12 buffers were freed while being dequeued!
05-04 17:59:58.701 5760 5809 E NdkMediaCodec: Codec reported error(0x80001001), actionCode(0), detail()
05-04 17:59:58.701 5760 5809 E NdkMediaCodec: sf error code: -2147479551
05-04 17:59:58.702 5760 5810 E ACodec : signalError(omxError 0x80001001, internalError -2147483648)
05-04 17:59:58.702 5760 5810 E ACodec : [OMX.qcom.video.decoder.hevc] ERROR(0x80001009)
05-04 17:59:58.702 5760 5810 E ACodec : signalError(omxError 0x80001009, internalError -2147483648)
05-04 17:59:58.702 5760 5809 E MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 0/UNINITIALIZED
05-04 17:59:58.702 5760 5809 E MediaCodec: Codec reported err 0x80001009, actionCode 0, while in state 0/UNINITIALIZED
05-04 17:59:58.702 921 4965 E OMX-VDEC-1080P: Fill this buffer not allowed after error
05-04 17:59:58.702 921 4965 E OMXNodeInstance: fillBuffer(0xf262b144:qcom.decoder.hevc, 0x13 [8@0xf2bef9a0 fc=-1]) ERROR: Hardware(0x80001009)
05-04 17:59:58.702 5760 5810 E ACodec : signalError(omxError 0x80001001, internalError -2147483648)
05-04 17:59:58.702 5760 5809 E MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 0/UNINITIALIZED
05-04 17:59:58.702 921 4965 E OMX-VDEC-1080P: Fill this buffer not allowed after error
05-04 17:59:58.702 921 4965 E OMXNodeInstance: fillBuffer(0xf262b144:qcom.decoder.hevc, 0x1d [8@0xf2bef9f0 fc=-1]) ERROR: Hardware(0x80001009)
05-04 17:59:58.702 5760 5810 E ACodec : signalError(omxError 0x80001001, internalError -2147483648)
05-04 17:59:58.702 5760 5809 E MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 0/UNINITIALIZED
05-04 17:59:58.702 921 4965 E OMX-VDEC-1080P: Fill this buffer not allowed after error
05-04 17:59:58.702 921 4965 E OMXNodeInstance: fillBuffer(0xf262b144:qcom.decoder.hevc, 0x1e [8@0xf2bef9f8 fc=-1]) ERROR: Hardware(0x80001009)
05-04 17:59:58.702 5760 5810 E ACodec : signalError(omxError 0x80001001, internalError -2147483648)
05-04 17:59:58.702 5760 5809 E MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 0/UNINITIALIZED
05-04 17:59:58.702 921 4965 E OMX-VDEC-1080P: Fill this buffer not allowed after error
05-04 17:59:58.702 921 4965 E OMXNodeInstance: fillBuffer(0xf262b144:qcom.decoder.hevc, 0x20 [8@0xf2befa08 fc=-1]) ERROR: Hardware(0x80001009)
05-04 17:59:58.703 5760 5810 E ACodec : signalError(omxError 0x80001001, internalError -2147483648)
05-04 17:59:58.703 5760 5809 E MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 0/UNINITIALIZED
05-04 17:59:58.703 921 4965 E OMX-VDEC-1080P: Fill this buffer not allowed after error
05-04 17:59:58.703 921 4965 E OMXNodeInstance: fillBuffer(0xf262b144:qcom.decoder.hevc, 0x21 [8@0xf2befa10 fc=-1]) ERROR: Hardware(0x80001009)
05-04 17:59:58.703 5760 5810 E ACodec : signalError(omxError 0x80001001, internalError -2147483648)
05-04 17:59:58.703 5760 5809 E MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 0/UNINITIALIZED
05-04 17:59:58.700 0 0 I msm_vidc: err : 00000002: h265d: Failed to map table
05-04 17:59:58.700 0 0 I msm_vidc: err : 00000002: h265d: Failed to get device address: -12
05-04 17:59:58.700 0 0 I msm_vidc: err : 00000002: h265d: msm_comm_get_vidc_buffer: map failed.
05-04 17:59:58.700 0 0 I msm_vidc: err : 00000002: h265d: msm_comm_get_vidc_buffer: -12
05-04 17:59:58.700 0 0 I msm_vidc: err : 00000002: h265d: msm_vidc_queue_buf: failed to get vidc-buf
05-04 17:59:58.700 0 0 I msm_vidc: err : 00000002: h265d: failed vb2-qbuf: CAPTURE: idx 4 fd 248 off 0 size 49979392 filled 0, extradata: fd 139 off 0 size 16384 filled 0
Is that a regression? Are there any workarounds?