From 8882f762c4c18e2277ab3fa851e24ad2a4deced9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jun 2015 17:02:01 +0200 Subject: [PATCH] Start hooking up imageviewer, pt. 1 --- dynamic.c | 37 +++++++++++++++++++++++++++++++++++++ dynamic.h | 6 +++--- menu/menu.c | 3 +++ menu/menu_displaylist.c | 4 +++- menu/menu_hash.h | 18 ++---------------- retroarch.c | 19 +++++++++++++++---- retroarch.h | 30 ++++++++++++++++++++++++++---- 7 files changed, 89 insertions(+), 28 deletions(-) diff --git a/dynamic.c b/dynamic.c index 6c6ed27d0b..55c190ce1b 100644 --- a/dynamic.c +++ b/dynamic.c @@ -64,6 +64,8 @@ static dylib_t lib_handle; #define SYM_FFMPEG(x) p##x = libretro_ffmpeg_##x #endif +#define SYM_IMAGEVIEWER(x) p##x = libretro_imageviewer_##x + void (*pretro_init)(void); void (*pretro_deinit)(void); @@ -441,6 +443,41 @@ static void load_symbols(enum rarch_core_type type) SYM_FFMPEG(retro_get_memory_size); break; #endif + case CORE_TYPE_IMAGEVIEWER: + SYM_IMAGEVIEWER(retro_init); + SYM_IMAGEVIEWER(retro_deinit); + + SYM_IMAGEVIEWER(retro_api_version); + SYM_IMAGEVIEWER(retro_get_system_info); + SYM_IMAGEVIEWER(retro_get_system_av_info); + + SYM_IMAGEVIEWER(retro_set_environment); + SYM_IMAGEVIEWER(retro_set_video_refresh); + SYM_IMAGEVIEWER(retro_set_audio_sample); + SYM_IMAGEVIEWER(retro_set_audio_sample_batch); + SYM_IMAGEVIEWER(retro_set_input_poll); + SYM_IMAGEVIEWER(retro_set_input_state); + + SYM_IMAGEVIEWER(retro_set_controller_port_device); + + SYM_IMAGEVIEWER(retro_reset); + SYM_IMAGEVIEWER(retro_run); + + SYM_IMAGEVIEWER(retro_serialize_size); + SYM_IMAGEVIEWER(retro_serialize); + SYM_IMAGEVIEWER(retro_unserialize); + + SYM_IMAGEVIEWER(retro_cheat_reset); + SYM_IMAGEVIEWER(retro_cheat_set); + + SYM_IMAGEVIEWER(retro_load_game); + SYM_IMAGEVIEWER(retro_load_game_special); + + SYM_IMAGEVIEWER(retro_unload_game); + SYM_IMAGEVIEWER(retro_get_region); + SYM_IMAGEVIEWER(retro_get_memory_data); + SYM_IMAGEVIEWER(retro_get_memory_size); + break; } } diff --git a/dynamic.h b/dynamic.h index 05e899b3e4..38df81756d 100644 --- a/dynamic.h +++ b/dynamic.h @@ -29,11 +29,11 @@ enum rarch_core_type { CORE_TYPE_PLAIN = 0, - CORE_TYPE_DUMMY + CORE_TYPE_DUMMY, #ifdef HAVE_FFMPEG - , - CORE_TYPE_FFMPEG + CORE_TYPE_FFMPEG, #endif + CORE_TYPE_IMAGEVIEWER }; #ifdef __cplusplus diff --git a/menu/menu.c b/menu/menu.c index bea7f446c7..cd00b2fa02 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -167,6 +167,9 @@ void menu_common_load_content(bool persist, enum rarch_core_type type) event_command(EVENT_CMD_LOAD_CONTENT_FFMPEG); break; #endif + case CORE_TYPE_IMAGEVIEWER: + /* TODO/FIXME */ + break; } menu_list_flush_stack(menu_list, NULL, MENU_SETTINGS); diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 581211af30..4ddaa8a670 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -1983,7 +1983,7 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool *n #ifdef HAVE_FFMPEG if (settings->mediaplayer.builtin_enable) { - switch (rarch_mediaplayer_is_media_type(path)) + switch (rarch_path_is_media_type(path)) { case RARCH_CONTENT_MOVIE: file_type = MENU_FILE_MOVIE; @@ -1991,6 +1991,8 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool *n case RARCH_CONTENT_MUSIC: file_type = MENU_FILE_MUSIC; break; + case RARCH_CONTENT_IMAGE: + file_type = MENU_FILE_IMAGE; default: break; } diff --git a/menu/menu_hash.h b/menu/menu_hash.h index fd80ca4a95..888ad476e7 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -16,26 +16,12 @@ #ifndef MENU_HASH_H__ #define MENU_HASH_H__ +#include "../retroarch.h" + #ifdef __cplusplus extern "C" { #endif -#define MENU_VALUE_FILE_WEBM 0x7ca00b50U -#define MENU_VALUE_FILE_F4F 0x0b886be5U -#define MENU_VALUE_FILE_F4V 0x0b886bf5U -#define MENU_VALUE_FILE_OGM 0x0b8898c8U -#define MENU_VALUE_FILE_MKV 0x0b8890d3U -#define MENU_VALUE_FILE_AVI 0x0b885f25U -#define MENU_VALUE_FILE_M4A 0x0b8889a7U -#define MENU_VALUE_FILE_3GP 0x0b87998fU -#define MENU_VALUE_FILE_MP4 0x0b889136U -#define MENU_VALUE_FILE_MP3 0x0b889135U -#define MENU_VALUE_FILE_FLAC 0x7c96d67bU -#define MENU_VALUE_FILE_OGG 0x0b8898c2U -#define MENU_VALUE_FILE_FLV 0x0b88732dU -#define MENU_VALUE_FILE_WAV 0x0b88ba13U -#define MENU_VALUE_FILE_MOV 0x0b889157U -#define MENU_VALUE_FILE_WMV 0x0b88bb9fU #define MENU_VALUE_SEARCH 0xd0d5febbU diff --git a/retroarch.c b/retroarch.c index 287b30084d..44bc14d855 100644 --- a/retroarch.c +++ b/retroarch.c @@ -426,13 +426,14 @@ void rarch_set_paths(const char *path) sizeof(settings->system_directory)); } -#ifdef HAVE_FFMPEG -enum rarch_content_type rarch_mediaplayer_is_media_type(const char *path) + +enum rarch_content_type rarch_path_is_media_type(const char *path) { uint32_t hash_ext = djb2_calculate(path_get_extension(path)); switch (hash_ext) { +#ifdef HAVE_FFMPEG case MENU_VALUE_FILE_OGM: case MENU_VALUE_FILE_MKV: case MENU_VALUE_FILE_AVI: @@ -451,13 +452,19 @@ enum rarch_content_type rarch_mediaplayer_is_media_type(const char *path) case MENU_VALUE_FILE_FLAC: case MENU_VALUE_FILE_WAV: return RARCH_CONTENT_MUSIC; +#endif + case MENU_VALUE_FILE_JPG: + case MENU_VALUE_FILE_JPEG: + case MENU_VALUE_FILE_PNG: + case MENU_VALUE_FILE_TGA: + case MENU_VALUE_FILE_BMP: + return RARCH_CONTENT_IMAGE; default: break; } return RARCH_CONTENT_NONE; } -#endif #define FFMPEG_RECORD_ARG "r:" @@ -1203,13 +1210,17 @@ int rarch_main_init(int argc, char *argv[]) if (settings && settings->mediaplayer.builtin_enable) { - switch (rarch_mediaplayer_is_media_type(global->fullpath)) + switch (rarch_path_is_media_type(global->fullpath)) { case RARCH_CONTENT_MOVIE: case RARCH_CONTENT_MUSIC: global->has_set_libretro = false; global->core_type = CORE_TYPE_FFMPEG; break; + case RARCH_CONTENT_IMAGE: + global->has_set_libretro = false; + global->core_type = CORE_TYPE_IMAGEVIEWER; + break; default: break; } diff --git a/retroarch.h b/retroarch.h index 596d08d694..783e297777 100644 --- a/retroarch.h +++ b/retroarch.h @@ -40,11 +40,35 @@ enum action_state RARCH_ACTION_STATE_FORCE_QUIT }; +#define MENU_VALUE_FILE_WEBM 0x7ca00b50U +#define MENU_VALUE_FILE_F4F 0x0b886be5U +#define MENU_VALUE_FILE_F4V 0x0b886bf5U +#define MENU_VALUE_FILE_OGM 0x0b8898c8U +#define MENU_VALUE_FILE_MKV 0x0b8890d3U +#define MENU_VALUE_FILE_AVI 0x0b885f25U +#define MENU_VALUE_FILE_M4A 0x0b8889a7U +#define MENU_VALUE_FILE_3GP 0x0b87998fU +#define MENU_VALUE_FILE_MP4 0x0b889136U +#define MENU_VALUE_FILE_MP3 0x0b889135U +#define MENU_VALUE_FILE_FLAC 0x7c96d67bU +#define MENU_VALUE_FILE_OGG 0x0b8898c2U +#define MENU_VALUE_FILE_FLV 0x0b88732dU +#define MENU_VALUE_FILE_WAV 0x0b88ba13U +#define MENU_VALUE_FILE_MOV 0x0b889157U +#define MENU_VALUE_FILE_WMV 0x0b88bb9fU + +#define MENU_VALUE_FILE_JPG 0x0b8884a6U +#define MENU_VALUE_FILE_JPEG 0x7c99198bU +#define MENU_VALUE_FILE_PNG 0x0b889deaU +#define MENU_VALUE_FILE_TGA 0x0b88ae01U +#define MENU_VALUE_FILE_BMP 0x0b886244U + enum rarch_content_type { RARCH_CONTENT_NONE = 0, RARCH_CONTENT_MOVIE, - RARCH_CONTENT_MUSIC + RARCH_CONTENT_MUSIC, + RARCH_CONTENT_IMAGE }; enum rarch_capabilities @@ -182,9 +206,7 @@ void set_paths_redirect(const char *path); int rarch_info_get_capabilities(enum rarch_capabilities type, char *s, size_t len); -#ifdef HAVE_FFMPEG -enum rarch_content_type rarch_mediaplayer_is_media_type(const char *path); -#endif +enum rarch_content_type rarch_path_is_media_type(const char *path); extern char orig_savestate_dir[PATH_MAX_LENGTH]; extern char orig_savefile_dir[PATH_MAX_LENGTH];