+double ConvertRender::get_video_length(Indexable *idxbl)
+{
+ int64_t video_frames = idxbl->get_video_frames();
+ double frame_rate = idxbl->get_frame_rate();
+ if( video_frames < 0 && mwindow->edl->session->si_useduration )
+ video_frames = mwindow->edl->session->si_duration * frame_rate;
+ if( video_frames < 0 ) video_frames = 1;
+ return !video_frames ? 0 : video_frames / frame_rate;
+}
+
+double ConvertRender::get_audio_length(Indexable *idxbl)
+{
+ int64_t audio_samples = idxbl->get_audio_samples();
+ return !audio_samples ? 0 :
+ (double)audio_samples / idxbl->get_sample_rate();
+}
+
+double ConvertRender::get_length(Indexable *idxbl)
+{
+ return bmax(get_video_length(idxbl), get_audio_length(idxbl));
+}
+
+int ConvertRender::match_format(Asset *asset)
+{
+// close enough
+ return format_asset->audio_data == asset->audio_data &&
+ format_asset->video_data == asset->video_data ? 1 : 0;
+}
+