}
void FileMPEG::get_parameters(BC_WindowBase *parent_window,
- Asset *asset,
- BC_WindowBase* &format_window,
- int audio_options,
- int video_options)
+ Asset *asset, BC_WindowBase* &format_window,
+ int audio_options, int video_options, EDL *edl)
{
if(audio_options && asset->format == FILE_AMPEG)
{
if(!result)
{
const char *exec_path = File::get_cinlib_path();
- sprintf(mjpeg_command, "%s/%s", exec_path, HVPEG_EXE);
+ snprintf(mjpeg_command, sizeof(mjpeg_command),
+ "%s/%s", exec_path, HVPEG_EXE);
append_vcommand_line(mjpeg_command);
if(asset->aspect_ratio > 0)
// this one is cinelerra-x.x.x/thirdparty/mjpegtools/mpeg2enc
{
const char *exec_path = File::get_cinlib_path();
- sprintf(mjpeg_command, "%s/%s -v 0 ", exec_path, MJPEG_EXE);
+ snprintf(mjpeg_command, sizeof(mjpeg_command),
+ "%s/%s -v 0 ", exec_path, MJPEG_EXE);
// Must disable interlacing if MPEG-1
switch (asset->vmpeg_preset)
// quantization of 1 when bitrate is fixed. Perfectly intuitive.
if(asset->vmpeg_fix_bitrate)
{
- sprintf(string, " -b %d -q 1", asset->vmpeg_bitrate / 1000);
+ snprintf(string, sizeof(string),
+ " -b %d -q 1", asset->vmpeg_bitrate / 1000);
}
else
{
- sprintf(string, " -b 0 -q %d", asset->vmpeg_quantization);
+ snprintf(string, sizeof(string),
+ " -b 0 -q %d", asset->vmpeg_quantization);
}
- strcat(mjpeg_command, string);
-
-
-
-
-
+ strncat(mjpeg_command, string, sizeof(mjpeg_command));
// Aspect ratio
int aspect_ratio_code = -1;
aspect_ratio_code = 2;
}
sprintf(string, " -a %d", aspect_ratio_code);
- strcat(mjpeg_command, string);
+ strncat(mjpeg_command, string, sizeof(mjpeg_command));
eprintf(_("Unsupported frame rate %f\n"), asset->frame_rate);
}
sprintf(string, " -F %d", frame_rate_code);
- strcat(mjpeg_command, string);
+ strncat(mjpeg_command, string, sizeof(mjpeg_command));
- strcat(mjpeg_command,
- asset->vmpeg_progressive ? " -I 0" : " -I 1");
+ strncat(mjpeg_command,
+ asset->vmpeg_progressive ? " -I 0" : " -I 1",
+ sizeof(mjpeg_command));
sprintf(string, " -M %d", file->cpus);
- strcat(mjpeg_command, string);
+ strncat(mjpeg_command, string, sizeof(mjpeg_command));
if(!asset->vmpeg_progressive)
{
- strcat(mjpeg_command, asset->vmpeg_field_order ? " -z b" : " -z t");
+ strncat(mjpeg_command,
+ asset->vmpeg_field_order ? " -z b" : " -z t",
+ sizeof(mjpeg_command));
}
- sprintf(string, " -f %d", asset->vmpeg_preset);
- strcat(mjpeg_command, string);
+ snprintf(string, sizeof(string), " -f %d", asset->vmpeg_preset);
+ strncat(mjpeg_command, string, sizeof(mjpeg_command));
- sprintf(string, " -g %d -G %d", asset->vmpeg_iframe_distance, asset->vmpeg_iframe_distance);
- strcat(mjpeg_command, string);
+ snprintf(string, sizeof(string),
+ " -g %d -G %d", asset->vmpeg_iframe_distance, asset->vmpeg_iframe_distance);
+ strncat(mjpeg_command, string, sizeof(mjpeg_command));
- if(asset->vmpeg_seq_codes) strcat(mjpeg_command, " -s");
+ if(asset->vmpeg_seq_codes)
+ strncat(mjpeg_command, " -s", sizeof(mjpeg_command));
- sprintf(string, " -R %d", CLAMP(asset->vmpeg_pframe_distance, 0, 2));
- strcat(mjpeg_command, string);
+ snprintf(string, sizeof(string),
+ " -R %d", CLAMP(asset->vmpeg_pframe_distance, 0, 2));
+ strncat(mjpeg_command, string, sizeof(mjpeg_command));
- sprintf(string, " -o '%s'", asset->path);
- strcat(mjpeg_command, string);
+ snprintf(string, sizeof(string), " -o '%s'", asset->path);
+ strncat(mjpeg_command, string, sizeof(mjpeg_command));
+#ifdef HAVE_COMMERCIAL
int FileMPEG::toc_nail(void *vp, int track)
{
File *file = (File *)vp;
if( mpeg->get_video_info(track, pid, framerate, width, height) ) return 1;
if( pid < 0 || framerate <= 0 ) return 1;
double position = framenum / framerate;
-//printf("t%d/%03x f"_LD", %dx%d %dx%d\n",track,pid,framenum,mw,mh,width,height);
+//printf("t%d/%03x f%jd, %dx%d %dx%d\n",track,pid,framenum,mw,mh,width,height);
MWindow::commercials->get_frame(file, pid, position, tdat, mw, mh, width, height);
return 0;
}
-
+#endif
int FileMPEG::create_toc(char *toc_path)
{
// delete any existing toc files
char toc_file[BCTEXTLEN];
strcpy(toc_file, toc_path);
- remove(toc_file);
+ if( strcmp(toc_file, asset->path) )
+ remove(toc_file);
char *bp = strrchr(toc_file, '/');
if( !bp ) bp = toc_file;
char *sfx = strrchr(bp,'.');
// File needs a table of contents.
struct timeval new_time, prev_time, start_time, current_time;
gettimeofday(&prev_time, 0); gettimeofday(&start_time, 0);
+#ifdef HAVE_COMMERCIAL
if( file->preferences->scan_commercials ) {
set_skimming(-1, 1, toc_nail, file);
if( MWindow::commercials->resetDb() != 0 )
eprintf(_("cant access commercials database"));
}
+#endif
// This gets around the fact that MWindowGUI may be locked.
char progress_title[BCTEXTLEN];
sprintf(progress_title, _("Creating %s\n"), toc_file);
}
}
+#ifdef HAVE_COMMERCIAL
if( file->preferences->scan_commercials ) {
if( !result ) MWindow::commercials->write_ads(asset->path);
MWindow::commercials->closeDb();
}
+#endif
mpeg3_stop_toc(fd);
fd = 0;
switch(driver)
{
case PLAYBACK_X11:
- return BC_RGB888;
+// return BC_RGB888;
+// the direct X11 color model requires scaling in the codec
+ return BC_BGR8888;
case PLAYBACK_X11_XV:
case PLAYBACK_ASYNCHRONOUS:
return zmpeg3_cmdl(asset->vmpeg_cmodel) > 0 ?
if(!temp_frame)
{
- temp_frame = new VFrame(0,
- -1,
- temp_w,
- temp_h,
- output_cmodel,
- -1);
+ temp_frame = new VFrame(temp_w, temp_h,
+ output_cmodel, 0);
}
BC_CModels::transfer(temp_frame->get_rows(),
//printf("FileMPEG::write_frames %d\n", __LINE__);sleep(1);
if(!temp_frame)
{
- temp_frame = new VFrame(0,
- -1,
- asset->width,
- asset->height,
- output_cmodel,
- -1);
+ temp_frame = new VFrame(asset->width, asset->height,
+ output_cmodel, 0);
}
// printf("FileMPEG::write_frames %d temp_frame=%p %p %p %p frame=%p %p %p %p color_model=%p %p\n",
: BC_Window(_(PROGRAM_NAME ": Audio Compression"),
parent_window->get_abs_cursor_x(1),
parent_window->get_abs_cursor_y(1),
- 310,
- 120,
- -1,
- -1,
- 0,
- 0,
- 1)
+ 310, 120, -1, -1, 0, 0, 1)
{
this->parent_window = parent_window;
this->asset = asset;
}
-
-
-
-
-
MPEGLayer::MPEGLayer(int x, int y, MPEGConfigAudio *gui)
: BC_PopupMenu(x, y, 100, layer_to_string(gui->asset->ampeg_derivative))
{
MPEGABitrate::MPEGABitrate(int x, int y, MPEGConfigAudio *gui)
- : BC_PopupMenu(x,
- y,
- 100,
+ : BC_PopupMenu(x, y, 100,
bitrate_to_string(gui->string, gui->asset->ampeg_bitrate))
{
this->gui = gui;
: BC_Window(_(PROGRAM_NAME ": Video Compression"),
parent_window->get_abs_cursor_x(1),
parent_window->get_abs_cursor_y(1),
- 500,
- 400,
- -1,
- -1,
- 0,
- 0,
- 1)
+ 500, 400, -1, -1, 0, 0, 1)
{
this->parent_window = parent_window;
this->asset = asset;