X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Ffileffmpeg.C;h=66fda8c193cb80a8fce6f01d98cbae5e227813d2;hb=0c9155dd01b6745f908e12c6a202c671a8f09514;hp=b195623e05e00cc3b866273230a37e8b2f3970d4;hpb=fa7f91658c01ba88aab006beff8b167a4bbb7085;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/fileffmpeg.C b/cinelerra-5.0/cinelerra/fileffmpeg.C index b195623e..66fda8c1 100644 --- 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; - 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) @@ -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; - 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; }