Lines Matching defs:idet
67 AVFILTER_DEFINE_CLASS(idet);
108 IDETContext *idet = ctx->priv;
115 for (i = 0; i < idet->csp->nb_components; i++) {
116 int w = idet->cur->width;
117 int h = idet->cur->height;
118 int refs = idet->cur->linesize[i];
121 w = FF_CEIL_RSHIFT(w, idet->csp->log2_chroma_w);
122 h = FF_CEIL_RSHIFT(h, idet->csp->log2_chroma_h);
126 uint8_t *prev = &idet->prev->data[i][y*refs];
127 uint8_t *cur = &idet->cur ->data[i][y*refs];
128 uint8_t *next = &idet->next->data[i][y*refs];
129 alpha[ y &1] += idet->filter_line(cur-refs, prev, cur+refs, w);
130 alpha[(y^1)&1] += idet->filter_line(cur-refs, next, cur+refs, w);
131 delta += idet->filter_line(cur-refs, cur, cur+refs, w);
135 if (alpha[0] > idet->interlace_threshold * alpha[1]){
137 }else if(alpha[1] > idet->interlace_threshold * alpha[0]){
139 }else if(alpha[1] > idet->progressive_threshold * delta){
145 memmove(idet->history+1, idet->history, HIST_SIZE-1);
146 idet->history[0] = type;
149 if(idet->history[i] != UNDETERMINED){
151 best_type = idet->history[i];
153 if(idet->history[i] == best_type) {
161 if(idet->last_type == UNDETERMINED){
162 if(match ) idet->last_type = best_type;
164 if(match>2) idet->last_type = best_type;
167 if (idet->last_type == TFF){
168 idet->cur->top_field_first = 1;
169 idet->cur->interlaced_frame = 1;
170 }else if(idet->last_type == BFF){
171 idet->cur->top_field_first = 0;
172 idet->cur->interlaced_frame = 1;
173 }else if(idet->last_type == PROGRSSIVE){
174 idet->cur->interlaced_frame = 0;
177 idet->prestat [ type] ++;
178 idet->poststat[idet->last_type] ++;
179 av_log(ctx, AV_LOG_DEBUG, "Single frame:%s, Multi frame:%s\n", type2str(type), type2str(idet->last_type));
185 IDETContext *idet = ctx->priv;
187 if (idet->prev)
188 av_frame_free(&idet->prev);
189 idet->prev = idet->cur;
190 idet->cur = idet->next;
191 idet->next = picref;
193 if (!idet->cur)
196 if (!idet->prev)
197 idet->prev = av_frame_clone(idet->cur);
199 if (!idet->csp)
200 idet->csp = av_pix_fmt_desc_get(link->format);
201 if (idet->csp->comp[0].depth_minus1 / 8 == 1)
202 idet->filter_line = (void*)filter_line_c_16bit;
206 return ff_filter_frame(ctx->outputs[0], av_frame_clone(idet->cur));
211 IDETContext *idet = ctx->priv;
214 idet->prestat[TFF],
215 idet->prestat[BFF],
216 idet->prestat[PROGRSSIVE],
217 idet->prestat[UNDETERMINED]
220 idet->poststat[TFF],
221 idet->poststat[BFF],
222 idet->poststat[PROGRSSIVE],
223 idet->poststat[UNDETERMINED]
226 av_frame_free(&idet->prev);
227 av_frame_free(&idet->cur );
228 av_frame_free(&idet->next);
269 IDETContext *idet = ctx->priv;
271 idet->last_type = UNDETERMINED;
272 memset(idet->history, UNDETERMINED, HIST_SIZE);
274 idet->filter_line = filter_line_c;
299 .name = "idet",