00001 #ifndef DEVICE1394INPUT_H
00002 #define DEVICE1394INPUT_H
00003
00004
00005
00006 #ifdef HAVE_FIREWIRE
00007
00008 #include "condition.inc"
00009 #include "libdv.h"
00010 #include "dv1394.h"
00011 #include "mutex.inc"
00012 #include <libraw1394/raw1394.h>
00013 #include "thread.h"
00014 #include "vframe.inc"
00015
00016
00017
00018
00019 class Device1394Input : public Thread
00020 {
00021 public:
00022 Device1394Input();
00023 ~Device1394Input();
00024
00025 int open(const char *path,
00026 int port,
00027 int channel,
00028 int length,
00029 int channels,
00030 int samplerate,
00031 int bits,
00032 int w,
00033 int h);
00034 void run();
00035 void increment_counter(int *counter);
00036 void decrement_counter(int *counter);
00037
00038
00039
00040 int read_video(VFrame *data);
00041
00042
00043
00044
00045 int read_audio(char *data, int samples);
00046
00047
00048 char **buffer;
00049 int *buffer_valid;
00050 int buffer_size;
00051 int total_buffers;
00052 int current_inbuffer;
00053
00054
00055 dv_t *decoder;
00056
00057
00058 char *audio_buffer;
00059 int audio_samples;
00060
00061
00062 int current_outbuffer;
00063 unsigned char *input_buffer;
00064
00065 Mutex *buffer_lock;
00066 Condition *video_lock;
00067 Condition *audio_lock;
00068 int done;
00069
00070 int fd;
00071 int channel;
00072 int length;
00073 int channels;
00074 int samplerate;
00075 int bits;
00076 int w;
00077 int h;
00078 int is_pal;
00079 };
00080
00081
00082
00083
00084
00085 #endif
00086
00087
00088
00089 #endif