так что, по сути, я рендеринг видео с помощью FFmpeg lib в c ++. какие методы оптимизации можно использовать для рендеринга быстрого кадра, чтобы я мог улучшить рендеринг видео?
// 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]);
эта функция отображает видеокадр, который для меня менее эффективен при отображении видеокадра. как я могу избежать sws_scale и сопоставить видеокадры в OpenGL?