35 #include "UniquePointer.h"
38 namespace ArgusSamples
42 : m_initialized(false)
44 , m_prevRunning(false)
67 ORIGINATE_ERROR(
"Out of memory");
75 PROPAGATE_ERROR(dispatcher.
createSession(m_session, deviceIndex));
76 PROPAGATE_ERROR(m_perfTracker->setSession(m_session.get()));
79 PROPAGATE_ERROR(dispatcher.
createRequest(m_request, Argus::CAPTURE_INTENT_STILL_CAPTURE,
87 Argus::IEGLOutputStream *iEGLOutputStream =
88 Argus::interface_cast<Argus::IEGLOutputStream>(m_outputStream.get());
89 if (!iEGLOutputStream)
90 ORIGINATE_ERROR(
"Failed to get IEGLOutputStream interface");
93 PROPAGATE_ERROR(composer.bindStream(iEGLOutputStream->getEGLStream()));
95 const Argus::Size2D<uint32_t> streamSize = iEGLOutputStream->getResolution();
96 PROPAGATE_ERROR(composer.setStreamAspectRatio(iEGLOutputStream->getEGLStream(),
97 (float)streamSize.width() / (float)streamSize.height()));
100 PROPAGATE_ERROR(dispatcher.
enableOutputStream(m_request.get(), m_outputStream.get()));
111 Argus::interface_cast<Argus::IEGLOutputStream>(m_outputStream)->getEGLStream(),
true));
127 PROPAGATE_ERROR(dispatcher.stopRepeat(m_session.get()));
129 Argus::interface_cast<Argus::IEGLOutputStream>(m_outputStream)->getEGLStream(),
false));
130 PROPAGATE_ERROR(dispatcher.waitForIdle(m_session.get()));
147 m_outputStream.get()));
149 Argus::IEGLOutputStream *iEGLOutputStream =
150 Argus::interface_cast<Argus::IEGLOutputStream>(m_outputStream);
151 if (!iEGLOutputStream)
152 REPORT_ERROR(
"Failed to get IEGLOutputStream interface");
155 iEGLOutputStream->disconnect();
158 PROPAGATE_ERROR_CONTINUE(composer.
unbindStream(iEGLOutputStream->getEGLStream()));
160 m_outputStream.reset();
164 PROPAGATE_ERROR_CONTINUE(m_request.reset());
196 PROPAGATE_ERROR(
stop());
216 PROPAGATE_ERROR_CONTINUE(session->
shutdown());
236 if (deviceCount == 0)
237 ORIGINATE_ERROR(
"No camera devices found");
240 for (uint32_t deviceIndex = 0; deviceIndex < deviceCount; ++deviceIndex)
242 UniquePointer<Session> session(
new Session);
245 ORIGINATE_ERROR(
"Out of memory");
247 PROPAGATE_ERROR(session->initialize(deviceIndex));
257 PROPAGATE_ERROR(session->
start());
273 PROPAGATE_ERROR(session->
stop());
285 const bool isTrue =
static_cast<const Value<bool>&
>(source).
get();
292 PROPAGATE_ERROR(
stop());
298 PROPAGATE_ERROR(
start());
308 PROPAGATE_ERROR(
stop());
309 PROPAGATE_ERROR(
start());