projects
/
goodguy
/
history.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
remove filefork
[goodguy/history.git]
/
cinelerra-5.0
/
cinelerra
/
fileffmpeg.C
diff --git
a/cinelerra-5.0/cinelerra/fileffmpeg.C
b/cinelerra-5.0/cinelerra/fileffmpeg.C
index b195623e05e00cc3b866273230a37e8b2f3970d4..66fda8c193cb80a8fce6f01d98cbae5e227813d2 100644
(file)
--- a/
cinelerra-5.0/cinelerra/fileffmpeg.C
+++ b/
cinelerra-5.0/cinelerra/fileffmpeg.C
@@
-290,8
+290,10
@@
int FileFFMPEG::read_samples(double *buffer, int64_t len)
if( !ff || len < 0 ) return -1;
int ch = file->current_channel;
int64_t pos = file->current_sample;
if( !ff || len < 0 ) return -1;
int ch = file->current_channel;
int64_t pos = file->current_sample;
- ff->decode(ch, pos, buffer, len);
- return 0;
+ int ret = ff->decode(ch, pos, buffer, len);
+ if( ret > 0 ) return 0;
+ memset(buffer,0,len*sizeof(*buffer));
+ return -1;
}
int FileFFMPEG::read_frame(VFrame *frame)
}
int FileFFMPEG::read_frame(VFrame *frame)
@@
-299,8
+301,11
@@
int FileFFMPEG::read_frame(VFrame *frame)
if( !ff ) return -1;
int layer = file->current_layer;
int64_t pos = file->current_frame;
if( !ff ) return -1;
int layer = file->current_layer;
int64_t pos = file->current_frame;
- ff->decode(layer, pos, frame);
- return 0;
+ int ret = ff->decode(layer, pos, frame);
+ frame->set_status(ret);
+ if( ret > 0 ) return 0;
+ frame->clear_frame();
+ return -1;
}
}