if (!idet->csp)
idet->csp = av_pix_fmt_desc_get(link->format);
- if (idet->csp->comp[0].depth_minus1 / 8 == 1){
+ if (idet->csp->comp[0].depth > 8){
idet->filter_line = (ff_idet_filter_func)ff_idet_filter_line_c_16bit;
if (ARCH_X86)
ff_idet_init_x86(idet, 1);
{
AVFilterContext *ctx = link->src;
IDETContext *idet = ctx->priv;
+ int ret;
- do {
- int ret;
+ if (idet->eof)
+ return AVERROR_EOF;
- if (idet->eof)
- return AVERROR_EOF;
+ ret = ff_request_frame(link->src->inputs[0]);
- ret = ff_request_frame(link->src->inputs[0]);
+ if (ret == AVERROR_EOF && idet->cur && !idet->analyze_interlaced_flag_done) {
+ AVFrame *next = av_frame_clone(idet->next);
- if (ret == AVERROR_EOF && idet->cur && !idet->analyze_interlaced_flag_done) {
- AVFrame *next = av_frame_clone(idet->next);
+ if (!next)
+ return AVERROR(ENOMEM);
- if (!next)
- return AVERROR(ENOMEM);
-
- filter_frame(link->src->inputs[0], next);
- idet->eof = 1;
- } else if (ret < 0) {
- return ret;
- }
- } while (link->frame_requested);
+ ret = filter_frame(link->src->inputs[0], next);
+ idet->eof = 1;
+ }
- return 0;
+ return ret;
}
static av_cold void uninit(AVFilterContext *ctx)
return ff_set_common_formats(ctx, fmts_list);
}
-static int config_output(AVFilterLink *outlink)
-{
- outlink->flags |= FF_LINK_FLAG_REQUEST_LOOP;
- return 0;
-}
-
static av_cold int init(AVFilterContext *ctx)
{
IDETContext *idet = ctx->priv;
{
.name = "default",
.type = AVMEDIA_TYPE_VIDEO,
- .config_props = config_output,
.request_frame = request_frame
},
{ NULL }