summaryrefslogtreecommitdiff
path: root/src/decoder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/decoder.cc')
-rw-r--r--src/decoder.cc22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/decoder.cc b/src/decoder.cc
index 26351fe..0655f61 100644
--- a/src/decoder.cc
+++ b/src/decoder.cc
@@ -34,12 +34,8 @@
*/
#include <config.h>
#ifdef USE_GUI
-/*
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-*/
+
+#include "frame_stream.h"
#include "miav_config.h"
@@ -89,6 +85,8 @@ Decoder::~Decoder()
void Decoder::decode()
{
+ frame_stream *stream;
+
bool local_shoot;
int local_freeze;
bool local_record = false;
@@ -96,14 +94,22 @@ void Decoder::decode()
bool skip_frames = config->readInt("player_skip_frames");
- dv1394 dv_stream = dv1394(info); // Use default port and channel.
+ dv1394 dv1394_stream = dv1394(info); // Use default port and channel.
+ dvfile dvfile_stream = dvfile(info);
+ if(dv_stream.connect()) {
+ // Use the dv1394 stream for input.
+ stream = &dv1394_stream;
+ } else {
+ // Use the fallback dv filereader for input.
+ stream = &dvfile_stream;
+ }
while(*running) {
uint8_t *ptr;
SDL_Event user_event;
// Read a dvframe
- ptr = dv_stream.readFrame();
+ ptr = stream->readFrame();
if(!ptr) return; // No frame read. (Due to firewire error)
old_record = local_record;