]> git.sesse.net Git - mlt/commitdiff
Fix returning last bit of audio samples from avformat.
authorDan Dennedy <dan@dennedy.org>
Fri, 10 Sep 2010 06:57:09 +0000 (23:57 -0700)
committerDan Dennedy <dan@dennedy.org>
Fri, 10 Sep 2010 06:57:09 +0000 (23:57 -0700)
Bug reported by Kevin MacPhail.

src/modules/avformat/producer_avformat.c

index d24af96010299ff6859b3682d0faecce97a49679..0f3132092187a84d3dcb67b049de00bf79a700b9 100644 (file)
@@ -1810,9 +1810,10 @@ static int producer_get_audio( mlt_frame frame, void **buffer, mlt_audio_format
                        index = this->audio_index;
 
                        // Now handle the audio if we have enough
-                       if ( this->audio_used[ index ] >= *samples )
+                       if ( this->audio_used[ index ] > 0 )
                        {
                                int16_t *src = this->audio_buffer[ index ];
+                               *samples = this->audio_used[ index ] < *samples ? this->audio_used[ index ] : *samples;
                                memcpy( *buffer, src, *samples * *channels * sizeof(int16_t) );
                                this->audio_used[ index ] -= *samples;
                                memmove( src, &src[ *samples * *channels ], this->audio_used[ index ] * *channels * sizeof(int16_t) );