diff options
Diffstat (limited to 'src/decoder.cc')
-rw-r--r-- | src/decoder.cc | 59 |
1 files changed, 58 insertions, 1 deletions
diff --git a/src/decoder.cc b/src/decoder.cc index 2ab3b6b..4707c90 100644 --- a/src/decoder.cc +++ b/src/decoder.cc @@ -25,6 +25,9 @@ */ /* * $Log$ + * Revision 1.22 2005/05/02 09:50:22 deva + * Rewrote freeze, shoot and record flags, from encoder to frame. + * * Revision 1.21 2005/05/01 09:56:26 deva * Added Id and Log tags to all files * @@ -60,6 +63,7 @@ Decoder::Decoder(Error* err, player_queue = gplayer_queue; mutex = gmutex; running = grunning; + b_record = false; // Initially no recording is done. } Decoder::~Decoder() @@ -68,6 +72,10 @@ Decoder::~Decoder() void Decoder::decode() { + bool local_shoot; + bool local_freeze; + bool local_record; + dv1394 dv_stream = dv1394(errobj); // Use default port and channel. while(*running) { @@ -78,10 +86,25 @@ void Decoder::decode() // Read a dvframe ptr = dv_stream.readFrame(); if(!ptr) return; // No frame read. (Due to firewire error) + + local_shoot = b_shoot; + b_shoot = false; + local_freeze = b_freeze; + b_freeze = false; + local_record = b_record; + Frame *eframe = new Frame(ptr, DVPACKAGE_SIZE); + eframe->shoot = local_shoot; + eframe->freeze = local_freeze; + eframe->record = local_record; + Frame *pframe = new Frame(ptr, DVPACKAGE_SIZE); - free(ptr); + pframe->shoot = local_shoot; + pframe->freeze = local_freeze; + pframe->record = local_record; + free(ptr); + encode_queue->push(eframe); player_queue->push(pframe); @@ -104,4 +127,38 @@ void Decoder::run() { fprintf(stderr, "Decoder thread stopped.\n"); fflush(stderr); } +/* + * Set freeze bit on current frame. + */ +void Decoder::freeze() +{ + b_freeze = true; +} + + +/* + * Set shoot bit on current frame. + */ +void Decoder::shoot(unsigned char *rgb) +{ + b_shoot = true; +} + +/* + * Set the record bit to true in all following frames. + */ +void Decoder::start() +{ + b_record = true; +} + +/* + * Set the record bit to false in all following frames. + */ +void Decoder::stop(n_savestate save) +{ + b_record = false; +} + + #endif /*USE_GUI*/ |