Browse Source

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.
tags/n0.11
Nicolas George 14 years ago
parent
commit
33b9fe562a
1 changed files with 7 additions and 0 deletions
  1. +7
    -0
      libavcodec/utils.c

+ 7
- 0
libavcodec/utils.c View File

@@ -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…
Cancel
Save