mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
avfilter/vf_interlace : move func init in ff_interlace_init and add depth arg for ff_interlace_init_x86
This commit is contained in:
parent
c76cf303ce
commit
d31770d9a6
@ -62,6 +62,7 @@ typedef struct InterlaceContext {
|
||||
ptrdiff_t mref, ptrdiff_t pref, int clip_max);
|
||||
} InterlaceContext;
|
||||
|
||||
void ff_interlace_init_x86(InterlaceContext *interlace);
|
||||
void ff_interlace_init(InterlaceContext *interlace, int depth);
|
||||
void ff_interlace_init_x86(InterlaceContext *interlace, int depth);
|
||||
|
||||
#endif /* AVFILTER_INTERLACE_H */
|
||||
|
@ -185,6 +185,25 @@ static av_cold void uninit(AVFilterContext *ctx)
|
||||
av_frame_free(&s->next);
|
||||
}
|
||||
|
||||
void ff_interlace_init(InterlaceContext *s, int depth)
|
||||
{
|
||||
if (s->lowpass) {
|
||||
if (s->lowpass == VLPF_LIN) {
|
||||
if (depth > 8)
|
||||
s->lowpass_line = lowpass_line_c_16;
|
||||
else
|
||||
s->lowpass_line = lowpass_line_c;
|
||||
} else if (s->lowpass == VLPF_CMP) {
|
||||
if (depth > 8)
|
||||
s->lowpass_line = lowpass_line_complex_c_16;
|
||||
else
|
||||
s->lowpass_line = lowpass_line_complex_c;
|
||||
}
|
||||
if (ARCH_X86)
|
||||
ff_interlace_init_x86(s, depth);
|
||||
}
|
||||
}
|
||||
|
||||
static int config_out_props(AVFilterLink *outlink)
|
||||
{
|
||||
AVFilterContext *ctx = outlink->src;
|
||||
@ -210,21 +229,7 @@ static int config_out_props(AVFilterLink *outlink)
|
||||
outlink->frame_rate.den *= 2;
|
||||
|
||||
s->csp = av_pix_fmt_desc_get(outlink->format);
|
||||
if (s->lowpass) {
|
||||
if (s->lowpass == VLPF_LIN) {
|
||||
if (s->csp->comp[0].depth > 8)
|
||||
s->lowpass_line = lowpass_line_c_16;
|
||||
else
|
||||
s->lowpass_line = lowpass_line_c;
|
||||
} else if (s->lowpass == VLPF_CMP) {
|
||||
if (s->csp->comp[0].depth > 8)
|
||||
s->lowpass_line = lowpass_line_complex_c_16;
|
||||
else
|
||||
s->lowpass_line = lowpass_line_complex_c;
|
||||
}
|
||||
if (ARCH_X86)
|
||||
ff_interlace_init_x86(s);
|
||||
}
|
||||
ff_interlace_init(s, s->csp->comp[0].depth);
|
||||
|
||||
av_log(ctx, AV_LOG_VERBOSE, "%s interlacing %s lowpass filter\n",
|
||||
s->scan == MODE_TFF ? "tff" : "bff", (s->lowpass) ? "with" : "without");
|
||||
|
@ -48,11 +48,11 @@ void ff_lowpass_line_complex_12_sse2(uint8_t *dstp, ptrdiff_t linesize,
|
||||
const uint8_t *srcp, ptrdiff_t mref,
|
||||
ptrdiff_t pref, int clip_max);
|
||||
|
||||
av_cold void ff_interlace_init_x86(InterlaceContext *s)
|
||||
av_cold void ff_interlace_init_x86(InterlaceContext *s, int depth)
|
||||
{
|
||||
int cpu_flags = av_get_cpu_flags();
|
||||
|
||||
if (s->csp->comp[0].depth > 8) {
|
||||
if (depth > 8) {
|
||||
if (EXTERNAL_SSE2(cpu_flags)) {
|
||||
if (s->lowpass == VLPF_LIN)
|
||||
s->lowpass_line = ff_lowpass_line_16_sse2;
|
||||
|
Loading…
Reference in New Issue
Block a user