35 #include "UniquePointer.h"
38 namespace ArgusSamples
42 : m_initialized(false)
70 PROPAGATE_ERROR(dispatcher.
createSession(m_session, deviceIndex));
73 PROPAGATE_ERROR(dispatcher.
createRequest(m_request, Argus::CAPTURE_INTENT_STILL_CAPTURE,
81 Argus::IStream *iStream = Argus::interface_cast<Argus::IStream>(m_outputStream.get());
83 ORIGINATE_ERROR(
"Failed to get IStream interface");
86 PROPAGATE_ERROR(renderer.
bindStream(iStream->getEGLStream()));
88 const Argus::Size2D<uint32_t> streamSize = iStream->getResolution();
90 (float)streamSize.width() / (float)streamSize.height()));
95 std::vector<Argus::EventType> eventTypes;
96 eventTypes.push_back(Argus::EVENT_TYPE_CAPTURE_COMPLETE);
98 Argus::UniqueObj<Argus::EventQueue> eventQueue;
99 PROPAGATE_ERROR(dispatcher.
createEventQueue(eventTypes, eventQueue, m_session.get()));
102 m_eventThread.reset(
new EventThread(m_session.get(), eventQueue.release(), &m_perfTracker));
105 ORIGINATE_ERROR(
"Failed to allocate EventThread");
108 PROPAGATE_ERROR(m_eventThread->initialize());
109 PROPAGATE_ERROR(m_eventThread->waitRunning());
119 PROPAGATE_ERROR(m_eventThread->shutdown());
120 m_eventThread.reset();
125 PROPAGATE_ERROR(dispatcher.
stopRepeat(m_session.get()));
127 Argus::interface_cast<Argus::IStream>(m_outputStream)->getEGLStream(),
false));
128 PROPAGATE_ERROR(dispatcher.
waitForIdle(m_session.get()));
144 m_outputStream.get()));
146 const EGLStreamKHR eglStream =
147 Argus::interface_cast<Argus::IStream>(m_outputStream)->getEGLStream();
149 m_outputStream.reset();
156 PROPAGATE_ERROR_CONTINUE(m_request.reset());
182 PROPAGATE_ERROR(
stop());
197 PROPAGATE_ERROR_CONTINUE(session->
shutdown());
217 if (deviceCount == 0)
218 ORIGINATE_ERROR(
"No camera devices found");
221 for (uint32_t deviceIndex = 0; deviceIndex < deviceCount; ++deviceIndex)
223 UniquePointer<Session> session(
new Session);
226 ORIGINATE_ERROR(
"Out of memory");
228 PROPAGATE_ERROR(session->initialize(deviceIndex));
240 Argus::interface_cast<Argus::IStream>(session->
m_outputStream)->getEGLStream(),
true));
261 PROPAGATE_ERROR(session->
stop());