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

                     const AVFrame *frame, int *got_packet)

{

    AVFrame *wrapped = av_frame_clone(frame);



    if (!wrapped)

        return AVERROR(ENOMEM);



    pkt->buf = av_buffer_create((uint8_t *)wrapped, sizeof(*wrapped),

                                wrapped_avframe_release_buffer, NULL,

                                AV_BUFFER_FLAG_READONLY);

    if (!pkt->buf) {

        av_frame_free(&wrapped);

        return AVERROR(ENOMEM);

    }



    pkt->data = (uint8_t *)wrapped;

    pkt->size = sizeof(*wrapped);



    pkt->flags |= AV_PKT_FLAG_KEY;

    *got_packet = 1;

    return 0;

}

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

                     const AVFrame *frame, int *got_packet)

{

    AVFrame *wrapped = av_frame_clone(frame);



    if (!wrapped)

        return AVERROR(ENOMEM);



    pkt->buf = av_buffer_create((uint8_t *)wrapped, sizeof(*wrapped),

                                wrapped_avframe_release_buffer, NULL,

                                AV_BUFFER_FLAG_READONLY);

    if (!pkt->buf) {

        av_frame_free(&wrapped);

        return AVERROR(ENOMEM);

    }



    pkt->data = (uint8_t *)wrapped;

    pkt->size = sizeof(*wrapped);



    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)

{

    AVFrame *wrapped = av_frame_clone(VAR_2);



    if (!wrapped)

        return AVERROR(ENOMEM);



    VAR_1->buf = av_buffer_create((uint8_t *)wrapped, sizeof(*wrapped),

                                wrapped_avframe_release_buffer, NULL,

                                AV_BUFFER_FLAG_READONLY);

    if (!VAR_1->buf) {

        av_frame_free(&wrapped);

        return AVERROR(ENOMEM);

    }



    VAR_1->data = (uint8_t *)wrapped;

    VAR_1->size = sizeof(*wrapped);



    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)
{ AVFrame *wrapped = av_frame_clone(VAR_2); if (!wrapped)
return AVERROR(ENOMEM); VAR_1->buf = av_buffer_create((uint8_t *)wrapped, sizeof(*wrapped),
wrapped_avframe_release_buffer, NULL,
AV_BUFFER_FLAG_READONLY); if (!VAR_1->buf) { av_frame_free(&wrapped); return AVERROR(ENOMEM); } VAR_1->data = (uint8_t *)wrapped; VAR_1->size = sizeof(*wrapped); VAR_1->flags |= AV_PKT_FLAG_KEY; *VAR_3 = 1; return 0; }