|
Jarod Wilson |
882aaa |
diff -Naurp dvgrab-3.0.orig/dvgrab.cc dvgrab-3.0/dvgrab.cc
|
|
Jarod Wilson |
882aaa |
--- dvgrab-3.0.orig/dvgrab.cc 2007-08-06 23:00:43.000000000 -0400
|
|
Jarod Wilson |
882aaa |
+++ dvgrab-3.0/dvgrab.cc 2007-10-22 17:22:18.000000000 -0400
|
|
Jarod Wilson |
882aaa |
@@ -436,9 +436,6 @@ void DVgrab::getargs( int argc, char *ar
|
|
Jarod Wilson |
882aaa |
print_version();
|
|
Jarod Wilson |
882aaa |
exit( EXIT_SUCCESS );
|
|
Jarod Wilson |
882aaa |
break;
|
|
Jarod Wilson |
882aaa |
- case '-':
|
|
Jarod Wilson |
882aaa |
- m_raw_pipe = true;
|
|
Jarod Wilson |
882aaa |
- break;
|
|
Jarod Wilson |
882aaa |
default:
|
|
Jarod Wilson |
882aaa |
print_usage();
|
|
Jarod Wilson |
882aaa |
exit( EXIT_FAILURE );
|
|
Jarod Wilson |
882aaa |
@@ -447,15 +444,31 @@ void DVgrab::getargs( int argc, char *ar
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
if ( optind < argc )
|
|
Jarod Wilson |
882aaa |
{
|
|
Jarod Wilson |
882aaa |
+ if ( argv[ optind ][0] == '-' )
|
|
Jarod Wilson |
882aaa |
+ {
|
|
Jarod Wilson |
882aaa |
+ m_raw_pipe = true;
|
|
Jarod Wilson |
882aaa |
+ ++optind;
|
|
Jarod Wilson |
882aaa |
+ }
|
|
Jarod Wilson |
882aaa |
+ }
|
|
Jarod Wilson |
882aaa |
+ if ( optind < argc )
|
|
Jarod Wilson |
882aaa |
+ {
|
|
Jarod Wilson |
882aaa |
m_dst_file_name = argv[ optind++ ];
|
|
Jarod Wilson |
882aaa |
set_format_from_name();
|
|
Jarod Wilson |
882aaa |
}
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
if ( optind < argc )
|
|
Jarod Wilson |
882aaa |
{
|
|
Jarod Wilson |
882aaa |
- cerr << "Too many output file names." << endl;
|
|
Jarod Wilson |
882aaa |
- print_usage();
|
|
Jarod Wilson |
882aaa |
- exit( EXIT_FAILURE );
|
|
Jarod Wilson |
882aaa |
+ if ( argv[ optind ][0] == '-' )
|
|
Jarod Wilson |
882aaa |
+ {
|
|
Jarod Wilson |
882aaa |
+ m_raw_pipe = true;
|
|
Jarod Wilson |
882aaa |
+ ++optind;
|
|
Jarod Wilson |
882aaa |
+ }
|
|
Jarod Wilson |
882aaa |
+ else
|
|
Jarod Wilson |
882aaa |
+ {
|
|
Jarod Wilson |
882aaa |
+ cerr << "Too many output file names." << endl;
|
|
Jarod Wilson |
882aaa |
+ print_usage();
|
|
Jarod Wilson |
882aaa |
+ exit( EXIT_FAILURE );
|
|
Jarod Wilson |
882aaa |
+ }
|
|
Jarod Wilson |
882aaa |
}
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
if ( m_dst_file_name == NULL && !m_raw_pipe )
|
|
Jarod Wilson |
882aaa |
diff -Naurp dvgrab-3.0.orig/filehandler.cc dvgrab-3.0/filehandler.cc
|
|
Jarod Wilson |
882aaa |
--- dvgrab-3.0.orig/filehandler.cc 2007-07-28 23:47:15.000000000 -0400
|
|
Jarod Wilson |
882aaa |
+++ dvgrab-3.0/filehandler.cc 2007-10-22 17:25:53.000000000 -0400
|
|
Jarod Wilson |
882aaa |
@@ -41,6 +41,7 @@ using std::setfill;
|
|
Jarod Wilson |
882aaa |
#include <sys/stat.h>
|
|
Jarod Wilson |
882aaa |
#include <assert.h>
|
|
Jarod Wilson |
882aaa |
#include <time.h>
|
|
Jarod Wilson |
882aaa |
+#include <errno.h>
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
#include "filehandler.h"
|
|
Jarod Wilson |
882aaa |
#include "error.h"
|
|
Jarod Wilson |
882aaa |
@@ -459,6 +460,32 @@ TimeSys:
|
|
Jarod Wilson |
882aaa |
return true;
|
|
Jarod Wilson |
882aaa |
}
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
+static ssize_t writen( int fd, unsigned char *vptr, size_t n )
|
|
Jarod Wilson |
882aaa |
+{
|
|
Jarod Wilson |
882aaa |
+ size_t nleft = n;
|
|
Jarod Wilson |
882aaa |
+ ssize_t nwritten;
|
|
Jarod Wilson |
882aaa |
+ unsigned char *ptr = vptr;
|
|
Jarod Wilson |
882aaa |
+
|
|
Jarod Wilson |
882aaa |
+ while ( nleft > 0 )
|
|
Jarod Wilson |
882aaa |
+ {
|
|
Jarod Wilson |
882aaa |
+ if ( ( nwritten = write( fd, ptr, nleft ) ) <= 0 )
|
|
Jarod Wilson |
882aaa |
+ {
|
|
Jarod Wilson |
882aaa |
+ if ( errno == EINTR )
|
|
Jarod Wilson |
882aaa |
+ {
|
|
Jarod Wilson |
882aaa |
+ nwritten = 0;
|
|
Jarod Wilson |
882aaa |
+ }
|
|
Jarod Wilson |
882aaa |
+ else
|
|
Jarod Wilson |
882aaa |
+ {
|
|
Jarod Wilson |
882aaa |
+ n = -1;
|
|
Jarod Wilson |
882aaa |
+ break;
|
|
Jarod Wilson |
882aaa |
+ }
|
|
Jarod Wilson |
882aaa |
+ }
|
|
Jarod Wilson |
882aaa |
+ nleft -= nwritten;
|
|
Jarod Wilson |
882aaa |
+ ptr += nwritten;
|
|
Jarod Wilson |
882aaa |
+ }
|
|
Jarod Wilson |
882aaa |
+ return n;
|
|
Jarod Wilson |
882aaa |
+}
|
|
Jarod Wilson |
882aaa |
+
|
|
Jarod Wilson |
882aaa |
/***************************************************************************/
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
@@ -497,7 +524,7 @@ bool RawHandler::Create( const string& f
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
int RawHandler::Write( Frame *frame )
|
|
Jarod Wilson |
882aaa |
{
|
|
Jarod Wilson |
882aaa |
- int result = write( fd, frame->data, frame->GetDataLen() );
|
|
Jarod Wilson |
882aaa |
+ int result = writen( fd, frame->data, frame->GetDataLen() );
|
|
Jarod Wilson |
882aaa |
return result;
|
|
Jarod Wilson |
882aaa |
}
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
@@ -1261,12 +1288,12 @@ int Mpeg2Handler::Write( Frame *frame )
|
|
Jarod Wilson |
882aaa |
// Write any buffered data first.
|
|
Jarod Wilson |
882aaa |
if ( bufferLen > 0 )
|
|
Jarod Wilson |
882aaa |
{
|
|
Jarod Wilson |
882aaa |
- if ( 0 > ( result = write( fd, buffer, bufferLen ) ) )
|
|
Jarod Wilson |
882aaa |
+ if ( 0 > ( result = writen( fd, buffer, bufferLen ) ) )
|
|
Jarod Wilson |
882aaa |
return result;
|
|
Jarod Wilson |
882aaa |
bufferLen = 0;
|
|
Jarod Wilson |
882aaa |
}
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
- result = write( fd, frame->data, frame->GetDataLen() );
|
|
Jarod Wilson |
882aaa |
+ result = writen( fd, frame->data, frame->GetDataLen() );
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
if ( 0 <= result )
|
|
Jarod Wilson |
882aaa |
totalFrames++;
|
|
Jarod Wilson |
882aaa |
diff -Naurp dvgrab-3.0.orig/ieee1394io.cc dvgrab-3.0/ieee1394io.cc
|
|
Jarod Wilson |
882aaa |
--- dvgrab-3.0.orig/ieee1394io.cc 2007-07-07 03:10:12.000000000 -0400
|
|
Jarod Wilson |
882aaa |
+++ dvgrab-3.0/ieee1394io.cc 2007-10-22 17:14:52.000000000 -0400
|
|
Jarod Wilson |
882aaa |
@@ -432,14 +432,18 @@ bool iec61883Reader::Open()
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
void iec61883Reader::Close()
|
|
Jarod Wilson |
882aaa |
{
|
|
Jarod Wilson |
882aaa |
- if ( m_iec61883.ref != NULL )
|
|
Jarod Wilson |
882aaa |
- {
|
|
Jarod Wilson |
882aaa |
- if ( isHDV )
|
|
Jarod Wilson |
882aaa |
+ if ( isHDV ) {
|
|
Jarod Wilson |
882aaa |
+ if ( m_iec61883.mpeg2 != NULL ) {
|
|
Jarod Wilson |
882aaa |
iec61883_mpeg2_close( m_iec61883.mpeg2 );
|
|
Jarod Wilson |
882aaa |
- else
|
|
Jarod Wilson |
882aaa |
+ m_iec61883.mpeg2 = NULL;
|
|
Jarod Wilson |
882aaa |
+ }
|
|
Jarod Wilson |
882aaa |
+ }
|
|
Jarod Wilson |
882aaa |
+ else
|
|
Jarod Wilson |
882aaa |
+ {
|
|
Jarod Wilson |
882aaa |
+ if ( m_iec61883.dv != NULL ) {
|
|
Jarod Wilson |
882aaa |
iec61883_dv_fb_close( m_iec61883.dv );
|
|
Jarod Wilson |
882aaa |
-
|
|
Jarod Wilson |
882aaa |
- m_iec61883.dv = NULL;
|
|
Jarod Wilson |
882aaa |
+ m_iec61883.dv = NULL;
|
|
Jarod Wilson |
882aaa |
+ }
|
|
Jarod Wilson |
882aaa |
}
|
|
Jarod Wilson |
882aaa |
}
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
@@ -470,9 +474,9 @@ void iec61883Reader::StopReceive()
|
|
Jarod Wilson |
882aaa |
if ( m_iec61883.ref != NULL )
|
|
Jarod Wilson |
882aaa |
{
|
|
Jarod Wilson |
882aaa |
if ( isHDV )
|
|
Jarod Wilson |
882aaa |
- iec61883_mpeg2_close( m_iec61883.mpeg2 );
|
|
Jarod Wilson |
882aaa |
+ iec61883_mpeg2_recv_stop( m_iec61883.mpeg2 );
|
|
Jarod Wilson |
882aaa |
else
|
|
Jarod Wilson |
882aaa |
- iec61883_dv_fb_close( m_iec61883.dv );
|
|
Jarod Wilson |
882aaa |
+ iec61883_dv_fb_stop( m_iec61883.dv );
|
|
Jarod Wilson |
882aaa |
|
|
Jarod Wilson |
882aaa |
m_iec61883.ref = NULL;
|
|
Jarod Wilson |
882aaa |
}
|
|
Jarod Wilson |
882aaa |
@@ -1085,6 +1089,7 @@ void* pipeReader::Thread()
|
|
Jarod Wilson |
882aaa |
pthread_mutex_lock( &mutex );
|
|
Jarod Wilson |
882aaa |
if ( currentFrame ) outFrames.push_back( currentFrame );
|
|
Jarod Wilson |
882aaa |
currentFrame = NULL;
|
|
Jarod Wilson |
882aaa |
+ outFrames.push_back( currentFrame );
|
|
Jarod Wilson |
882aaa |
TriggerAction( );
|
|
Jarod Wilson |
882aaa |
pthread_mutex_unlock( &mutex );
|
|
Jarod Wilson |
882aaa |
return NULL;
|