On Monday 25 August 2003 21:01, Ronald Bultje wrote: > If I'm correct, using a --nodeps should work. We don't specifically need > it. I just added it so that normal people will understand that they can > get quicktime support by this.
It probably would work just fine, but I'm not only lazy; I'm a coward, too. :) > > The max-file-time (like max-file-size but with time) feature didn't make > > it? > > Oh, yeah, go ahead and apply it if you want. :). Okely-dokely-diddley-do! Well, I ported my changes from 1.6.0 and renamed the argument to be more consistent with the existing max-file-size. I hope the attached diff files aren't too messed up. (I still haven't learned that diff/patch thing...) They're diffed against the latest 1.6.1.90 sources. I believe the biggest change is an added field in lavrec_t, holding the number of frames. I chose to implement it as number of frames per file, rather than number of seconds per file because the NTSC framerate wouldn't let you specify exactly 10000 frames, a number I find very convenient as a per-file-limit. /Sam
*** mjpegtools-1.6.1.90/lavtools/orig-lavrec.c Sat Aug 23 15:14:35 2003 --- mjpegtools-1.6.1.90/lavtools/lavrec.c Mon Aug 25 23:53:21 2003 *************** *** 99,104 **** --- 99,110 ---- * format and need a specific filesize limit, for example to be * able to burn the video files to CD (650 MB). * + * --max-file-frames --- The maximum number of frames per video file + * Intended for those that would like to record video in MJPEG + * format and need a specific number of frames per file, for + * example to be able to perform easy file and frame number + * arithmetics when cutting video manually. + * * --file-flush --- How often (in frames) the current output * file (if any) should be flushed to disk. (default:60). * Set to 0 if your chosen file-system and system tuning *************** *** 253,258 **** --- 259,265 ---- fprintf(stderr, " --software-encoding Use software JPEG-encoding (for BTTV-capture)\n"); fprintf(stderr, " --num-procs num Number of encoding processes (default: 1)\n"); fprintf(stderr, " --max-file-size num Maximum size per file (in MB)\n"); + fprintf(stderr, " --max-file-frames num Maximum number of frames per file\n"); fprintf(stderr, " --file-flush num Flush capture file to disk every num frames\n"); fprintf(stderr, " -v/--verbose [012] verbose level (default: 0)\n"); *************** *** 842,847 **** --- 849,858 ---- { info->max_file_size_mb = atoi(optarg); } + else if (strcmp(name, "max-file-frames")==0) + { + info->max_file_frames = atoi(optarg); + } else if (strcmp(name, "file-flush")==0) { info->flush_count = atoi(optarg); *************** *** 888,893 **** --- 899,905 ---- {"software-encoding",0,0,0}, /* --software-encoding */ {"num-procs" ,1,0,0}, /* --num-procs */ {"max-file-size" ,1,0,0}, /* --max-file-size */ + {"max-file-frames" ,1,0,0}, /* --max-file-frames */ {"file-flush" ,1,0,0}, /* --file-flush */ {"frequency" ,1,0,0}, /* --frequency/-F */ {0,0,0,0}
*** mjpegtools-1.6.1.90/lavtools/orig-liblavrec.c Mon Aug 25 23:10:48 2003 --- mjpegtools-1.6.1.90/lavtools/liblavrec.c Mon Aug 25 23:13:13 2003 *************** *** 618,623 **** --- 618,629 ---- } /* Check if we have to open a new output file */ + if( info->max_file_frames > 0 && settings->stats->num_frames % info->max_file_frames == 0) + { + lavrec_msg(LAVREC_MSG_INFO, info, + "Max number of frames reached, opening next output file"); + OpenNewFlag = 1; + } if (settings->output_status > 0 && (settings->bytes_output_cur>>20) > info->max_file_size_mb) { lavrec_msg(LAVREC_MSG_INFO, info,
*** mjpegtools-1.6.1.90/lavtools/orig-liblavrec.h Mon Aug 25 23:14:24 2003 --- mjpegtools-1.6.1.90/lavtools/liblavrec.h Mon Aug 25 23:16:25 2003 *************** *** 111,116 **** --- 111,117 ---- char **files; /* the files where to capture the video to */ int num_files; /* number of files in the files[]-array */ int max_file_size_mb; + int max_file_frames; /* maximum number of frames per file */ int flush_count; /* How often (in frames) to flush data to disk */ void (*output_statistics)(video_capture_stats *stats); /* speaks for itself */ void (*audio_captured)(uint8_t *audio, long sampes); /* callback when audio has been grabbed */