如何使用libav旋转yuv / rgb图像

时间:2014-11-19 10:59:23

标签: ffmpeg yuv libav

我想使用libav h.264解码器旋转我刚解码的图像。

我看到ffmpeg有此选项-vf transpose来执行此操作。但我想以编程方式进行。我看到vf_transpose.c中有一个libavfilter看起来像是同样的事情。

我想知道如何在我的代码中练习它?

编辑:

以下是我用来解码的示例代码::

AVCodec *decHd;
AVCodecContext *ctxDecode = NULL;
AVFrame *pictureDecoded;
AVPacket avPkt;

/* --------
    setup
   -------- */

    avcodec_init();

    /* register all the codecs */
    avcodec_register_all();
    decHd = avcodec_find_decoder(CODEC_ID_H264);

    ctxDecode= avcodec_alloc_context();

    avcodec_get_context_defaults(ctxDecode);
    ctxDecode->flags2 |= CODEC_FLAG2_FAST;
    ctxDecode->pix_fmt = PIX_FMT_YUV420P;
    ctxDecode->width = CAP_WIDTH;
    ctxDecode->height = CAP_HEIGHT;

    if (avcodec_open(ctxDecode, decHd) < 0) 
    {
        printf("avcodec: could not open h.264 decoder\n");
        exit(1);
    }

    pictureDecoded= avcodec_alloc_frame();
    avcodec_get_frame_defaults(pictureDecoded);

/* --------
   decode
   -------- */

    avPkt.size = encOutLen;
    avPkt.data = nals[0].p_payload;
    len = avcodec_decode_video2(ctxDecode, pictureDecoded, &got_picture, &avPkt);

    len = avpicture_layout((AVPicture *)pictureDecoded, ctxDecode->pix_fmt
            , CAP_WIDTH, CAP_HEIGHT, decoderOut, PIC_SIZE);

0 个答案:

没有答案