comparison mplayerHQ.c @ 147:0a0d7dd8fb51

new command line/config file parser
author szabii
date Sun, 18 Mar 2001 23:32:31 +0000
parents 7c67c52142ed
children 16a32ec6419d
comparison
equal deleted inserted replaced
146:f3eb963d1370 147:0a0d7dd8fb51
33 #include <sys/soundcard.h> 33 #include <sys/soundcard.h>
34 #include <linux/cdrom.h> 34 #include <linux/cdrom.h>
35 35
36 #include "version.h" 36 #include "version.h"
37 #include "config.h" 37 #include "config.h"
38
39 #include "cfgparser.h"
38 40
39 #include "libvo/video_out.h" 41 #include "libvo/video_out.h"
40 42
41 // CODECS: 43 // CODECS:
42 #include "mp3lib/mp3.h" 44 #include "mp3lib/mp3.h"
320 exit(1); 322 exit(1);
321 } 323 }
322 324
323 int divx_quality=0; 325 int divx_quality=0;
324 326
325 int main(int argc,char* argv[]){ 327 int main(int argc,char* argv[], char *envp[]){
326 char* filename=NULL; //"MI2-Trailer.avi"; 328 char* filename=NULL; //"MI2-Trailer.avi";
327 int i; 329 int i;
328 int seek_to_sec=0; 330 int seek_to_sec=0;
329 int seek_to_byte=0; 331 int seek_to_byte=0;
330 int f; // filedes 332 int f; // filedes
369 int movie_size_x=0; 371 int movie_size_x=0;
370 int movie_size_y=0; 372 int movie_size_y=0;
371 int out_fmt=0; 373 int out_fmt=0;
372 char *dsp="/dev/dsp"; 374 char *dsp="/dev/dsp";
373 int force_ni=0; 375 int force_ni=0;
376 char *homedir;
377 char conffile[100];
378 #include "cfg-mplayer.h"
374 379
375 printf("%s",banner_text); 380 printf("%s",banner_text);
376 381
377 /* CHKOPT(a): check, wether there is 'a' more options left */ 382 if (parse_config_file(conf, "/etc/mplayer.conf") < 0)
378 #define CHKOPT(a) if ((argc - i) < (a + 1)) missing_param(argv[i]); 383 exit(1);
379 if (argc == 1) 384 if ((homedir = getenv("HOME")) == NULL) {
380 usage(); 385 printf("Can't find HOME dir\n");
381 for(i=1;i<argc;i++){ 386 exit(1);
382 if(strcmp(argv[i],"-o")==0){ 387 } else {
383 printf("Option -o has been renamed to -vo (video-out), use -vo !\n"); 388 snprintf(conffile, 100, "%s/.mplayerrc", homedir);
389 if (parse_config_file(conf, conffile) < 0)
384 exit(1); 390 exit(1);
385 } else 391 }
386 if(strcmp(argv[i],"-divxq")==0){ 392 if (parse_command_line(conf, argc, argv, envp, &filename) < 0)
387 printf("Option -divxq has been renamed to -pp (postprocessing), use -pp !\n"); 393 exit(1);
388 exit(1);
389 } else
390 if(strcmp(argv[i],"-vo")==0) {CHKOPT(1); video_driver=argv[++i];} else
391 if(strcmp(argv[i],"-dsp")==0) {CHKOPT(1); dsp=argv[++i];} else
392 if(strcmp(argv[i],"-encode")==0) {CHKOPT(1); encode_name=argv[++i];} else
393 if(strcmp(argv[i],"-bg")==0) {play_in_bg=1;} else
394 if(strcmp(argv[i],"-sb")==0) {CHKOPT(1); seek_to_byte=strtol(argv[++i],NULL,0);} else
395 if(strcmp(argv[i],"-ss")==0) {CHKOPT(1); seek_to_sec=strtol(argv[++i],NULL,0);} else
396 if(strcmp(argv[i],"-nosound")==0) {has_audio=0;} else
397 if(strcmp(argv[i],"-abs")==0) {CHKOPT(1); audio_buffer_size=strtol(argv[++i],NULL,0);} else
398 if(strcmp(argv[i],"-delay")==0) {CHKOPT(1); audio_delay=strtod(argv[++i],NULL);} else
399 #ifdef AVI_SYNC_BPS
400 if(strcmp(argv[i],"-nobps")==0) {pts_from_bps=0;} else
401 #else
402 if(strcmp(argv[i],"-bps")==0) {pts_from_bps=1;} else
403 #endif
404 #ifdef ALSA_TIMER
405 if(strcmp(argv[i],"-noalsa")==0) {alsa=0;} else
406 #else
407 if(strcmp(argv[i],"-alsa")==0) {alsa=1;} else
408 #endif
409 if(strcmp(argv[i],"-ni")==0) {force_ni=1;} else
410 if(strcmp(argv[i],"-aid")==0) {CHKOPT(1); audio_id=strtol(argv[++i],NULL,0);} else
411 if(strcmp(argv[i],"-vid")==0) {CHKOPT(1); video_id=strtol(argv[++i],NULL,0);} else
412 if(strcmp(argv[i],"-auds")==0) {CHKOPT(1); avi_header.audio_codec=argv[++i];} else
413 if(strcmp(argv[i],"-vids")==0) {CHKOPT(1); avi_header.video_codec=argv[++i];} else
414 if(strcmp(argv[i],"-mc")==0) {CHKOPT(1); default_max_pts_correction=strtod(argv[++i],NULL);} else
415 if(strcmp(argv[i],"-fps")==0) {CHKOPT(1); force_fps=strtod(argv[++i],NULL);} else
416 if(strcmp(argv[i],"-afm")==0) {CHKOPT(1); audio_format=strtol(argv[++i],NULL,0);} else
417 if(strcmp(argv[i],"-vcd")==0) {CHKOPT(1); vcd_track=strtol(argv[++i],NULL,0);} else
418 if(strcmp(argv[i],"-pp")==0) {CHKOPT(1); divx_quality=strtol(argv[++i],NULL,0);} else
419 if(strcmp(argv[i],"-br")==0) {CHKOPT(1); encode_bitrate=strtol(argv[++i],NULL,0);} else
420 if(strcmp(argv[i],"-x")==0) {CHKOPT(1); screen_size_x=strtol(argv[++i],NULL,0);} else
421 if(strcmp(argv[i],"-y")==0) {CHKOPT(1); screen_size_y=strtol(argv[++i],NULL,0);} else
422 if(strcmp(argv[i],"-xy")==0) {CHKOPT(1); screen_size_xy=strtol(argv[++i],NULL,0);} else
423 if(strcmp(argv[i],"-fs")==0) {fullscreen=1;} else
424 if(strcmp(argv[i],"-noidx")==0) {no_index=1;} else
425 if(strcmp(argv[i],"-v")==0) {++verbose;} else
426 if(strcmp(argv[i],"-h")==0) {usage();} else
427 if(strcmp(argv[i],"--help")==0) {usage();} else
428 { if(filename){ printf("invalid option: %s\n",filename);exit(1);}
429 filename=argv[i];
430 }
431 }
432 #undef CHKOPT /* we don't need this anymore */
433 394
434 // Many users forget to include command line in bugreports... 395 // Many users forget to include command line in bugreports...
435 if(verbose){ 396 if(verbose){
436 printf("CommandLine:"); 397 printf("CommandLine:");
437 for(i=1;i<argc;i++)printf(" '%s'",argv[i]); 398 for(i=1;i<argc;i++)printf(" '%s'",argv[i]);