folders.set_array_delete();
- new_folder(CLIP_FOLDER);
-
- new_folder(MEDIA_FOLDER);
+// persistent for now
+// new_folder(CLIP_FOLDER);
+// new_folder(MEDIA_FOLDER);
id = next_id();
path[0] = 0;
if((load_flags & LOAD_VCONFIG) &&
(load_flags & LOAD_SESSION))
session->load_video_config(file, 0, load_flags);
+ else
+ result = file->skip_tag();
}
else
if(file->tag.title_is("AUDIO"))
if((load_flags & LOAD_ACONFIG) &&
(load_flags & LOAD_SESSION))
session->load_audio_config(file, 0, load_flags);
+ else
+ result = file->skip_tag();
}
else
if(file->tag.title_is("FOLDER"))
{
if(load_flags & LOAD_ASSETS)
assets->load(file, load_flags);
+ else
+ result = file->skip_tag();
}
else
if(file->tag.title_is(labels->xml_tag))
{
if(load_flags & LOAD_TIMEBAR)
labels->load(file, load_flags);
+ else
+ result = file->skip_tag();
}
else
if(file->tag.title_is("LOCALSESSION"))
if((load_flags & LOAD_SESSION) ||
(load_flags & LOAD_TIMEBAR))
local_session->load_xml(file, load_flags);
+ else
+ result = file->skip_tag();
}
else
if(file->tag.title_is("SESSION"))
if((load_flags & LOAD_SESSION) &&
!parent_edl)
session->load_xml(file, 0, load_flags);
+ else
+ result = file->skip_tag();
}
else
if(file->tag.title_is("TRACK"))
}
-void EDL::set_path(char *path)
+void EDL::set_path(const char *path)
{
strcpy(this->path, path);
}
// Convert position to frames if cursor alignment is enabled
double EDL::align_to_frame(double position, int round)
{
-//printf("EDL::align_to_frame 1 %f\n", position);
- if(session->cursor_on_frames)
- {
-// Seconds -> Frames
- double temp = (double)position * session->frame_rate;
-//printf("EDL::align_to_frame 2 %f\n", temp);
-
-// Assert some things
- if(session->sample_rate == 0)
- printf("EDL::align_to_frame: sample_rate == 0\n");
-
- if(session->frame_rate == 0)
- printf("EDL::align_to_frame: frame_rate == 0\n");
-
-// Round frames
-// Always round down negative numbers
-// but round up only if requested
- if(round)
- {
- temp = Units::round(temp);
- }
- else
- {
-// if(temp < 0)
-// {
-// temp -= 0.5;
-// }
-// else
- temp = Units::to_int64(temp);
- }
-//printf("EDL::align_to_frame 3 %f\n", temp);
-
-// Frames -> Seconds
- temp /= session->frame_rate;
-
-//printf("EDL::align_to_frame 5 %f\n", temp);
-
- return temp;
+ if( session->cursor_on_frames && session->frame_rate > 0 ) {
+ double frame_no = position * session->frame_rate;
+ int64_t frame_pos = frame_no + (round ? 0.5 : 1e-6);
+ double pos = frame_pos / session->frame_rate;
+ if( !EQUIV(pos, position) ) position = pos;
}
-//printf("EDL::align_to_frame 3 %d\n", position);
-
-
return position;
}
// Asset and output device must have same resulting de-interlacing method
if( ilaceautofixmethod2(session->interlace_mode,
asset->interlace_autofixoption, asset->interlace_mode,
- asset->interlace_fixmethod) != BC_ILACE_FIXMETHOD_NONE )
+ asset->interlace_fixmethod) != ILACE_FIXMETHOD_NONE )
return 1;
// If we get here the frame is going to be directly copied. Whether it is