bool video_driver_frame_filter(const void *data, unsigned width, unsigned height, size_t pitch, unsigned *output_width, unsigned *output_height, unsigned *output_pitch) { settings_t *settings = config_get_ptr(); RARCH_PERFORMANCE_INIT(softfilter_process); if (!video_state.filter.filter) return false; if (!data) return false; rarch_softfilter_get_output_size(video_state.filter.filter, output_width, output_height, width, height); *output_pitch = (*output_width) * video_state.filter.out_bpp; RARCH_PERFORMANCE_START(softfilter_process); rarch_softfilter_process(video_state.filter.filter, video_state.filter.buffer, *output_pitch, data, width, height, pitch); RARCH_PERFORMANCE_STOP(softfilter_process); if (settings->video.post_filter_record) recording_dump_frame(video_state.filter.buffer, *output_width, *output_height, *output_pitch); return true; }
bool video_driver_frame_filter(const void *data, unsigned width, unsigned height, size_t pitch, unsigned *output_width, unsigned *output_height, unsigned *output_pitch) { static struct retro_perf_counter softfilter_process = {0}; settings_t *settings = config_get_ptr(); rarch_perf_init(&softfilter_process, "softfilter_process"); if (!video_state.filter.filter) return false; if (!data) return false; rarch_softfilter_get_output_size(video_state.filter.filter, output_width, output_height, width, height); *output_pitch = (*output_width) * video_state.filter.out_bpp; retro_perf_start(&softfilter_process); rarch_softfilter_process(video_state.filter.filter, video_state.filter.buffer, *output_pitch, data, width, height, pitch); retro_perf_stop(&softfilter_process); if (settings->video.post_filter_record) recording_dump_frame(video_state.filter.buffer, *output_width, *output_height, *output_pitch); return true; }
void rarch_softfilter_get_max_output_size(rarch_softfilter_t *filt, unsigned *width, unsigned *height) { rarch_softfilter_get_output_size(filt, width, height, filt->max_width, filt->max_height); }