mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
encode_video2: shrink packet after encoding.
With the encode2 API, encoders allocate huge packets to be sure they have enough room (a typical case is mpeg4, which allocs ~10M for 1280x768 yuv420p) but only actually use a very small part of the buffer.
This commit is contained in:
parent
52ae41a874
commit
33b9fe562a
@ -1198,6 +1198,7 @@ int attribute_align_arg avcodec_encode_video2(AVCodecContext *avctx,
|
||||
{
|
||||
int ret;
|
||||
int user_packet = !!avpkt->data;
|
||||
void *new_data;
|
||||
|
||||
*got_packet_ptr = 0;
|
||||
|
||||
@ -1218,6 +1219,12 @@ int attribute_align_arg avcodec_encode_video2(AVCodecContext *avctx,
|
||||
avpkt->size = 0;
|
||||
else if (!(avctx->codec->capabilities & CODEC_CAP_DELAY))
|
||||
avpkt->pts = avpkt->dts = frame->pts;
|
||||
if (avpkt->data) {
|
||||
new_data = av_realloc(avpkt->data,
|
||||
avpkt->size + FF_INPUT_BUFFER_PADDING_SIZE);
|
||||
if (new_data)
|
||||
avpkt->data = new_data;
|
||||
}
|
||||
|
||||
avctx->frame_number++;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user