| @@ -25,17 +25,23 @@ | |||||
| /* Peak Server | /* Peak Server | ||||
| The peak server streams peak data to any timeline editors or other clients that ask for it. | |||||
| The Peak Server streams peak data to any Timeline Editors or other | |||||
| clients that ask for it. | |||||
| Peak request looks like: | |||||
| Peak request looks like (in ASCII) | |||||
| > read_peaks "foo.wav" fpp start end | > read_peaks "foo.wav" fpp start end | ||||
| Response looks like (in binary floats): | |||||
| Where "foo.wav" is the base name. (actual filenames may differ if | |||||
| the channels of the source are 'broken out') | |||||
| > channels length min max min max min max | |||||
| length ... | |||||
| Response looks like (in binary) | |||||
| > (int)channels (int)length (float)min max min max min max | |||||
| > length ... | |||||
| Were length specifies the number of Peaks (min/max pairs). The | |||||
| first channel is transmitted first, and any others follow. | |||||
| */ | */ | ||||
| #include "Audio_File.H" | #include "Audio_File.H" | ||||
| @@ -43,7 +49,6 @@ | |||||
| typedef unsigned long tick_t; | typedef unsigned long tick_t; | ||||
| #define PEAK_PORT 6100 | #define PEAK_PORT 6100 | ||||
| void | void | ||||
| @@ -68,10 +73,22 @@ Peak_Server::handle_request ( int s, const char *buf, int l ) | |||||
| tick_t start, end; | tick_t start, end; | ||||
| if ( 4 != sscanf( buf, "read_peaks \"%[^\"]\" %f %lu %lu", source, &fpp, &start, &end ) ) | if ( 4 != sscanf( buf, "read_peaks \"%[^\"]\" %f %lu %lu", source, &fpp, &start, &end ) ) | ||||
| fprintf( stderr, "error: malformed peak request!\n" ); | |||||
| { | |||||
| const char *err = "error: malformed request\n"; | |||||
| fprintf( stderr, err ); | |||||
| send( s, err, strlen( err ), 0 ); | |||||
| return; | |||||
| } | |||||
| Audio_File *af = Audio_File::from_file( source ); | Audio_File *af = Audio_File::from_file( source ); | ||||
| if ( ! af ) | |||||
| { | |||||
| const char *err = "error: could not open source\n"; | |||||
| send( s, err, strlen( err ), 0 ); | |||||
| return; | |||||
| } | |||||
| int channels = af->channels(); | int channels = af->channels(); | ||||
| send( s, &channels, sizeof( int ), 0 ); | send( s, &channels, sizeof( int ), 0 ); | ||||
| @@ -87,5 +104,5 @@ Peak_Server::handle_request ( int s, const char *buf, int l ) | |||||
| send( s, pk->peakbuf(), peaks * sizeof( Peak ), 0 ); | send( s, pk->peakbuf(), peaks * sizeof( Peak ), 0 ); | ||||
| } | } | ||||
| delete af; | |||||
| // delete af; | |||||
| } | } | ||||