static VideoFilter* GreedyHDeintFilter(VideoFrameType inpixfmt, VideoFrameType outpixfmt, int *width, int *height, char *options, int threads) { ThisFilter *filter; (void) height; (void) options; (void) threads; filter = (ThisFilter *) malloc (sizeof(ThisFilter)); if (filter == NULL) { fprintf (stderr, "GreedyHDeint: failed to allocate memory for filter.\n"); return NULL; } filter->width = 0; filter->height = 0; memset(filter->frames, 0, sizeof(filter->frames)); filter->deint_frame = 0; AllocFilter(filter, *width, *height); init_yuv_conversion(); #ifdef MMX filter->mm_flags = av_get_cpu_flags(); TF_INIT(filter); #else filter->mm_flags = 0; #endif if (!(filter->mm_flags & (AV_CPU_FLAG_SSE|AV_CPU_FLAG_3DNOW|AV_CPU_FLAG_MMX))) { /* TODO plain old C implementation */ fprintf (stderr, "GreedyHDeint: Requires MMX extensions.\n"); CleanupGreedyHDeintFilter(&filter->vf); free(filter); return NULL; } filter->vf.filter = &GreedyHDeint; filter->vf.cleanup = &CleanupGreedyHDeintFilter; return (VideoFilter *) filter; }
static VideoFilter* GreedyHDeintFilter(VideoFrameType inpixfmt, VideoFrameType outpixfmt, int *width, int *height, char *options, int threads) { ThisFilter *filter; (void) height; (void) options; (void) threads; filter = (ThisFilter *) malloc (sizeof(ThisFilter)); if (filter == NULL) { fprintf (stderr, "GreedyHDeint: failed to allocate memory for filter.\n"); return NULL; } filter->width = 0; filter->height = 0; memset(filter->frames, 0, sizeof(filter->frames)); filter->deint_frame = 0; AllocFilter(filter, *width, *height); init_yuv_conversion(); #ifdef MMX filter->mm_flags = av_get_cpu_flags(); TF_INIT(filter); #else filter->mm_flags = 0; #endif filter->vf.filter = &GreedyHDeint; filter->vf.cleanup = &CleanupGreedyHDeintFilter; return (VideoFilter *) filter; }