X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Ffileffmpeg.C;h=b5b459ef4faaca750407bdc743cbd755a0554a6e;hb=63c49c5fdda77aadc2d0addc26a6884aadec8542;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..b5b459ef 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; }