ps3/android: do not use qt video encoder for savedata

fix build
This commit is contained in:
DH 2025-04-09 02:26:30 +03:00
parent 79633a7740
commit 16e11b1f8c
5 changed files with 79 additions and 43 deletions

View file

@ -35,7 +35,7 @@ option(SPIRV_CROSS_SKIP_INSTALL "" on)
add_subdirectory(SPIRV-Cross)
add_subdirectory(glslang)
if(NOT TARGET glslang::glslang-standalone)
if(NOT TARGET glslang::glslang-standalone AND TARGET glslang-standalone)
add_executable(glslang::glslang-standalone ALIAS glslang-standalone)
endif()
@ -49,49 +49,50 @@ target_link_libraries(3rdparty_json INTERFACE nlohmann_json)
add_subdirectory(LibAtrac9)
set(FFMPEG_PATH ${CMAKE_CURRENT_SOURCE_DIR}/FFmpeg)
add_custom_command(
OUTPUT ${FFMPEG_PATH}/config.h
COMMAND ./configure --disable-libdrm --disable-vaapi --disable-vdpau --disable-zlib --disable-lzma
COMMENT "Configuring FFmpeg..."
WORKING_DIRECTORY ${FFMPEG_PATH}
)
add_custom_target(ffmpeg-configure DEPENDS ${FFMPEG_PATH}/config.h)
if (COMPILE_FFMPEG)
set(FFMPEG_PATH ${CMAKE_CURRENT_SOURCE_DIR}/FFmpeg)
add_custom_command(
OUTPUT ${FFMPEG_PATH}/config.h
COMMAND ./configure --disable-libdrm --disable-vaapi --disable-vdpau --disable-zlib --disable-lzma
COMMENT "Configuring FFmpeg..."
WORKING_DIRECTORY ${FFMPEG_PATH}
)
add_custom_target(ffmpeg-configure DEPENDS ${FFMPEG_PATH}/config.h)
function(import_ffmpeg_library name)
if (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles")
set(MAKE_COMMAND $(MAKE) -j$(nproc))
elseif (${CMAKE_GENERATOR} STREQUAL "Ninja")
set(MAKE_COMMAND make -j$$(nproc))
else()
set(MAKE_COMMAND make)
endif()
function(import_ffmpeg_library name)
if (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles")
set(MAKE_COMMAND $(MAKE) -j$(nproc))
elseif (${CMAKE_GENERATOR} STREQUAL "Ninja")
set(MAKE_COMMAND make -j$$(nproc))
else()
set(MAKE_COMMAND make)
endif()
add_custom_command(
OUTPUT "${FFMPEG_PATH}/lib${name}/lib${name}.a"
COMMAND ${MAKE_COMMAND} -C ${FFMPEG_PATH} "lib${name}/lib${name}.a"
COMMENT "Building lib${name}/lib${name}.a"
DEPENDS ffmpeg-configure
WORKING_DIRECTORY ${FFMPEG_PATH}
)
add_custom_command(
OUTPUT "${FFMPEG_PATH}/lib${name}/lib${name}.a"
COMMAND ${MAKE_COMMAND} -C ${FFMPEG_PATH} "lib${name}/lib${name}.a"
COMMENT "Building lib${name}/lib${name}.a"
DEPENDS ffmpeg-configure
WORKING_DIRECTORY ${FFMPEG_PATH}
)
add_custom_target(ffmpeg-build-${name} DEPENDS "${FFMPEG_PATH}/lib${name}/lib${name}.a")
add_custom_target(ffmpeg-build-${name} DEPENDS "${FFMPEG_PATH}/lib${name}/lib${name}.a")
add_library(ffmpeg::${name} STATIC IMPORTED GLOBAL)
set_property(TARGET ffmpeg::${name} PROPERTY IMPORTED_LOCATION "${FFMPEG_PATH}/lib${name}/lib${name}.a")
set_property(TARGET ffmpeg::${name} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${FFMPEG_PATH}")
add_dependencies(ffmpeg::${name} ffmpeg-build-${name})
endfunction()
import_ffmpeg_library(avcodec)
import_ffmpeg_library(avformat)
import_ffmpeg_library(avfilter)
import_ffmpeg_library(avdevice)
import_ffmpeg_library(avutil)
import_ffmpeg_library(swscale)
import_ffmpeg_library(swresample)
import_ffmpeg_library(postproc)
add_library(ffmpeg::${name} STATIC IMPORTED GLOBAL)
set_property(TARGET ffmpeg::${name} PROPERTY IMPORTED_LOCATION "${FFMPEG_PATH}/lib${name}/lib${name}.a")
set_property(TARGET ffmpeg::${name} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${FFMPEG_PATH}")
add_dependencies(ffmpeg::${name} ffmpeg-build-${name})
endfunction()
import_ffmpeg_library(avcodec)
import_ffmpeg_library(avformat)
import_ffmpeg_library(avfilter)
import_ffmpeg_library(avdevice)
import_ffmpeg_library(avutil)
import_ffmpeg_library(swscale)
import_ffmpeg_library(swresample)
import_ffmpeg_library(postproc)
endif()
# Dummy target to use when lib isn't available
add_library(3rdparty_dummy_lib INTERFACE)

View file

@ -7,6 +7,7 @@ option(WITH_RPCS3_QT_UI "Enable RPCS3 UI" OFF)
option(WITHOUT_OPENGL "Disable OpenGL" OFF)
option(WITHOUT_OPENGLEW "Disable OpenGLEW" OFF)
option(WITHOUT_OPENAL "Disable OpenAL" OFF)
option(COMPILE_FFMPEG "Compile FFmpeg" ON)
# rpcs3 options
option(USE_NATIVE_INSTRUCTIONS "USE_NATIVE_INSTRUCTIONS makes rpcs3 compile with -march=native, which is useful for local builds, but not good for packages." ON)

View file

@ -39,7 +39,7 @@ set(ADDITIONAL_LIBS "")
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
#on some Linux distros shm_unlink and similar functions are in librt only
set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} "rt")
elseif(NOT WIN32 AND NOT CMAKE_CXX_FLAGS MATCHES "LIBICONV_PLUG")
elseif(NOT WIN32 AND NOT CMAKE_CXX_FLAGS MATCHES "LIBICONV_PLUG" AND NOT ANDROID)
#it seems like glibc includes the iconv functions we use but other libc
#implementations like the one on OSX don't seem implement them
set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} "iconv")

