X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavdevice%2Fopengl_enc.c;h=b07f9c2e431257c9e437293abba9120ff2222798;hb=26ae9c9f8aebbf4b925649f971f90c0dee047aa9;hp=fd0bb177d9e71c34ffee81156ece7abc6c614cc9;hpb=2be7c388db67a0ba7fe480e95a3455b1adc992ce;p=ffmpeg diff --git a/libavdevice/opengl_enc.c b/libavdevice/opengl_enc.c index fd0bb177d9e..b07f9c2e431 100644 --- a/libavdevice/opengl_enc.c +++ b/libavdevice/opengl_enc.c @@ -568,8 +568,9 @@ static void opengl_make_ortho(float matrix[16], float left, float right, matrix[15] = 1.0f; } -static av_cold int opengl_read_limits(OpenGLContext *opengl) +static av_cold int opengl_read_limits(AVFormatContext *h) { + OpenGLContext *opengl = h->priv_data; static const struct{ const char *extension; int major; @@ -587,17 +588,21 @@ static av_cold int opengl_read_limits(OpenGLContext *opengl) version = glGetString(GL_VERSION); extensions = glGetString(GL_EXTENSIONS); + if (!version || !extensions) { + av_log(h, AV_LOG_ERROR, "No OpenGL context initialized for the current thread\n"); + return AVERROR(ENOSYS); + } - av_log(opengl, AV_LOG_DEBUG, "OpenGL version: %s\n", version); + av_log(h, AV_LOG_DEBUG, "OpenGL version: %s\n", version); sscanf(version, "%d.%d", &major, &minor); for (i = 0; required_extensions[i].extension; i++) { if (major < required_extensions[i].major && (major == required_extensions[i].major && minor < required_extensions[i].minor) && !strstr(extensions, required_extensions[i].extension)) { - av_log(opengl, AV_LOG_ERROR, "Required extension %s is not supported.\n", + av_log(h, AV_LOG_ERROR, "Required extension %s is not supported.\n", required_extensions[i].extension); - av_log(opengl, AV_LOG_DEBUG, "Supported extensions are: %s\n", extensions); + av_log(h, AV_LOG_DEBUG, "Supported extensions are: %s\n", extensions); return AVERROR(ENOSYS); } } @@ -610,10 +615,10 @@ static av_cold int opengl_read_limits(OpenGLContext *opengl) opengl->unpack_subimage = 1; #endif - av_log(opengl, AV_LOG_DEBUG, "Non Power of 2 textures support: %s\n", opengl->non_pow_2_textures ? "Yes" : "No"); - av_log(opengl, AV_LOG_DEBUG, "Unpack Subimage extension support: %s\n", opengl->unpack_subimage ? "Yes" : "No"); - av_log(opengl, AV_LOG_DEBUG, "Max texture size: %dx%d\n", opengl->max_texture_size, opengl->max_texture_size); - av_log(opengl, AV_LOG_DEBUG, "Max viewport size: %dx%d\n", + av_log(h, AV_LOG_DEBUG, "Non Power of 2 textures support: %s\n", opengl->non_pow_2_textures ? "Yes" : "No"); + av_log(h, AV_LOG_DEBUG, "Unpack Subimage extension support: %s\n", opengl->unpack_subimage ? "Yes" : "No"); + av_log(h, AV_LOG_DEBUG, "Max texture size: %dx%d\n", opengl->max_texture_size, opengl->max_texture_size); + av_log(h, AV_LOG_DEBUG, "Max viewport size: %dx%d\n", opengl->max_viewport_width, opengl->max_viewport_height); OPENGL_ERROR_CHECK(opengl); @@ -1074,7 +1079,7 @@ static av_cold int opengl_write_header(AVFormatContext *h) if ((ret = opengl_create_window(h))) goto fail; - if ((ret = opengl_read_limits(opengl)) < 0) + if ((ret = opengl_read_limits(h)) < 0) goto fail; if (opengl->width > opengl->max_texture_size || opengl->height > opengl->max_texture_size) {