我想使用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);