diff --git a/libobs/media-io/video-scaler-ffmpeg.c b/libobs/media-io/video-scaler-ffmpeg.c index ed0649d3f..5ee389ccd 100644 --- a/libobs/media-io/video-scaler-ffmpeg.c +++ b/libobs/media-io/video-scaler-ffmpeg.c @@ -29,14 +29,10 @@ static inline enum AVPixelFormat get_ffmpeg_video_format(enum video_format format) { switch (format) { - case VIDEO_FORMAT_NONE: - return AV_PIX_FMT_NONE; case VIDEO_FORMAT_I420: return AV_PIX_FMT_YUV420P; case VIDEO_FORMAT_NV12: return AV_PIX_FMT_NV12; - case VIDEO_FORMAT_YVYU: - return AV_PIX_FMT_NONE; case VIDEO_FORMAT_YUY2: return AV_PIX_FMT_YUYV422; case VIDEO_FORMAT_UYVY: @@ -61,6 +57,11 @@ get_ffmpeg_video_format(enum video_format format) return AV_PIX_FMT_YUVA422P; case VIDEO_FORMAT_YUVA: return AV_PIX_FMT_YUVA444P; + case VIDEO_FORMAT_NONE: + case VIDEO_FORMAT_YVYU: + case VIDEO_FORMAT_AYUV: + /* not supported by FFmpeg */ + return AV_PIX_FMT_NONE; } return AV_PIX_FMT_NONE; diff --git a/libobs/obs-source.c b/libobs/obs-source.c index 7bbc14b3e..f1875fa6b 100644 --- a/libobs/obs-source.c +++ b/libobs/obs-source.c @@ -1355,7 +1355,6 @@ enum convert_type { CONVERT_422, CONVERT_422_A, CONVERT_422_PACK, - CONVERT_422_Y, CONVERT_444, CONVERT_444_A, CONVERT_444_A_PACK, diff --git a/libobs/obs-video.c b/libobs/obs-video.c index e6e33585d..0bd84fc34 100644 --- a/libobs/obs-video.c +++ b/libobs/obs-video.c @@ -268,8 +268,8 @@ static inline gs_texture_t *render_output_texture(struct obs_core_video *video) return target; } -static void render_convert_plane(gs_effect_t *effect, gs_texture_t *texture, - gs_texture_t *target, const char *tech_name) +static void render_convert_plane(gs_effect_t *effect, gs_texture_t *target, + const char *tech_name) { gs_technique_t *tech = gs_effect_get_technique(effect, tech_name); @@ -317,8 +317,7 @@ static void render_convert_texture(struct obs_core_video *video, if (video->convert_textures[0]) { gs_effect_set_texture(image, texture); gs_effect_set_vec4(color_vec0, &vec0); - render_convert_plane(effect, texture, - video->convert_textures[0], + render_convert_plane(effect, video->convert_textures[0], video->conversion_techs[0]); if (video->convert_textures[1]) { @@ -327,8 +326,7 @@ static void render_convert_texture(struct obs_core_video *video, if (!video->convert_textures[2]) gs_effect_set_vec4(color_vec2, &vec2); gs_effect_set_float(width_i, video->conversion_width_i); - render_convert_plane(effect, texture, - video->convert_textures[1], + render_convert_plane(effect, video->convert_textures[1], video->conversion_techs[1]); if (video->convert_textures[2]) { @@ -337,8 +335,7 @@ static void render_convert_texture(struct obs_core_video *video, gs_effect_set_float(width_i, video->conversion_width_i); render_convert_plane( - effect, texture, - video->convert_textures[2], + effect, video->convert_textures[2], video->conversion_techs[2]); } } @@ -640,6 +637,23 @@ static void set_gpu_converted_data(struct obs_core_video *video, break; } + + case VIDEO_FORMAT_NONE: + case VIDEO_FORMAT_YVYU: + case VIDEO_FORMAT_YUY2: + case VIDEO_FORMAT_UYVY: + case VIDEO_FORMAT_RGBA: + case VIDEO_FORMAT_BGRA: + case VIDEO_FORMAT_BGRX: + case VIDEO_FORMAT_Y800: + case VIDEO_FORMAT_BGR3: + case VIDEO_FORMAT_I422: + case VIDEO_FORMAT_I40A: + case VIDEO_FORMAT_I42A: + case VIDEO_FORMAT_YUVA: + case VIDEO_FORMAT_AYUV: + /* unimplemented */ + ; } } } diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-formats.h b/plugins/obs-ffmpeg/obs-ffmpeg-formats.h index 81be9409d..62e3866d0 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg-formats.h +++ b/plugins/obs-ffmpeg/obs-ffmpeg-formats.h @@ -11,16 +11,12 @@ static inline enum AVPixelFormat obs_to_ffmpeg_video_format(enum video_format format) { switch (format) { - case VIDEO_FORMAT_NONE: - return AV_PIX_FMT_NONE; case VIDEO_FORMAT_I444: return AV_PIX_FMT_YUV444P; case VIDEO_FORMAT_I420: return AV_PIX_FMT_YUV420P; case VIDEO_FORMAT_NV12: return AV_PIX_FMT_NV12; - case VIDEO_FORMAT_YVYU: - return AV_PIX_FMT_NONE; case VIDEO_FORMAT_YUY2: return AV_PIX_FMT_YUYV422; case VIDEO_FORMAT_UYVY: @@ -43,6 +39,11 @@ obs_to_ffmpeg_video_format(enum video_format format) return AV_PIX_FMT_YUVA422P; case VIDEO_FORMAT_YUVA: return AV_PIX_FMT_YUVA444P; + case VIDEO_FORMAT_NONE: + case VIDEO_FORMAT_YVYU: + case VIDEO_FORMAT_AYUV: + /* not supported by FFmpeg */ + return AV_PIX_FMT_NONE; } return AV_PIX_FMT_NONE;