【发布时间】:2020-05-06 13:57:31
【问题描述】:
所以,基本上,我在 c++ 中使用 FFmpeg lib 渲染视频。可以使用哪些优化技术来渲染快速帧,以便在视频渲染中获得更好的 o/p?
// app data structure
typedef struct {
AVFormatContext *fmt_ctx;
int stream_idx;
AVRational time_base;
AVStream *video_stream;
AVCodecContext *codec_ctx;
AVCodecContext *pCodecCtxOrig;
AVCodec *decoder;
AVPacket *packet;
AVFrame *av_frame;
AVFrame *gl_frame;
AVStream *pStream;
struct SwsContext *conv_ctx;
} AppData;
if (!data->conv_ctx) {
data->conv_ctx = sws_getContext(data->codec_ctx->width,
data->codec_ctx->height, data->codec_ctx->pix_fmt,
data->codec_ctx->width, data->codec_ctx->height,
AV_PIX_FMT_RGB0,
SWS_FAST_BILINEAR, NULL, NULL, NULL);
}
if (!data->conv_ctx) {
printf("Couldn't initialize sw scaler\n");
return false;
}
sws_scale(data->conv_ctx, data->av_frame->data, data->av_frame->linesize, 0,
data->codec_ctx->height, data->gl_frame->data, data->gl_frame->linesize);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, data->codec_ctx->width,
data->codec_ctx->height, GL_RGBA, GL_UNSIGNED_BYTE,
data->gl_frame->data[0]);
这个函数是映射视频帧,这对我来说映射视频帧的效率很低。 如何在 OpenGL 中避免 sws_scale 和映射视频帧?
【问题讨论】:
标签: c++ opencv opengl video-processing