static int hap_encode(AVCodecContext *avctx, AVPacket *pkt,

                      const AVFrame *frame, int *got_packet)

{

    HapContext *ctx = avctx->priv_data;

    int header_length = hap_header_length(ctx);

    int final_data_size, ret;

    int pktsize = FFMAX(ctx->tex_size, ctx->max_snappy * ctx->chunk_count) + header_length;



    /* Allocate maximum size packet, shrink later. */

    ret = ff_alloc_packet2(avctx, pkt, pktsize, header_length);

    if (ret < 0)

        return ret;



    /* DXTC compression. */

    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);

    if (final_data_size < 0)

        return final_data_size;



    /* Write header at the start. */

    hap_write_frame_header(ctx, pkt->data, final_data_size + header_length);



    av_shrink_packet(pkt, final_data_size + header_length);

    pkt->flags |= AV_PKT_FLAG_KEY;

    *got_packet = 1;

    return 0;

}

static int hap_encode(AVCodecContext *avctx, AVPacket *pkt,

                      const AVFrame *frame, int *got_packet)

{

    HapContext *ctx = avctx->priv_data;

    int header_length = hap_header_length(ctx);

    int final_data_size, ret;

    int pktsize = FFMAX(ctx->tex_size, ctx->max_snappy * ctx->chunk_count) + header_length;



    

    ret = ff_alloc_packet2(avctx, pkt, pktsize, header_length);

    if (ret < 0)

        return ret;



    

    ret = compress_texture(avctx, ctx->tex_buf, ctx->tex_size, frame);

    if (ret < 0)

        return ret;



    

    final_data_size = hap_compress_frame(avctx, pkt->data + header_length);

    if (final_data_size < 0)

        return final_data_size;



    

    hap_write_frame_header(ctx, pkt->data, final_data_size + header_length);



    av_shrink_packet(pkt, final_data_size + header_length);

    pkt->flags |= AV_PKT_FLAG_KEY;

    *got_packet = 1;

    return 0;

}

static int FUNC_0(AVCodecContext *VAR_0, AVPacket *VAR_1,

                      const AVFrame *VAR_2, int *VAR_3)

{

    HapContext *ctx = VAR_0->priv_data;

    int VAR_4 = hap_header_length(ctx);

    int VAR_5, VAR_6;

    int VAR_7 = FFMAX(ctx->tex_size, ctx->max_snappy * ctx->chunk_count) + VAR_4;



    

    VAR_6 = ff_alloc_packet2(VAR_0, VAR_1, VAR_7, VAR_4);

    if (VAR_6 < 0)

        return VAR_6;



    

    VAR_6 = compress_texture(VAR_0, ctx->tex_buf, ctx->tex_size, VAR_2);

    if (VAR_6 < 0)

        return VAR_6;



    

    VAR_5 = hap_compress_frame(VAR_0, VAR_1->data + VAR_4);

    if (VAR_5 < 0)

        return VAR_5;



    

    hap_write_frame_header(ctx, VAR_1->data, VAR_5 + VAR_4);



    av_shrink_packet(VAR_1, VAR_5 + VAR_4);

    VAR_1->flags |= AV_PKT_FLAG_KEY;

    *VAR_3 = 1;

    return 0;

}

static int FUNC_0(AVCodecContext *VAR_0, AVPacket *VAR_1,
const AVFrame *VAR_2, int *VAR_3)
{ HapContext *ctx = VAR_0->priv_data; int VAR_4 = hap_header_length(ctx); int VAR_5, VAR_6; int VAR_7 = FFMAX(ctx->tex_size, ctx->max_snappy * ctx->chunk_count) + VAR_4; VAR_6 = ff_alloc_packet2(VAR_0, VAR_1, VAR_7, VAR_4); if (VAR_6 < 0)
return VAR_6; VAR_6 = compress_texture(VAR_0, ctx->tex_buf, ctx->tex_size, VAR_2); if (VAR_6 < 0)
return VAR_6; VAR_5 = hap_compress_frame(VAR_0, VAR_1->data + VAR_4); if (VAR_5 < 0)
return VAR_5; hap_write_frame_header(ctx, VAR_1->data, VAR_5 + VAR_4); av_shrink_packet(VAR_1, VAR_5 + VAR_4); VAR_1->flags |= AV_PKT_FLAG_KEY; *VAR_3 = 1; return 0; }