2016-07-26 2 views
1

У меня возникла проблема с отметками времени, и я был бы признателен, если бы кто-то мог мне помочь. Я пытаюсь синхронизировать SensorEvent с изображениями, которые я получаю от ImageReader.Что такое временная метка CameraDevice

Я знаю, что временная метка SensorEvent представляет собой наносекунду с момента запуска операционной системы (время безотказной работы). С другой стороны, getTimestamp изображения (который исходит от ImageReader) измеряется в наносекундах, но временная база зависит от источника, предоставляющего изображения (Camera, CameraDevice и т. Д.). В моем случае я использую CameraDevice (camera2), но я не нашел, какова временная база CameraDevice.

Буду признателен за любую помощь. Cheers

ответ

3

Это задокументировано в поле SENSOR_INFO_TIMESTAMP_SOURCE, хотя из двух вариантов первое, скорее всего, вам не поможет.

  • НЕИЗВЕСТНЫЙ: «Timestamps из android.sensor.timestamp в наносекунд и монотонна, но не может быть по сравнению с временными метками из других подсистем (например, акселерометр, гироскоп и т.д.) или других экземпляров одного и того же или разные камеры в одной и той же системе. Временные метки между потоками и результатами для одного экземпляра камеры сопоставимы, а метки времени для всех буферов и метаданные результатов, сгенерированные одним захватом, идентичны ».

  • REALTIME: «Временные метки из android.sensor.timestamp находятся на той же временной основе, что и elapsedRealtimeNanos(), и их можно сравнить с другими временными метками, используя эту базу».

К сожалению, большинство устройств сегодня сообщают UNKNOWN, так как они не имеют точной синхронизации на развертку, используемой elapsedRealtimeNanos() (который на уровне ядра Linux, как правило, является источником CLOCK_BOOTTIME времени).

Однако на практике большинство временных меток камеры устройства находятся только из источника CLOCK_MONOTONIC, который, как правило, имеет то же самое время, что и nanoTime().

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

+0

Пятно на! Большое спасибо Эдди. –

+0

Итак, если я правильно понимаю, это флаг только для чтения, а не то, что можно установить для получения метки времени, чья база исправлена ​​правильно! Я заметил, что временная метка, сообщенная ИДУ, и что камера сильно отличается! например на 1 секунду! Было ли улучшение? Если я все еще хочу достаточно разумную синхронизацию, что можно сделать? –

+0

Если устройство камеры сообщает UNKNOWN, а датчики используют REALTIME (что, по моему мнению, это так), то разница может быть очень большой, так как один не увеличивается, пока устройство спит. Пока камера работает, разница вряд ли будет расти (так как устройство не заснет), поэтому вы можете в принципе измерять оба раза при запуске и использовать эту разницу для корректировки временных меток на одну и ту же базу времени. –

Смежные вопросы