40 namespace ArgusSamples
44 : m_initialized(false)
47 , m_prevRunning(false)
50 , m_videoPipeline(NULL)
66 PROPAGATE_ERROR(dispatcher.
m_deviceOpen.registerObserver(
this,
70 PROPAGATE_ERROR(dispatcher.
m_outputSize.registerObserver(
this,
77 ORIGINATE_ERROR(
"Out of memory");
88 PROPAGATE_ERROR(
stop());
89 PROPAGATE_ERROR(
start());
96 const bool isOpen =
static_cast<const Value<bool>&
>(source).
get();
103 PROPAGATE_ERROR(
stop());
108 PROPAGATE_ERROR(
start());
116 const bool isTrue =
static_cast<const Value<bool>&
>(source).
get();
123 PROPAGATE_ERROR(
stop());
129 PROPAGATE_ERROR(
start());
138 ORIGINATE_ERROR(
"Not initialized");
148 PROPAGATE_ERROR(dispatcher.createRequest(
m_request, Argus::CAPTURE_INTENT_VIDEO_RECORD));
154 Argus::IEGLOutputStream *iEGLOutputStream =
156 if (!iEGLOutputStream)
157 ORIGINATE_ERROR(
"Failed to get IEGLOutputStream interface");
159 PROPAGATE_ERROR(composer.
bindStream(iEGLOutputStream->getEGLStream()));
164 const Argus::Size2D<uint32_t> streamSize = iEGLOutputStream->getResolution();
166 (float)streamSize.width() / (float)streamSize.height()));
167 PROPAGATE_ERROR(composer.
setStreamActive(iEGLOutputStream->getEGLStream(),
true));
171 PROPAGATE_ERROR(dispatcher.startRepeat(
m_request.
get()));
181 ORIGINATE_ERROR(
"Not initialized");
203 Argus::IEGLOutputStream *iEGLOutputStream =
205 if (!iEGLOutputStream)
206 ORIGINATE_ERROR(
"Failed to get IEGLOutputStream interface");
209 iEGLOutputStream->disconnect();
228 ORIGINATE_ERROR(
"Not initialized");
230 ORIGINATE_ERROR(
"Not running");
232 ORIGINATE_ERROR(
"Recording had already been started, can't start again");
239 ORIGINATE_ERROR(
"Out of memory");
244 Argus::Size2D<uint32_t> outputSize;
248 std::ostringstream fileName;
251 fileName <<
"/video" << std::setfill(
'0') << std::setw(4) <<
m_captureIndex;
255 Argus::interface_cast<Argus::IEGLOutputStream>(
m_videoStream)->getEGLStream(),
256 outputSize.width(), outputSize.height(),
269 PROPAGATE_ERROR(dispatcher.
message(
"Started recording video at %dx%d, saving to '%s'\n",
270 outputSize.width(), outputSize.height(), fileName.str().c_str()));
280 ORIGINATE_ERROR(
"Not initialized");
283 ORIGINATE_ERROR(
"Recording had not been started, can't stop");
311 m_videoPipeline = NULL;
314 PROPAGATE_ERROR(dispatcher.
message(
"Stopped recording video\n"));
335 PROPAGATE_ERROR_CONTINUE(
stop());
342 PROPAGATE_ERROR_CONTINUE(dispatcher.
m_outputSize.unregisterObserver(
this,
346 PROPAGATE_ERROR_CONTINUE(dispatcher.
m_deviceOpen.unregisterObserver(
this,