static void test_copy(const AVCodec *c1, const AVCodec *c2)

{

    AVCodecContext *ctx1, *ctx2;

    printf("%s -> %s\nclosed:\n", c1 ? c1->name : "NULL", c2 ? c2->name : "NULL");

    ctx1 = avcodec_alloc_context3(c1);

    ctx2 = avcodec_alloc_context3(c2);

    ctx1->width = ctx1->height = 128;

    if (ctx2->codec && ctx2->codec->priv_class && ctx2->codec->priv_data_size) {

        av_opt_set(ctx2->priv_data, "num", "667", 0);

        av_opt_set(ctx2->priv_data, "str", "i'm dest value before copy", 0);

    }

    avcodec_copy_context(ctx2, ctx1);

    test_copy_print_codec(ctx1);

    test_copy_print_codec(ctx2);

    if (ctx1->codec) {

        printf("opened:\n");

        avcodec_open2(ctx1, ctx1->codec, NULL);

        if (ctx2->codec && ctx2->codec->priv_class && ctx2->codec->priv_data_size) {

            av_opt_set(ctx2->priv_data, "num", "667", 0);

            av_opt_set(ctx2->priv_data, "str", "i'm dest value before copy", 0);

        }

        avcodec_copy_context(ctx2, ctx1);

        test_copy_print_codec(ctx1);

        test_copy_print_codec(ctx2);

        avcodec_close(ctx1);

    }

    avcodec_free_context(&ctx1);

    avcodec_free_context(&ctx2);

}

static void test_copy(const AVCodec *c1, const AVCodec *c2)

{

    AVCodecContext *ctx1, *ctx2;

    printf("%s -> %s\nclosed:\n", c1 ? c1->name : "NULL", c2 ? c2->name : "NULL");

    ctx1 = avcodec_alloc_context3(c1);

    ctx2 = avcodec_alloc_context3(c2);

    ctx1->width = ctx1->height = 128;

    if (ctx2->codec && ctx2->codec->priv_class && ctx2->codec->priv_data_size) {

        av_opt_set(ctx2->priv_data, "num", "667", 0);

        av_opt_set(ctx2->priv_data, "str", "i'm dest value before copy", 0);

    }

    avcodec_copy_context(ctx2, ctx1);

    test_copy_print_codec(ctx1);

    test_copy_print_codec(ctx2);

    if (ctx1->codec) {

        printf("opened:\n");

        avcodec_open2(ctx1, ctx1->codec, NULL);

        if (ctx2->codec && ctx2->codec->priv_class && ctx2->codec->priv_data_size) {

            av_opt_set(ctx2->priv_data, "num", "667", 0);

            av_opt_set(ctx2->priv_data, "str", "i'm dest value before copy", 0);

        }

        avcodec_copy_context(ctx2, ctx1);

        test_copy_print_codec(ctx1);

        test_copy_print_codec(ctx2);

        avcodec_close(ctx1);

    }

    avcodec_free_context(&ctx1);

    avcodec_free_context(&ctx2);

}

static void FUNC_0(const AVCodec *VAR_0, const AVCodec *VAR_1)

{

    AVCodecContext *ctx1, *ctx2;

    printf("%s -> %s\nclosed:\n", VAR_0 ? VAR_0->name : "NULL", VAR_1 ? VAR_1->name : "NULL");

    ctx1 = avcodec_alloc_context3(VAR_0);

    ctx2 = avcodec_alloc_context3(VAR_1);

    ctx1->width = ctx1->height = 128;

    if (ctx2->codec && ctx2->codec->priv_class && ctx2->codec->priv_data_size) {

        av_opt_set(ctx2->priv_data, "num", "667", 0);

        av_opt_set(ctx2->priv_data, "str", "i'm dest value before copy", 0);

    }

    avcodec_copy_context(ctx2, ctx1);

    test_copy_print_codec(ctx1);

    test_copy_print_codec(ctx2);

    if (ctx1->codec) {

        printf("opened:\n");

        avcodec_open2(ctx1, ctx1->codec, NULL);

        if (ctx2->codec && ctx2->codec->priv_class && ctx2->codec->priv_data_size) {

            av_opt_set(ctx2->priv_data, "num", "667", 0);

            av_opt_set(ctx2->priv_data, "str", "i'm dest value before copy", 0);

        }

        avcodec_copy_context(ctx2, ctx1);

        test_copy_print_codec(ctx1);

        test_copy_print_codec(ctx2);

        avcodec_close(ctx1);

    }

    avcodec_free_context(&ctx1);

    avcodec_free_context(&ctx2);

}

static void FUNC_0(const AVCodec *VAR_0, const AVCodec *VAR_1)
{ AVCodecContext *ctx1, *ctx2; printf("%s -> %s\nclosed:\n", VAR_0 ? VAR_0->name : "NULL", VAR_1 ? VAR_1->name : "NULL"); ctx1 = avcodec_alloc_context3(VAR_0); ctx2 = avcodec_alloc_context3(VAR_1); ctx1->width = ctx1->height = 128; if (ctx2->codec && ctx2->codec->priv_class && ctx2->codec->priv_data_size) { av_opt_set(ctx2->priv_data, "num", "667", 0); av_opt_set(ctx2->priv_data, "str", "i'm dest value before copy", 0); } avcodec_copy_context(ctx2, ctx1); test_copy_print_codec(ctx1); test_copy_print_codec(ctx2); if (ctx1->codec) { printf("opened:\n"); avcodec_open2(ctx1, ctx1->codec, NULL); if (ctx2->codec && ctx2->codec->priv_class && ctx2->codec->priv_data_size) { av_opt_set(ctx2->priv_data, "num", "667", 0); av_opt_set(ctx2->priv_data, "str", "i'm dest value before copy", 0); } avcodec_copy_context(ctx2, ctx1); test_copy_print_codec(ctx1); test_copy_print_codec(ctx2); avcodec_close(ctx1); } avcodec_free_context(&ctx1); avcodec_free_context(&ctx2); }