mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
fftools/ffplay: constrain supported YUV color spaces
SDL supports only these three matrices. Actually, it only supports these three combinations: BT.601+JPEG, BT.601+MPEG, BT.709+MPEG, but we have no way to restrict the specific *combination* of YUV range and YUV colorspace with the current filter design. See-Also: https://trac.ffmpeg.org/ticket/10839 Instead of an incorrect conversion result, trying to play a YCgCo file with ffplay will simply error out with a "No conversion possible" error.
This commit is contained in:
parent
75f4cb81de
commit
c619d20906
@ -940,6 +940,13 @@ static int upload_texture(SDL_Texture **tex, AVFrame *frame)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static enum AVColorSpace sdl_supported_color_spaces[] = {
|
||||
AVCOL_SPC_BT709,
|
||||
AVCOL_SPC_BT470BG,
|
||||
AVCOL_SPC_SMPTE170M,
|
||||
AVCOL_SPC_UNSPECIFIED,
|
||||
};
|
||||
|
||||
static void set_sdl_yuv_conversion_mode(AVFrame *frame)
|
||||
{
|
||||
#if SDL_VERSION_ATLEAST(2,0,8)
|
||||
@ -1921,6 +1928,8 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c
|
||||
|
||||
if ((ret = av_opt_set_int_list(filt_out, "pix_fmts", pix_fmts, AV_PIX_FMT_NONE, AV_OPT_SEARCH_CHILDREN)) < 0)
|
||||
goto fail;
|
||||
if ((ret = av_opt_set_int_list(filt_out, "color_spaces", sdl_supported_color_spaces, AVCOL_SPC_UNSPECIFIED, AV_OPT_SEARCH_CHILDREN)) < 0)
|
||||
goto fail;
|
||||
|
||||
last_filter = filt_out;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user