if (!(avctx->codec->capabilities & AV_CODEC_CAP_DELAY) && !frame) {
av_packet_unref(avpkt);
- av_init_packet(avpkt);
return 0;
}
avpkt->buf = user_pkt.buf;
avpkt->data = user_pkt.data;
} else if (!avpkt->buf) {
- AVPacket tmp = { 0 };
- ret = av_packet_ref(&tmp, avpkt);
- av_packet_unref(avpkt);
+ ret = av_packet_make_refcounted(avpkt);
if (ret < 0)
goto end;
- *avpkt = tmp;
}
}
if (ret >= 0)
avpkt->data = avpkt->buf->data;
}
-
- avctx->frame_number++;
+ if (frame)
+ avctx->frame_number++;
}
if (ret < 0 || !*got_packet_ptr) {
av_packet_unref(avpkt);
- av_init_packet(avpkt);
goto end;
}
if (!(avctx->codec->capabilities & AV_CODEC_CAP_DELAY) && !frame) {
av_packet_unref(avpkt);
- av_init_packet(avpkt);
- avpkt->size = 0;
return 0;
}
avpkt->buf = user_pkt.buf;
avpkt->data = user_pkt.data;
} else if (!avpkt->buf) {
- AVPacket tmp = { 0 };
- ret = av_packet_ref(&tmp, avpkt);
- av_packet_unref(avpkt);
+ ret = av_packet_make_refcounted(avpkt);
if (ret < 0)
return ret;
- *avpkt = tmp;
}
}
avpkt->data = avpkt->buf->data;
}
- avctx->frame_number++;
+ if (frame)
+ avctx->frame_number++;
}
if (ret < 0 || !*got_packet_ptr)