AVStream *st = s->streams[i];
AudioInterleaveContext *aic = st->priv_data;
- if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO)
+ if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO)
av_fifo_free(aic->fifo);
}
}
AVStream *st = s->streams[i];
AudioInterleaveContext *aic = st->priv_data;
- if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
- aic->sample_size = (st->codec->channels *
- av_get_bits_per_sample(st->codec->codec_id)) / 8;
+ if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
+ aic->sample_size = (st->codecpar->channels *
+ av_get_bits_per_sample(st->codecpar->codec_id)) / 8;
if (!aic->sample_size) {
av_log(s, AV_LOG_ERROR, "could not compute sample size\n");
return -1;
{
AVStream *st = s->streams[stream_index];
AudioInterleaveContext *aic = st->priv_data;
-
+ int ret;
int size = FFMIN(av_fifo_size(aic->fifo), *aic->samples * aic->sample_size);
if (!size || (!flush && size == av_fifo_size(aic->fifo)))
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);
pkt->dts = pkt->pts = aic->dts;
int (*get_packet)(AVFormatContext *, AVPacket *, AVPacket *, int),
int (*compare_ts)(AVFormatContext *, AVPacket *, AVPacket *))
{
- int i;
+ int i, ret;
if (pkt) {
AVStream *st = s->streams[pkt->stream_index];
AudioInterleaveContext *aic = st->priv_data;
- if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
+ if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
unsigned new_size = av_fifo_size(aic->fifo) + pkt->size;
if (new_size > aic->fifo_size) {
if (av_fifo_realloc2(aic->fifo, new_size) < 0)
// rewrite pts and dts to be decoded time line position
pkt->pts = pkt->dts = aic->dts;
aic->dts += pkt->duration;
- ff_interleave_add_packet(s, pkt, compare_ts);
+ if ((ret = ff_interleave_add_packet(s, pkt, compare_ts)) < 0)
+ return ret;
}
pkt = NULL;
}
for (i = 0; i < s->nb_streams; i++) {
AVStream *st = s->streams[i];
- if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
- AVPacket new_pkt;
+ if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
+ AVPacket new_pkt = { 0 };
while (interleave_new_audio_packet(s, &new_pkt, i, flush))
- ff_interleave_add_packet(s, &new_pkt, compare_ts);
+ if ((ret = ff_interleave_add_packet(s, &new_pkt, compare_ts)) < 0)
+ return ret;
}
}