Fixed zero content-length and cbogus length calculation.

git-svn-id: http://svn.zoneminder.com/svn/zm/trunk@995 e3e1d417-86f3-4887-817a-d78f3d33393f
This commit is contained in:
stan 2004-03-23 11:43:36 +00:00
parent 02d94534b0
commit 35141bc60d
1 changed files with 18 additions and 16 deletions

View File

@ -366,7 +366,10 @@ void Event::StreamEvent( int event_id, int scale, int rate, int maxfps )
static char sql[BUFSIZ]; static char sql[BUFSIZ];
static char eventpath[PATH_MAX]; static char eventpath[PATH_MAX];
sprintf( sql, "select M.Id, M.Name, E.Length, E.Frames from Events as E inner join Monitors as M on E.MonitorId = M.Id where E.Id = %d", event_id ); if ( !initialised )
Initialise();
sprintf( sql, "select M.Id, M.Name, E.Frames, max(F.Delta)-min(F.Delta) as Duration from Events as E inner join Monitors as M on E.MonitorId = M.Id inner join Frames as F on E.Id = F.EventId where E.Id = %d group by E.Id", event_id );
if ( mysql_query( &dbconn, sql ) ) if ( mysql_query( &dbconn, sql ) )
{ {
Error(( "Can't run query: %s", mysql_error( &dbconn ) )); Error(( "Can't run query: %s", mysql_error( &dbconn ) ));
@ -388,8 +391,8 @@ void Event::StreamEvent( int event_id, int scale, int rate, int maxfps )
} }
sprintf( eventpath, "%s/%s/%s/%d", ZM_PATH_WEB, (const char *)config.Item( ZM_DIR_EVENTS ), dbrow[1], event_id ); sprintf( eventpath, "%s/%s/%s/%d", ZM_PATH_WEB, (const char *)config.Item( ZM_DIR_EVENTS ), dbrow[1], event_id );
int duration = atoi(dbrow[2]); int frames = atoi(dbrow[2]);
int frames = atoi(dbrow[3]); int duration = atoi(dbrow[3]);
int min_fps = 1; int min_fps = 1;
int max_fps = maxfps; int max_fps = maxfps;
@ -404,7 +407,7 @@ void Event::StreamEvent( int event_id, int scale, int rate, int maxfps )
frame_mod *= 2; frame_mod *= 2;
} }
Debug( 1, ( "Duration:%d, Frames:%d, BFPS:%d, EFPS:%d, FM:%d", atoi(dbrow[2]), atoi(dbrow[3]), base_fps, effective_fps, frame_mod )); Debug( 1, ( "Frames:%d, Duration: %d, BFPS:%d, EFPS:%d, FM:%d", frames, duration, base_fps, effective_fps, frame_mod ));
mysql_free_result( result ); mysql_free_result( result );
@ -455,16 +458,11 @@ void Event::StreamEvent( int event_id, int scale, int rate, int maxfps )
static char filepath[PATH_MAX]; static char filepath[PATH_MAX];
sprintf( filepath, capture_file_format, eventpath, id ); sprintf( filepath, capture_file_format, eventpath, id );
fprintf( stdout, "Content-Length: %d\r\n", n_bytes );
fprintf( stdout, "Content-Type: image/jpeg\r\n\r\n" );
if ( scale == 100 ) if ( scale == 100 )
{ {
if ( (fdj = fopen( filepath, "r" )) ) if ( (fdj = fopen( filepath, "r" )) )
{ {
while ( (n_bytes = fread( buffer, 1, sizeof(buffer), fdj )) ) n_bytes = fread( buffer, 1, sizeof(buffer), fdj );
{
write( fileno(stdout), buffer, n_bytes );
}
fclose( fdj ); fclose( fdj );
} }
else else
@ -479,9 +477,10 @@ void Event::StreamEvent( int event_id, int scale, int rate, int maxfps )
image.Scale( scale ); image.Scale( scale );
image.EncodeJpeg( buffer, &n_bytes ); image.EncodeJpeg( buffer, &n_bytes );
write( fileno(stdout), buffer, n_bytes );
} }
fprintf( stdout, "Content-Length: %d\r\n", n_bytes );
fprintf( stdout, "Content-Type: image/jpeg\r\n\r\n" );
write( fileno(stdout), buffer, n_bytes );
fprintf( stdout, "\r\n\r\n--ZoneMinderFrame\r\n" ); fprintf( stdout, "\r\n\r\n--ZoneMinderFrame\r\n" );
fflush( stdout ); fflush( stdout );
last_delta = this_delta; last_delta = this_delta;
@ -512,9 +511,12 @@ void Event::StreamMpeg( int event_id, const char *format, int scale, int rate, i
static char sql[BUFSIZ]; static char sql[BUFSIZ];
static char eventpath[PATH_MAX]; static char eventpath[PATH_MAX];
if ( !initialised )
Initialise();
bool timed_frames = (bool)config.Item( ZM_VIDEO_TIMED_FRAMES ); bool timed_frames = (bool)config.Item( ZM_VIDEO_TIMED_FRAMES );
sprintf( sql, "select M.Id, M.Name, E.Length, E.Frames from Events as E inner join Monitors as M on E.MonitorId = M.Id where E.Id = %d", event_id ); sprintf( sql, "select M.Id, M.Name, E.Frames, max(F.Delta)-min(F.Delta) as Duration from Events as E inner join Monitors as M on E.MonitorId = M.Id inner join Frames as F on E.Id = F.EventId where E.Id = %d group by E.Id", event_id );
if ( mysql_query( &dbconn, sql ) ) if ( mysql_query( &dbconn, sql ) )
{ {
Error(( "Can't run query: %s", mysql_error( &dbconn ) )); Error(( "Can't run query: %s", mysql_error( &dbconn ) ));
@ -536,8 +538,8 @@ void Event::StreamMpeg( int event_id, const char *format, int scale, int rate, i
} }
sprintf( eventpath, "%s/%s/%s/%d", ZM_PATH_WEB, (const char *)config.Item( ZM_DIR_EVENTS ), dbrow[1], event_id ); sprintf( eventpath, "%s/%s/%s/%d", ZM_PATH_WEB, (const char *)config.Item( ZM_DIR_EVENTS ), dbrow[1], event_id );
int duration = atoi(dbrow[2]); int frames = atoi(dbrow[2]);
int frames = atoi(dbrow[3]); int duration = atoi(dbrow[3]);
int min_fps = 1; int min_fps = 1;
int max_fps = maxfps; int max_fps = maxfps;
@ -552,7 +554,7 @@ void Event::StreamMpeg( int event_id, const char *format, int scale, int rate, i
frame_mod *= 2; frame_mod *= 2;
} }
Debug( 1, ( "Duration:%d, Frames:%d, BFPS:%d, EFPS:%d, FM:%d", atoi(dbrow[2]), atoi(dbrow[3]), base_fps, effective_fps, frame_mod )); Debug( 1, ( "Frames:%d, Duration: %d, BFPS:%d, EFPS:%d, FM:%d", frames, duration, base_fps, effective_fps, frame_mod ));
mysql_free_result( result ); mysql_free_result( result );