[vlc-commits] avcodec: check/update buffered_time earlier, so we shouldn' t use 0 as time when encoding
Ilkka Ollakka
git at videolan.org
Sun Sep 29 13:30:31 CEST 2013
vlc | branch: master | Ilkka Ollakka <ileoo at videolan.org> | Sun Sep 29 14:26:59 2013 +0300| [5a43b77365cb65ea8a28e3db2d0b9f3cdcee7191] | committer: Ilkka Ollakka
avcodec: check/update buffered_time earlier, so we shouldn't use 0 as time when encoding
Ref #9022
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5a43b77365cb65ea8a28e3db2d0b9f3cdcee7191
---
modules/codec/avcodec/encoder.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
index 01534b1..79d20eb 100644
--- a/modules/codec/avcodec/encoder.c
+++ b/modules/codec/avcodec/encoder.c
@@ -1157,12 +1157,17 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
AVPacket packet = {0};
avcodec_get_frame_defaults( p_sys->frame );
p_sys->frame->format = p_sys->p_context->sample_fmt;
- p_sys->frame->pts = date_Get( &p_sys->buffer_date );
p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay;
- date_Increment( &p_sys->buffer_date, p_sys->i_frame_size );
+ if( unlikely( p_aout_buf && ( p_aout_buf->i_pts > VLC_TS_INVALID ) &&
+ (p_aout_buf->i_pts != date_Get( &p_sys->buffer_date ) ) ) )
+ date_Set( &p_sys->buffer_date, p_aout_buf->i_pts );
+
+ p_sys->frame->pts = date_Get( &p_sys->buffer_date );
+ date_Increment( &p_sys->buffer_date, p_sys->i_frame_size );
if( likely( p_aout_buf ) )
{
+
p_aout_buf->i_nb_samples -= leftover_samples;
memcpy( p_sys->p_buffer+buffer_delay, p_aout_buf->p_buffer, leftover );
@@ -1177,6 +1182,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
p_aout_buf->i_buffer -= leftover;
p_aout_buf->i_pts = date_Get( &p_sys->buffer_date );
}
+
if(unlikely( ( (leftover + buffer_delay) < p_sys->i_buffer_out ) &&
!(p_sys->p_codec->capabilities & CODEC_CAP_SMALL_LAST_FRAME ))
)
@@ -1262,10 +1268,6 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
const int align = 1;
#endif
- if( unlikely( p_aout_buf->i_pts > VLC_TS_INVALID &&
- p_aout_buf->i_pts != date_Get( &p_sys->buffer_date ) ) )
- date_Set( &p_sys->buffer_date, p_aout_buf->i_pts );
-
avcodec_get_frame_defaults( p_sys->frame );
if( p_sys->b_variable )
p_sys->frame->nb_samples = p_aout_buf->i_nb_samples;
More information about the vlc-commits
mailing list