Opengl sws_scale не работает (ошибка сегментации) - PullRequest
0 голосов
/ 07 апреля 2020

Я работаю над видео-приложением OpenGL, где хочу рендерить видео в полноэкранном режиме. Я пытаюсь воспроизвести видео с помощью следующего кода:

GLFWmonitor* monitor = glfwGetPrimaryMonitor();
const GLFWvidmode* mode = glfwGetVideoMode(monitor);
glfwWindowHint(GLFW_RED_BITS, mode->redBits);
glfwWindowHint(GLFW_GREEN_BITS, mode->greenBits);
glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits);
glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate);

Однако при попытке масштабирования видеокадра возникает ошибка сегментации. Я использую шкалы ffmpeg и sws для преобразования цвета.

sws_scaler_ctx = sws_getContext(width, height, av_codec_ctx->pix_fmt,
                                width, height, AV_PIX_FMT_RGB0,
                                SWS_FAST_BILINEAR, NULL, NULL, NULL);

uint8_t* dest[4] = { frame_buffer, NULL, NULL, NULL };
int dest_linesize[4] = { width*4, 0, 0, 0 };
sws_scale(sws_scaler_ctx, av_frame->data, av_frame->linesize, 0, av_frame->height, dest, dest_linesize);

Кто-нибудь знает, почему это может вызвать ошибку сегментации при попытке масштабирования видеокадра?

1 Ответ

1 голос
/ 12 апреля 2020
 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);

это масштабирование windows монитора и исправление моей проблемы.

...