mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avfilter: inherit input color range for videotoolbox filters
The color range should be set to match the input when creating the VideoToolbox context. Otherwise, the new context will default to limited range, creates inconsistencies with full range inputs. Signed-off-by: Gnattu OC <gnattuoc@me.com> Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
This commit is contained in:
parent
cfe0a36352
commit
30f090b4f8
@ -208,6 +208,7 @@ static int scale_vt_config_output(AVFilterLink *outlink)
|
|||||||
hw_frame_ctx_out->sw_format = hw_frame_ctx_in->sw_format;
|
hw_frame_ctx_out->sw_format = hw_frame_ctx_in->sw_format;
|
||||||
hw_frame_ctx_out->width = outlink->w;
|
hw_frame_ctx_out->width = outlink->w;
|
||||||
hw_frame_ctx_out->height = outlink->h;
|
hw_frame_ctx_out->height = outlink->h;
|
||||||
|
((AVVTFramesContext *)hw_frame_ctx_out->hwctx)->color_range = ((AVVTFramesContext *)hw_frame_ctx_in->hwctx)->color_range;
|
||||||
|
|
||||||
err = ff_filter_init_hw_frames(avctx, outlink, 1);
|
err = ff_filter_init_hw_frames(avctx, outlink, 1);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
|
@ -123,6 +123,7 @@ static int transpose_vt_recreate_hw_ctx(AVFilterLink *outlink)
|
|||||||
hw_frame_ctx_out->sw_format = hw_frame_ctx_in->sw_format;
|
hw_frame_ctx_out->sw_format = hw_frame_ctx_in->sw_format;
|
||||||
hw_frame_ctx_out->width = outlink->w;
|
hw_frame_ctx_out->width = outlink->w;
|
||||||
hw_frame_ctx_out->height = outlink->h;
|
hw_frame_ctx_out->height = outlink->h;
|
||||||
|
((AVVTFramesContext *)hw_frame_ctx_out->hwctx)->color_range = ((AVVTFramesContext *)hw_frame_ctx_in->hwctx)->color_range;
|
||||||
|
|
||||||
err = ff_filter_init_hw_frames(avctx, outlink, 1);
|
err = ff_filter_init_hw_frames(avctx, outlink, 1);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "yadif.h"
|
#include "yadif.h"
|
||||||
#include "libavutil/avassert.h"
|
#include "libavutil/avassert.h"
|
||||||
#include "libavutil/hwcontext.h"
|
#include "libavutil/hwcontext.h"
|
||||||
|
#include "libavutil/hwcontext_videotoolbox.h"
|
||||||
#include "libavutil/objc.h"
|
#include "libavutil/objc.h"
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -323,7 +324,8 @@ static int config_input(AVFilterLink *inlink)
|
|||||||
static int do_config_output(AVFilterLink *link) API_AVAILABLE(macos(10.11), ios(8.0))
|
static int do_config_output(AVFilterLink *link) API_AVAILABLE(macos(10.11), ios(8.0))
|
||||||
{
|
{
|
||||||
FilterLink *l = ff_filter_link(link);
|
FilterLink *l = ff_filter_link(link);
|
||||||
AVHWFramesContext *output_frames;
|
FilterLink *il = ff_filter_link(link->src->inputs[0]);
|
||||||
|
AVHWFramesContext *output_frames, *input_frames;
|
||||||
AVFilterContext *ctx = link->src;
|
AVFilterContext *ctx = link->src;
|
||||||
YADIFVTContext *s = ctx->priv;
|
YADIFVTContext *s = ctx->priv;
|
||||||
YADIFContext *y = &s->yadif;
|
YADIFContext *y = &s->yadif;
|
||||||
@ -345,12 +347,14 @@ static int do_config_output(AVFilterLink *link) API_AVAILABLE(macos(10.11), ios(
|
|||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input_frames = (AVHWFramesContext*)il->hw_frames_ctx->data;
|
||||||
output_frames = (AVHWFramesContext*)l->hw_frames_ctx->data;
|
output_frames = (AVHWFramesContext*)l->hw_frames_ctx->data;
|
||||||
|
|
||||||
output_frames->format = AV_PIX_FMT_VIDEOTOOLBOX;
|
output_frames->format = AV_PIX_FMT_VIDEOTOOLBOX;
|
||||||
output_frames->sw_format = s->input_frames->sw_format;
|
output_frames->sw_format = s->input_frames->sw_format;
|
||||||
output_frames->width = ctx->inputs[0]->w;
|
output_frames->width = ctx->inputs[0]->w;
|
||||||
output_frames->height = ctx->inputs[0]->h;
|
output_frames->height = ctx->inputs[0]->h;
|
||||||
|
((AVVTFramesContext *)output_frames->hwctx)->color_range = ((AVVTFramesContext *)input_frames->hwctx)->color_range;
|
||||||
|
|
||||||
ret = ff_filter_init_hw_frames(ctx, link, 10);
|
ret = ff_filter_init_hw_frames(ctx, link, 10);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user