Ошибка Camera2 api ZSL, onImageAvailable () не вызывается - PullRequest
1 голос
/ 11 октября 2019

Я столкнулся с ошибкой api camera2 на моем устройстве.

Я использую ZSL, и после некоторых фотографий камера не работает и останавливает захват изображений. Расследования привели меня к причине, что круговой буфер изображения пуст.

Круговой буфер изображения пуст, потому что функция onImageAvailable () не вызывается после этой ошибки.

Странно то, что все исправляется только после перезагрузки.

Для тестирования я использую проект ZSLDemo от Google.
Вот фрагмент кода с функцией onImageAvailable ().

class CaptureImageAvailableListener(private val activity: MainActivity, internal var params: CameraParams) : ImageReader.OnImageAvailableListener {

    override fun onImageAvailable(reader: ImageReader) {
        println("Try to add image into RingBuffer")
        val image: Image = reader.acquireNextImage()
        camViewModel.getZSLCoordinator().imageBuffer.add(image)

        if (null == params.debugResult || null == params.debugImage) {
            if (null != params.debugResult) {
                params.debugImage = image
                val tempPair = ZSLPair(image, params.debugResult!!)
                recaptureRequest(activity, params, tempPair)
            } else {
                params.debugImage = image
            }
        }

    }
}

UPD: в logcat я обнаружил ошибки:

QCamera : <HAL><INFO> handleMetadataWithLock: 3911: Start of reporting error frame#=800,streamID=3, mCameraId: 0
mm-camera: <IFACE ><ERROR> 2473: iface_axi_handle_output_error: iface_axi_handle_output_error: OUTPUT_ERROR session_id 3 
mm-camera: <IFACE ><ERROR> 2291: iface_axi_fill_framedrop_struct_from_bufq_handle: Error! Uncleared Error mask 0x100 frame_id 6
QCamera : <HAL><INFO> handleMetadataWithLock: 3927: End of reporting error frame#=800, streamID=3 mCameraId: 0
Camera : <HAL><INFO> handleMetadataWithLock: 4078: Stream STATUS_ERROR frame_number=800,streamID=3 mCameraId: 0
QCamera : <HAL><INFO> handleMetadataWithLock: 4087: CAMERA3_BUFFER_STATUS_ERROR frame_number=800,buffer=0xf5496968 mCameraId: 0
Camera3-OutputStream: returnBufferCheckedLocked: A frame is dropped for stream 2 due to buffer error.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...