Commit 5a43b773 authored by Ilkka Ollakka's avatar Ilkka Ollakka

avcodec: check/update buffered_time earlier, so we shouldn't use 0 as time when encoding

Ref #9022
parent af762f81
...@@ -1157,12 +1157,17 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf ) ...@@ -1157,12 +1157,17 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
AVPacket packet = {0}; AVPacket packet = {0};
avcodec_get_frame_defaults( p_sys->frame ); avcodec_get_frame_defaults( p_sys->frame );
p_sys->frame->format = p_sys->p_context->sample_fmt; 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; 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 ) ) if( likely( p_aout_buf ) )
{ {
p_aout_buf->i_nb_samples -= leftover_samples; p_aout_buf->i_nb_samples -= leftover_samples;
memcpy( p_sys->p_buffer+buffer_delay, p_aout_buf->p_buffer, leftover ); 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 ) ...@@ -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_buffer -= leftover;
p_aout_buf->i_pts = date_Get( &p_sys->buffer_date ); p_aout_buf->i_pts = date_Get( &p_sys->buffer_date );
} }
if(unlikely( ( (leftover + buffer_delay) < p_sys->i_buffer_out ) && if(unlikely( ( (leftover + buffer_delay) < p_sys->i_buffer_out ) &&
!(p_sys->p_codec->capabilities & CODEC_CAP_SMALL_LAST_FRAME )) !(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 ) ...@@ -1262,10 +1268,6 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
const int align = 1; const int align = 1;
#endif #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 ); avcodec_get_frame_defaults( p_sys->frame );
if( p_sys->b_variable ) if( p_sys->b_variable )
p_sys->frame->nb_samples = p_aout_buf->i_nb_samples; p_sys->frame->nb_samples = p_aout_buf->i_nb_samples;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment