void __fastcall TFixedFilterDBFrame::DataChange(TObject *Sender) { SetupFilter(); }
void __fastcall TFixedFilterDBFrame::DBValueComboBoxClick(TObject *Sender) { SetupFilter(); }
static int IvtcFilter (VideoFilter *vf, VideoFrame *frame, int field) { (void)field; ThisFilter *filter = (ThisFilter *) vf; if (!frame->interlaced_frame) { filter->progressive_frame_seen = 1; } if (filter->progressive_frame_seen && frame->interlaced_frame) { filter->interlaced_frame_seen = 1; } if (!frame->interlaced_frame && !filter->apply_filter && filter->interlaced_frame_seen && filter->progressive_frame_seen) { fprintf(stderr,"turning on inverse telecine filter"); filter->apply_filter = 1; } if (!filter->apply_filter) return 1; SetupFilter(filter, frame->width, frame->height, (int*)frame->pitches); struct pullup_buffer *b; struct pullup_frame *f; int ypitch = filter->context->stride[0]; int height = filter->height; int cpitch = filter->context->stride[1]; int cheight = filter->height >> 1; int p = frame->top_field_first ^ 1; struct pullup_context *c = filter->context; if (c->bpp[0] == 0) c->bpp[0] = c->bpp[1] = c->bpp[2] = frame->bpp; b = pullup_get_buffer(c,2); if (!b) { f = pullup_get_frame(c); pullup_release_frame(f); return 0; } memcpy_pic(b->planes[0], frame->buf + frame->offsets[0], height, ypitch, ypitch); memcpy_pic(b->planes[1], frame->buf + frame->offsets[1], cheight, cpitch, cpitch); memcpy_pic(b->planes[2], frame->buf + frame->offsets[2], cheight, cpitch, cpitch); pullup_submit_field(c, b, p); pullup_submit_field(c, b, p^1); if (frame->repeat_pict) pullup_submit_field(c, b, p); pullup_release_buffer(b, 2); f = pullup_get_frame(c); if (!f) return 0; if (f->length < 2) { pullup_release_frame(f); f = pullup_get_frame(c); if (!f) return 0; if (f->length < 2) { pullup_release_frame(f); if (!frame->repeat_pict) return 0; f = pullup_get_frame(c); if (!f) return 0; if (f->length < 2) { pullup_release_frame(f); return 0; } } } if (!f->buffer) { pullup_pack_frame(c, f); } if (!f->buffer) return 0; memcpy_pic(frame->buf + frame->offsets[0], f->buffer->planes[0], height, ypitch, ypitch); memcpy_pic(frame->buf + frame->offsets[1], f->buffer->planes[1], cheight, cpitch, cpitch); memcpy_pic(frame->buf + frame->offsets[2], f->buffer->planes[2], cheight, cpitch, cpitch); pullup_release_frame(f); return 1; }