|
|
@ -75,12 +75,14 @@ static int interleave_new_audio_packet(AVFormatContext *s, AVPacket *pkt, |
|
|
|
{ |
|
|
|
{ |
|
|
|
AVStream *st = s->streams[stream_index]; |
|
|
|
AVStream *st = s->streams[stream_index]; |
|
|
|
AudioInterleaveContext *aic = st->priv_data; |
|
|
|
AudioInterleaveContext *aic = st->priv_data; |
|
|
|
|
|
|
|
int ret; |
|
|
|
int size = FFMIN(av_fifo_size(aic->fifo), *aic->samples * aic->sample_size); |
|
|
|
int size = FFMIN(av_fifo_size(aic->fifo), *aic->samples * aic->sample_size); |
|
|
|
if (!size || (!flush && size == av_fifo_size(aic->fifo))) |
|
|
|
if (!size || (!flush && size == av_fifo_size(aic->fifo))) |
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
|
|
|
|
|
|
|
|
av_new_packet(pkt, size); |
|
|
|
ret = av_new_packet(pkt, size); |
|
|
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
|
|
return ret; |
|
|
|
av_fifo_generic_read(aic->fifo, pkt->data, size, NULL); |
|
|
|
av_fifo_generic_read(aic->fifo, pkt->data, size, NULL); |
|
|
|
|
|
|
|
|
|
|
|
pkt->dts = pkt->pts = aic->dts; |
|
|
|
pkt->dts = pkt->pts = aic->dts; |
|
|
|