Android Camera2 onCaptureStarted Callback - PullRequest
       10

Android Camera2 onCaptureStarted Callback

0 голосов
/ 04 сентября 2018

Я хочу получить сигнал в начале экспозиции.

Я нашел в doc обратный вызов:
onCaptureStarted

Этот метод вызывается, когда устройство камеры начинает захватывать выходное изображение для запроса, в начале экспонирования изображения или когда устройство камеры начинает обработку входного изображения для запроса повторной обработки.

Для обычного запроса захвата этот обратный вызов вызывается сразу после начала захвата кадра, поэтому это наиболее подходящее время для воспроизведения звука затвора или запуска индикаторов захвата пользовательского интерфейса.

Я использовал его и получил следующие результаты:

  1. ~ 0,2 мс экспозиция (ACAMERA_SENSOR_EXPOSURE_TIME: 170980)
    A) Разница между временной меткой изображения и текущей временной меткой onCaptureStarted составляет: 37,488015 мс.
    Б) Разница между onCaptureStarted для CameraImageReader :: ImageCallback составляет: 9.630366
  2. ~ 5 мс экспозиция (ACAMERA_SENSOR_EXPOSURE_TIME: 4958439)
    A) Разница между временной меткой изображения и текущей временной меткой onCaptureStarted составляет: 42,577876 мс.
    Б) Разница между onCaptureStarted для CameraImageReader :: ImageCallback составляет: 9.839168
  3. ~ 20 мс экспозиция (ACAMERA_SENSOR_EXPOSURE_TIME: 19961992)
    A) Разница между временной меткой изображения и текущей временной меткой onCaptureStarted составляет: 58.494590 мс.
    Б) Разница между onCaptureStarted для CameraImageReader :: ImageCallback составляет: 9.060730
* * ПРИМЕЧАНИЯ тысячи сорок-девять
1. Я тестировал с Pixel2 (ручная экспозиция + длительность кадра 33 мс)
2. Я также проверил это с TEMPLATE_MANUAL и получил те же результаты.
3. Я также тестировал с S9 + и получал те же результаты.
4. Цифры не точные.

Кажется, я получаю ответный звонок после того, как экспозиция закончена. как второй вариант в документе:

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

Но я хочу получить его как первый вариант:

в начале экспонирования изображения

1) Можно ли это контролировать?
2) Что такое «обычный запрос захвата»?
[ПРИМЕЧАНИЕ: я использовал 'ACameraCaptureSession_setRepeatingRequest']

1 Ответ

0 голосов
/ 05 сентября 2018

onCaptureStarted произойдет довольно долго, прежде чем изображение станет доступно приложению. При полном разрешении для считывания кадра изображения после завершения экспозиции требуется пиксель 2 ~ 33 мс, а также некоторое время для завершения обработки буфера в YUV.

Таким образом, если вы видите обратный вызов «Доступное изображение» примерно через 33 мс + время выдержки позже из отметки времени onCaptureStarted, это ожидается. В вашем случае:

  • 0,2 мс выдержка: 37,488015 мс - 170980 нс = 37,3 мс для считывания + обработки
  • 5 мс выдержка: 42,577876 мс - 4958439 нс = 37,6 мс для считывания + обработки
  • 20 мс выдержка: 58,494590 мс - 19961992 нс = 38,53 мс для считывания + обработки

Это выглядит почти так, как ожидалось, около 33 мс для считывания + 5 мс для завершения обработки.

...