#include "formattools.h"
#include "framecache.h"
#include "language.h"
+#include "mainprogress.inc"
#include "mutex.h"
#include "mwindow.h"
#include "packagingengine.h"
-int File::get_index(char *index_path)
+int File::get_index(IndexFile *index_file, MainProgressBar *progress_bar)
{
- if(file) {
- return file->get_index(index_path);
- }
- return 1;
+ return !file ? -1 : file->get_index(index_file, progress_bar);
}
if(debug) PRINT_TRACE
int supported_colormodel = colormodel_supported(frame->get_color_model());
int advance_position = 1;
-
+ int cache_active = use_cache || asset->video_length < 0 ? 1 : 0;
+ int64_t cache_position = asset->video_length >= 0 ? current_frame : -1;
// Test cache
- if(use_cache &&
- frame_cache->get_frame(frame,
- current_frame,
- current_layer,
- asset->frame_rate))
+ if( cache_active && frame_cache->get_frame(frame, cache_position,
+ current_layer, asset->frame_rate) )
{
// Can't advance position if cache used.
//printf("File::read_frame %d\n", __LINE__);
//for(int i = 0; i < 100 * 1000; i++) ((float*)frame->get_rows()[0])[i] = 1.0;
}
-//printf("File::read_frame %d use_cache=%d\n", __LINE__, use_cache);
- if(use_cache)
- frame_cache->put_frame(frame,
- current_frame, current_layer,
- asset->frame_rate, 1, 0);
+ if( cache_active && advance_position && frame->get_status() > 0 )
+ frame_cache->put_frame(frame, cache_position,
+ current_layer, asset->frame_rate, 1, 0);
//printf("File::read_frame %d\n", __LINE__);
if(advance_position) current_frame++;