Redefined ffmpeg's av_err2str macro to be c++ friendly ()

* Fixed compiler error for av_err2string by redefining in c++ friendly way

* removed link from comment, putting in PR

* fixed formatting

* Minor fix: enable qt gui to find PKG files with lowercase extension .pkg

* Added missing dependencies and instructions for enabling QT for linux builds
This commit is contained in:
Zack McKevitt 2024-09-08 15:30:18 -06:00 committed by GitHub
parent 9101bd7ad4
commit 96f7a75f38
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 21 additions and 7 deletions
documents
src
core/libraries/avplayer
qt_gui

View file

@ -9,7 +9,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
#### Debian & Ubuntu #### Debian & Ubuntu
``` ```
sudo apt-get install build-essential libasound2-dev libpulse-dev libopenal-dev zlib1g-dev libedit-dev libvulkan-dev libudev-dev git libevdev-dev libsdl2-2.0 libsdl2-dev libjack-dev libsndio-dev sudo apt-get install build-essential libasound2-dev libpulse-dev libopenal-dev zlib1g-dev libedit-dev libvulkan-dev libudev-dev git libevdev-dev libsdl2-2.0 libsdl2-dev libjack-dev libsndio-dev qt6-base-dev qt6-tools-dev
``` ```
#### Fedora #### Fedora
@ -34,9 +34,9 @@ git clone --recursive https://github.com/shadps4-emu/shadPS4.git
cd shadPS4 cd shadPS4
``` ```
Generate the build directory in the shadPS4 directory: Generate the build directory in the shadPS4 directory. To enable the QT GUI, pass the ```-DENABLE_QT_GUI=ON``` flag:
``` ```
cmake -S . -B build/ cmake -S . -B build/ -DENABLE_QT_GUI=ON
``` ```
Enter the directory: Enter the directory:
@ -49,8 +49,11 @@ Use make to build the project:
cmake --build . --parallel$(nproc) cmake --build . --parallel$(nproc)
``` ```
Now run the emulator: Now run the emulator. If QT is enabled:
```
./shadps4
```
Otherwise, specify the path to your PKG's boot file:
``` ```
./shadps4 /"PATH"/"TO"/"GAME"/"FOLDER"/eboot.bin ./shadps4 /"PATH"/"TO"/"GAME"/"FOLDER"/eboot.bin
``` ```

View file

@ -20,6 +20,17 @@ extern "C" {
#include <libswscale/swscale.h> #include <libswscale/swscale.h>
} }
// The av_err2str macro in libavutil/error.h does not play nice with C++
#ifdef av_err2str
#undef av_err2str
#include <string>
av_always_inline std::string av_err2string(int errnum) {
char errbuf[AV_ERROR_MAX_STRING_SIZE];
return av_make_error_string(errbuf, AV_ERROR_MAX_STRING_SIZE, errnum);
}
#define av_err2str(err) av_err2string(err).c_str()
#endif // av_err2str
namespace Libraries::AvPlayer { namespace Libraries::AvPlayer {
using namespace Kernel; using namespace Kernel;

View file

@ -577,7 +577,7 @@ void MainWindow::SaveWindowState() const {
void MainWindow::InstallPkg() { void MainWindow::InstallPkg() {
QFileDialog dialog; QFileDialog dialog;
dialog.setFileMode(QFileDialog::ExistingFiles); dialog.setFileMode(QFileDialog::ExistingFiles);
dialog.setNameFilter(tr("PKG File (*.PKG)")); dialog.setNameFilter(tr("PKG File (*.PKG *.pkg)"));
if (dialog.exec()) { if (dialog.exec()) {
QStringList fileNames = dialog.selectedFiles(); QStringList fileNames = dialog.selectedFiles();
int nPkg = fileNames.size(); int nPkg = fileNames.size();
@ -949,4 +949,4 @@ void MainWindow::OnLanguageChanged(const std::string& locale) {
Config::setEmulatorLanguage(locale); Config::setEmulatorLanguage(locale);
LoadTranslation(); LoadTranslation();
} }