@@ -353,7 +353,7 @@ OBJS-$(CONFIG_PHOTOSENSITIVITY_FILTER) += vf_photosensitivity.o | |||||
OBJS-$(CONFIG_PIXDESCTEST_FILTER) += vf_pixdesctest.o | OBJS-$(CONFIG_PIXDESCTEST_FILTER) += vf_pixdesctest.o | ||||
OBJS-$(CONFIG_PIXSCOPE_FILTER) += vf_datascope.o | OBJS-$(CONFIG_PIXSCOPE_FILTER) += vf_datascope.o | ||||
OBJS-$(CONFIG_PP_FILTER) += vf_pp.o qp_table.o | OBJS-$(CONFIG_PP_FILTER) += vf_pp.o qp_table.o | ||||
OBJS-$(CONFIG_PP7_FILTER) += vf_pp7.o | |||||
OBJS-$(CONFIG_PP7_FILTER) += vf_pp7.o qp_table.o | |||||
OBJS-$(CONFIG_PREMULTIPLY_FILTER) += vf_premultiply.o framesync.o | OBJS-$(CONFIG_PREMULTIPLY_FILTER) += vf_premultiply.o framesync.o | ||||
OBJS-$(CONFIG_PREWITT_FILTER) += vf_convolution.o | OBJS-$(CONFIG_PREWITT_FILTER) += vf_convolution.o | ||||
OBJS-$(CONFIG_PREWITT_OPENCL_FILTER) += vf_convolution_opencl.o opencl.o \ | OBJS-$(CONFIG_PREWITT_OPENCL_FILTER) += vf_convolution_opencl.o opencl.o \ | ||||
@@ -33,6 +33,7 @@ | |||||
#include "libavutil/opt.h" | #include "libavutil/opt.h" | ||||
#include "libavutil/pixdesc.h" | #include "libavutil/pixdesc.h" | ||||
#include "internal.h" | #include "internal.h" | ||||
#include "qp_table.h" | |||||
#include "vf_pp7.h" | #include "vf_pp7.h" | ||||
enum mode { | enum mode { | ||||
@@ -323,10 +324,15 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) | |||||
AVFrame *out = in; | AVFrame *out = in; | ||||
int qp_stride = 0; | int qp_stride = 0; | ||||
uint8_t *qp_table = NULL; | |||||
int8_t *qp_table = NULL; | |||||
if (!pp7->qp) | |||||
qp_table = av_frame_get_qp_table(in, &qp_stride, &pp7->qscale_type); | |||||
if (!pp7->qp) { | |||||
int ret = ff_qp_table_extract(in, &qp_table, &qp_stride, NULL, &pp7->qscale_type); | |||||
if (ret < 0) { | |||||
av_frame_free(&in); | |||||
return ret; | |||||
} | |||||
} | |||||
if (!ctx->is_disabled) { | if (!ctx->is_disabled) { | ||||
const int cw = AV_CEIL_RSHIFT(inlink->w, pp7->hsub); | const int cw = AV_CEIL_RSHIFT(inlink->w, pp7->hsub); | ||||
@@ -341,6 +347,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) | |||||
out = ff_get_video_buffer(outlink, aligned_w, aligned_h); | out = ff_get_video_buffer(outlink, aligned_w, aligned_h); | ||||
if (!out) { | if (!out) { | ||||
av_frame_free(&in); | av_frame_free(&in); | ||||
av_freep(&qp_table); | |||||
return AVERROR(ENOMEM); | return AVERROR(ENOMEM); | ||||
} | } | ||||
av_frame_copy_props(out, in); | av_frame_copy_props(out, in); | ||||
@@ -367,6 +374,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) | |||||
inlink->w, inlink->h); | inlink->w, inlink->h); | ||||
av_frame_free(&in); | av_frame_free(&in); | ||||
} | } | ||||
av_freep(&qp_table); | |||||
return ff_filter_frame(outlink, out); | return ff_filter_frame(outlink, out); | ||||
} | } | ||||
@@ -573,9 +573,9 @@ fate-filter-pp4: CMD = video_filter "pp=be/ci" | |||||
fate-filter-pp5: CMD = video_filter "pp=md" | fate-filter-pp5: CMD = video_filter "pp=md" | ||||
fate-filter-pp6: CMD = video_filter "pp=be/fd" | fate-filter-pp6: CMD = video_filter "pp=be/fd" | ||||
#FATE_FILTER_VSYNTH-$(CONFIG_PP7_FILTER) += fate-filter-pp7 | |||||
FATE_FILTER_VSYNTH-$(CONFIG_PP7_FILTER) += fate-filter-pp7 | |||||
fate-filter-pp7: fate-vsynth1-mpeg4-qprd | fate-filter-pp7: fate-vsynth1-mpeg4-qprd | ||||
fate-filter-pp7: CMD = framecrc -flags bitexact -idct simple -i $(TARGET_PATH)/tests/data/fate/vsynth1-mpeg4-qprd.avi -frames:v 5 -flags +bitexact -vf "pp7" | |||||
fate-filter-pp7: CMD = framecrc -flags bitexact -export_side_data venc_params -idct simple -i $(TARGET_PATH)/tests/data/fate/vsynth1-mpeg4-qprd.avi -frames:v 5 -flags +bitexact -vf "pp7" | |||||
FATE_FILTER_VSYNTH-$(CONFIG_SPP_FILTER) += fate-filter-spp | FATE_FILTER_VSYNTH-$(CONFIG_SPP_FILTER) += fate-filter-spp | ||||
fate-filter-spp: fate-vsynth1-mpeg4-qprd | fate-filter-spp: fate-vsynth1-mpeg4-qprd | ||||