@ -571,6 +571,7 @@ int ff_mediacodec_dec_send(AVCodecContext *avctx, MediaCodecDecContext *s,
FFAMediaCodec * codec = s - > codec ;
int status ;
int64_t input_dequeue_timeout_us = INPUT_DEQUEUE_TIMEOUT_US ;
int64_t pts ;
if ( s - > flushing ) {
av_log ( avctx , AV_LOG_ERROR , " Decoder is flushing and cannot accept new buffer "
@ -605,14 +606,14 @@ int ff_mediacodec_dec_send(AVCodecContext *avctx, MediaCodecDecContext *s,
return AVERROR_EXTERNAL ;
}
pts = pkt - > pts ;
if ( pts ! = AV_NOPTS_VALUE & & avctx - > pkt_timebase . num & & avctx - > pkt_timebase . den ) {
pts = av_rescale_q ( pts , avctx - > pkt_timebase , AV_TIME_BASE_Q ) ;
}
if ( need_draining ) {
int64_t pts = pkt - > pts ;
uint32_t flags = ff_AMediaCodec_getBufferFlagEndOfStream ( codec ) ;
if ( s - > surface ) {
pts = av_rescale_q ( pts , avctx - > pkt_timebase , AV_TIME_BASE_Q ) ;
}
av_log ( avctx , AV_LOG_DEBUG , " Sending End Of Stream signal \n " ) ;
status = ff_AMediaCodec_queueInputBuffer ( codec , index , 0 , 0 , pts , flags ) ;
@ -627,16 +628,10 @@ int ff_mediacodec_dec_send(AVCodecContext *avctx, MediaCodecDecContext *s,
s - > draining = 1 ;
break ;
} else {
int64_t pts = pkt - > pts ;
size = FFMIN ( pkt - > size - offset , size ) ;
memcpy ( data , pkt - > data + offset , size ) ;
offset + = size ;
if ( avctx - > pkt_timebase . num & & avctx - > pkt_timebase . den ) {
pts = av_rescale_q ( pts , avctx - > pkt_timebase , AV_TIME_BASE_Q ) ;
}
status = ff_AMediaCodec_queueInputBuffer ( codec , index , 0 , size , pts , 0 ) ;
if ( status < 0 ) {
av_log ( avctx , AV_LOG_ERROR , " Failed to queue input buffer (status = %d) \n " , status ) ;