View file

@ -8,10 +8,41 @@ namespace rsx
{
namespace overlays
{
save_dialog::save_dialog_entry::save_dialog_entry(const std::string& text1, const std::string& text2, const std::string& text3, u8 resource_id, const std::vector<u8>& icon_buf, const std::string& video_path)
save_dialog::save_dialog_entry::save_dialog_entry(const std::string& text1, const std::string& text2, const std::string& text3, u8 resource_id, const std::vector<u8>& icon_buf, [[maybe_unused]] const std::string& video_path)
{
std::unique_ptr<overlay_element> image = resource_id != image_resource_id::raw_image ? std::make_unique<video_view>(video_path, resource_id) : !icon_buf.empty() ? std::make_unique<video_view>(video_path, icon_buf) :
std::make_unique<video_view>(video_path, resource_config::standard_image_resource::save); // Fallback
std::unique_ptr<overlay_element> image;
#ifndef ANDROID
if (resource_id != image_resource_id::raw_image)
{
image = std::make_unique<video_view>(video_path, resource_id);
}
else if (!icon_buf.empty())
{
image = std::make_unique<video_view>(video_path, icon_buf);
}
else
{
image = std::make_unique<video_view>(video_path, resource_config::standard_image_resource::save); // Fallback
}
#else
image = std::make_unique<image_view>();
if (resource_id != image_resource_id::raw_image)
{
static_cast<image_view*>(image.get())->set_image_resource(resource_id);
}
else if (!icon_buf.empty())
{
image->set_padding(0, 0, 11, 11); // Half sized icon, 320x176->160x88
icon_data = std::make_unique<image_info>(icon_buf);
static_cast<image_view*>(image.get())->set_raw_image(icon_data.get());
}
else
{
static_cast<image_view*>(image.get())->set_image_resource(resource_config::standard_image_resource::save);
}
#endif
image->set_size(160, 110);
image->set_padding(36, 36, 11, 11); // Square image, 88x88
@ -71,10 +102,12 @@ namespace rsx
void save_dialog::save_dialog_entry::set_selected(bool selected)
{
#ifndef ANDROID
if (m_image)
{
static_cast<video_view*>(m_image)->set_active(selected);
}
#endif
}
save_dialog::save_dialog()

View file

@ -18,6 +18,7 @@ namespace rsx
void set_selected(bool selected) override;
private:
std::unique_ptr<image_info> icon_data;
overlay_element* m_image = nullptr;
};