Я пытаюсь прочитать время выдержки из TangoImageBuffer
struct и я всегда вижу в ней значения мусора. Он начинается с 0 и случайно меняется на огромное положительное число, а иногда и отрицательные числа.
Я в основном бросаю exposure_time_ns
значение для %lld
когда я распечатываю это. Также, когда я пытаюсь преобразовать огромные числа в секунды, это не имеет смысла, так как в итоге получается более 100 секунд.
exposure_time_ns
является типом данных int64_t. Я неправильно произнесу это или есть другой способ получить это?
MVCE — Я использую точка-точка пример из танго c примерами, доступными в github. Вот ссылка на него
https://github.com/googlesamples/tango-examples-c/tree/master/cpp_point_to_point_example
Я просто изменил способ, которым OnFrameAvailable обратный вызов обрабатывается, и я прикрепил его ниже.
void PointToPointApplication::OnFrameAvailable(const TangoImageBuffer* buffer) {
TangoSupport_updateImageBuffer(image_buffer_manager_, buffer);
int64_t exposure = 0;
double timestamp = 0;
TangoImageBuffer* currentBuffer = nullptr;
{
std::lock_guard<std::mutex> lock(_tangobufferLock);
TangoSupport_getLatestImageBuffer(image_buffer_manager_,
¤tBuffer);
if(currentBuffer == nullptr)
{
LOGE("Color Buffer manager retrieval issue\n");
return;
}
else
{
exposure = currentBuffer->exposure_duration_ns;
timestamp = currentBuffer->timestamp;
}
}
}
Я печатаю значения экспозиции, каждый кадр и среди всех атрибутов TangoImageBuffer, только выдержка и номер кадра содержат значения мусора, а все остальные значения действительны.
Задача ещё не решена.
Других решений пока нет …