Message ID | 20161108133054.90950-1-bangnoise@gmail.com |
---|---|
State | Accepted |
Commit | 0a245875887430fbdfa9cbd19eb4d337dae93d2e |
Headers | show |
On Tue, Nov 08, 2016 at 01:30:53PM +0000, Tom Butterworth wrote: > This allows a subsequent change to compress directly into the output packet when possible. > --- > libavcodec/hapenc.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) LGTM thx [...]
thanks, pushed On Tue, 8 Nov 2016 at 14:14 Michael Niedermayer <michael@niedermayer.cc> wrote: > On Tue, Nov 08, 2016 at 01:30:53PM +0000, Tom Butterworth wrote: > > This allows a subsequent change to compress directly into the output > packet when possible. > > --- > > libavcodec/hapenc.c | 12 +++++++++--- > > 1 file changed, 9 insertions(+), 3 deletions(-) > > LGTM > > thx > > [...] > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > The misfortune of the wise is better than the prosperity of the fool. > -- Epicurus > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >
diff --git a/libavcodec/hapenc.c b/libavcodec/hapenc.c index 076923b..79b6074 100644 --- a/libavcodec/hapenc.c +++ b/libavcodec/hapenc.c @@ -52,12 +52,14 @@ enum HapHeaderLength { HAP_HDR_LONG = 8, }; -static void compress_texture(AVCodecContext *avctx, const AVFrame *f) +static int compress_texture(AVCodecContext *avctx, uint8_t *out, int out_length, const AVFrame *f) { HapContext *ctx = avctx->priv_data; - uint8_t *out = ctx->tex_buf; int i, j; + if (ctx->tex_size > out_length) + return AVERROR_BUFFER_TOO_SMALL; + for (j = 0; j < avctx->height; j += 4) { for (i = 0; i < avctx->width; i += 4) { uint8_t *p = f->data[0] + i * 4 + j * f->linesize[0]; @@ -65,6 +67,8 @@ static void compress_texture(AVCodecContext *avctx, const AVFrame *f) out += step; } } + + return 0; } /* section_length does not include the header */ @@ -201,7 +205,9 @@ static int hap_encode(AVCodecContext *avctx, AVPacket *pkt, return ret; /* DXTC compression. */ - compress_texture(avctx, frame); + ret = compress_texture(avctx, ctx->tex_buf, ctx->tex_size, frame); + if (ret < 0) + return ret; /* Compress (using Snappy) the frame */ final_data_size = hap_compress_frame(avctx, pkt->data + header_length);