void uninit_video_input(void) { driver_t *driver = driver_get_ptr(); event_command(EVENT_CMD_OVERLAY_DEINIT); if ( !driver->input_data_own && (driver->input_data != driver->video_data) ) input_driver_free(); if ( !driver->video_data_own && driver->video_data && driver->video && driver->video->free) driver->video->free(driver->video_data); deinit_pixel_converter(); deinit_video_filter(); video_driver_unset_callback(); event_command(EVENT_CMD_SHADER_DIR_DEINIT); video_monitor_compute_fps_statistics(); }
void uninit_video_input(void) { #ifdef HAVE_OVERLAY if (driver.overlay) { input_overlay_free(driver.overlay); driver.overlay = NULL; memset(&driver.overlay_state, 0, sizeof(driver.overlay_state)); } #endif if (!driver.input_data_own && driver.input_data != driver.video_data && driver.input && driver.input->free) input_free_func(); if (!driver.video_data_own && driver.video_data && driver.video && driver.video->free) video_free_func(); deinit_pixel_converter(); rarch_deinit_filter(); deinit_shader_dir(); compute_monitor_fps_statistics(); }
bool init_video_pixel_converter(unsigned size) { /* This function can be called multiple times * without deiniting first on consoles. */ deinit_pixel_converter(); /* If pixel format is not 0RGB1555, we don't need to do * any internal pixel conversion. */ if (video_driver_get_pixel_format() != RETRO_PIXEL_FORMAT_0RGB1555) return true; RARCH_WARN("0RGB1555 pixel format is deprecated, and will be slower. For 15/16-bit, RGB565 format is preferred.\n"); scaler_ptr = (video_pixel_scaler_t*)calloc(1, sizeof(*scaler_ptr)); if (!scaler_ptr) goto error; scaler_ptr->scaler = (struct scaler_ctx*)calloc(1, sizeof(*scaler_ptr->scaler)); if (!scaler_ptr->scaler) goto error; scaler_ptr->scaler->scaler_type = SCALER_TYPE_POINT; scaler_ptr->scaler->in_fmt = SCALER_FMT_0RGB1555; /* TODO: Pick either ARGB8888 or RGB565 depending on driver. */ scaler_ptr->scaler->out_fmt = SCALER_FMT_RGB565; if (!scaler_ctx_gen_filter(scaler_ptr->scaler)) goto error; scaler_ptr->scaler_out = calloc(sizeof(uint16_t), size * size); if (!scaler_ptr->scaler_out) goto error; return true; error: if (scaler_ptr->scaler_out) free(scaler_ptr->scaler_out); if (scaler_ptr->scaler) free(scaler_ptr->scaler); if (scaler_ptr) free(scaler_ptr); scaler_ptr = NULL; return false; }
void uninit_video_input(void) { rarch_main_command(RARCH_CMD_OVERLAY_DEINIT); if (!driver.input_data_own && driver.input_data != driver.video_data && driver.input && driver.input->free) driver.input->free(driver.input_data); if (!driver.video_data_own && driver.video_data && driver.video && driver.video->free) driver.video->free(driver.video_data); deinit_pixel_converter(); rarch_deinit_filter(); deinit_shader_dir(); compute_monitor_fps_statistics(); }
static bool init_video_pixel_converter(unsigned size) { // This function can be called multiple times without deiniting first on consoles. deinit_pixel_converter(); if (g_extern.system.pix_fmt == RETRO_PIXEL_FORMAT_0RGB1555) { RARCH_WARN("0RGB1555 pixel format is deprecated, and will be slower. For 15/16-bit, RGB565 format is preferred.\n"); driver.scaler.scaler_type = SCALER_TYPE_POINT; driver.scaler.in_fmt = SCALER_FMT_0RGB1555; // TODO: Pick either ARGB8888 or RGB565 depending on driver ... driver.scaler.out_fmt = SCALER_FMT_RGB565; if (!scaler_ctx_gen_filter(&driver.scaler)) return false; driver.scaler_out = calloc(sizeof(uint16_t), size * size); } return true; }