/* avinfo - avi information printing v 0.7.4 This program is under GNU public license. See "copying" for detail. (c) George Shuklin, 2003, home page: http://www.shounen.ru/soft/avinfo/ */ #include #include #include #define BUFFER 65536 //default buffer size for output #include "h/structs.h" #include "messages.c" #include "config.c" #include "common.c" #include "aviread.c" #include "output.c" #include "cmdline.c" int main( int argc, char *argv[] ) { char *buffer; int error = 0; FILE *file; idx1 *index; int indexSize; idxStat *StreamStat; idxStat Global; idxStat Audio; idxStat Video; MainAVIHeader avih; mem_chunk *StreamData=NULL; char *template[2]; file_data file_d; //data for processing file char* info[23]; Init( info, &file_d, template); CMDlineParse( argc, argv, &file_d, template ); if( !file_d.filename ) return flags.error.message?puts( "*** No filename\n" ):0; file = fopen( file_d.filename, "rb" ); if( (int)file == -1 || ! (int) file ) return flags.error.message?printf( "*** Error opening file: %s\n", file_d.filename ):-1; fseek ( file , 0, SEEK_END ); file_d.size = ( ftell( file ) ); error=ReadAVI(file, &avih, &StreamData); if( !flags.disable.info ){ error=ReadAVIinfo( file, info ); if (!error) flags.disable.info=1;//no info } if(!flags.disable.index) { indexSize=ReadIDX1(file, &index); if(indexSize<=0){ if(flags.error.message){ puts("\n*** Unable to read index (idx1). It can be broken, or this program can be buggly.\n"); } flags.disable.index=1;//turn off index // if(!flags.error.ignore) exit( -1 ); //turned off for better compability } } if(!flags.disable.index) ParseIDX1(index, indexSize, avih.dwStreams, &StreamStat, &Global, &Audio, &Video); fclose( file ); buffer = malloc( BUFFER ); report( buffer, template[0], template[1], &avih, StreamData, &file_d, info, StreamStat, &Global, &Audio, &Video ); printf( "%s", buffer ); free( buffer ); return 0; }