projects
/
goodguy
/
history.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
clean up bclistbox, listbox shift drag fix, plugin info
[goodguy/history.git]
/
cinelerra-5.1
/
cinelerra
/
file.C
diff --git
a/cinelerra-5.1/cinelerra/file.C
b/cinelerra-5.1/cinelerra/file.C
index 2d1c4af26758eadbe4b1da6b4d41ec019ade35b5..4b9c1be85a5ccc60c4544442de152593834e2b7b 100644
(file)
--- a/
cinelerra-5.1/cinelerra/file.C
+++ b/
cinelerra-5.1/cinelerra/file.C
@@
-75,6
+75,7
@@
#include "samples.h"
#include "vframe.h"
#include "samples.h"
#include "vframe.h"
+//static int temp_debug = 0;
//suppress noref warning
void *vorbis0_ov_callbacks[] = {
&OV_CALLBACKS_DEFAULT, &OV_CALLBACKS_NOCLOSE,
//suppress noref warning
void *vorbis0_ov_callbacks[] = {
&OV_CALLBACKS_DEFAULT, &OV_CALLBACKS_NOCLOSE,
@@
-99,8
+100,10
@@
File::~File()
format_completion->unlock();
}
format_completion->unlock();
}
- if( temp_frame ) delete temp_frame;
-
+ if( temp_frame ) {
+//printf("File::~File %d temp_debug=%d\n", __LINE__, --temp_debug);
+ delete temp_frame;
+ }
close_file(0);
close_file(0);
@@
-298,7
+301,6
@@
void File::set_white_balance_raw(int value)
this->white_balance_raw = value;
}
this->white_balance_raw = value;
}
-
void File::set_cache_frames(int value)
{
// caching only done locally
void File::set_cache_frames(int value)
{
// caching only done locally
@@
-319,7
+321,7
@@
int File::purge_cache()
int File::delete_oldest()
{
int File::delete_oldest()
{
-//
caching only done locally
+//
return the number of bytes freed
return frame_cache->delete_oldest();
}
return frame_cache->delete_oldest();
}
@@
-474,8
+476,6
@@
int File::open_file(Preferences *preferences,
this->wr = wr;
file = 0;
this->wr = wr;
file = 0;
- if( debug ) printf("File::open_file %d\n", __LINE__);
-
if( debug ) printf("File::open_file %p %d\n", this, __LINE__);
switch( this->asset->format ) {
if( debug ) printf("File::open_file %p %d\n", this, __LINE__);
switch( this->asset->format ) {
@@
-1111,15
+1111,9
@@
int File::read_samples(Samples *samples, int64_t len)
int File::read_frame(VFrame *frame, int is_thread)
{
const int debug = 0;
int File::read_frame(VFrame *frame, int is_thread)
{
const int debug = 0;
-
- if( debug ) PRINT_TRACE
-
-//printf("File::read_frame %d\n", __LINE__);
-
+//printf("File::read_frame pos=%jd cache=%d 1frame=%d\n",
+// current_frame, use_cache, asset->single_frame);
if( video_thread && !is_thread ) return video_thread->read_frame(frame);
if( video_thread && !is_thread ) return video_thread->read_frame(frame);
-
-//printf("File::read_frame %d\n", __LINE__);
- if( debug ) PRINT_TRACE
if( !file ) return 1;
if( debug ) PRINT_TRACE
int result = 0;
if( !file ) return 1;
if( debug ) PRINT_TRACE
int result = 0;
@@
-1127,6
+1121,7
@@
int File::read_frame(VFrame *frame, int is_thread)
int advance_position = 1;
int cache_active = use_cache || asset->single_frame ? 1 : 0;
int64_t cache_position = !asset->single_frame ? current_frame : -1;
int advance_position = 1;
int cache_active = use_cache || asset->single_frame ? 1 : 0;
int64_t cache_position = !asset->single_frame ? current_frame : -1;
+
// Test cache
if( cache_active && frame_cache->get_frame(frame, cache_position,
current_layer, asset->frame_rate) ) {
// Test cache
if( cache_active && frame_cache->get_frame(frame, cache_position,
current_layer, asset->frame_rate) ) {
@@
-1137,8
+1132,9
@@
int File::read_frame(VFrame *frame, int is_thread)
// Need temp
else if( frame->get_color_model() != BC_COMPRESSED &&
(supported_colormodel != frame->get_color_model() ||
// Need temp
else if( frame->get_color_model() != BC_COMPRESSED &&
(supported_colormodel != frame->get_color_model() ||
- frame->get_w() != asset->width ||
- frame->get_h() != asset->height) ) {
+ (!file->can_scale_input() &&
+ (frame->get_w() != asset->width ||
+ frame->get_h() != asset->height))) ) {
// printf("File::read_frame %d\n", __LINE__);
// Can't advance position here because it needs to be added to cache
// printf("File::read_frame %d\n", __LINE__);
// Can't advance position here because it needs to be added to cache
@@
-1149,14
+1145,8
@@
int File::read_frame(VFrame *frame, int is_thread)
}
}
}
}
-// printf("File::read_frame %d\n", __LINE__);
if( !temp_frame ) {
if( !temp_frame ) {
- temp_frame = new VFrame(0,
- -1,
- asset->width,
- asset->height,
- supported_colormodel,
- -1);
+ temp_frame = new VFrame(asset->width, asset->height, supported_colormodel);
}
// printf("File::read_frame %d\n", __LINE__);
}
// printf("File::read_frame %d\n", __LINE__);
@@
-1190,10
+1180,7
@@
int File::read_frame(VFrame *frame, int is_thread)
return 0;
}
return 0;
}
-int File::can_copy_from(Asset *asset,
- int64_t position,
- int output_w,
- int output_h)
+int File::can_copy_from(Asset *asset, int64_t position, int output_w, int output_h)
{
if( asset && file ) {
return asset->width == output_w &&
{
if( asset && file ) {
return asset->width == output_w &&
@@
-1393,10
+1380,9
@@
int64_t File::get_memory_usage()
}
}
-int File::renders_video(
Asset *asse
t)
+int File::renders_video(
int forma
t)
{
{
-//printf("File::supports_video %d\n", format);
- switch( asset->format ) {
+ switch( format ) {
case FILE_OGG:
case FILE_JPEG:
case FILE_JPEG_LIST:
case FILE_OGG:
case FILE_JPEG:
case FILE_JPEG_LIST:
@@
-1412,16
+1398,21
@@
int File::renders_video(Asset *asset)
case FILE_TIFF_LIST:
case FILE_VMPEG:
case FILE_RAWDV:
case FILE_TIFF_LIST:
case FILE_VMPEG:
case FILE_RAWDV:
- return 1;
case FILE_FFMPEG:
case FILE_FFMPEG:
- return
FileFFMPEG::renders_video(asset->fformat)
;
+ return
1
;
}
return 0;
}
}
return 0;
}
+int File::renders_video(Asset *asset)
+{
+ return asset->format == FILE_FFMPEG ?
+ FileFFMPEG::renders_video(asset->fformat) :
+ renders_video(asset->format);
+}
-int File::renders_audio(
Asset *asse
t)
+int File::renders_audio(
int forma
t)
{
{
- switch(
asset->
format ) {
+ switch( format ) {
case FILE_AC3:
case FILE_FLAC:
case FILE_PCM:
case FILE_AC3:
case FILE_FLAC:
case FILE_PCM:
@@
-1433,12
+1424,17
@@
int File::renders_audio(Asset *asset)
case FILE_AIFF:
case FILE_SND:
case FILE_RAWDV:
case FILE_AIFF:
case FILE_SND:
case FILE_RAWDV:
- return 1;
case FILE_FFMPEG:
case FILE_FFMPEG:
- return
FileFFMPEG::renders_audio(asset->fformat)
;
+ return
1
;
}
return 0;
}
}
return 0;
}
+int File::renders_audio(Asset *asset)
+{
+ return asset->format == FILE_FFMPEG ?
+ FileFFMPEG::renders_audio(asset->fformat) :
+ renders_audio(asset->format);
+}
int File::is_image_render(int format)
{
int File::is_image_render(int format)
{