Skip to content

Commit 3318024

Browse files
StepMania: add missing dependencies and add patchs for newer ffmpeg
use separate patches depending on ffmpeg version
1 parent f7766c1 commit 3318024

File tree

1 file changed

+115
-2
lines changed

1 file changed

+115
-2
lines changed

apps/StepMania/install

Lines changed: 115 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#!/bin/bash
22

33
status "Installing Dependencies"
4-
install_packages rsync cmake zlib1g-dev libjpeg-dev libjsoncpp-dev build-essential libbz2-dev libasound2-dev libsdl2-dev ffmpeg libgl-dev libglew-dev libgtk-3-dev libjack-jackd2-dev libjsoncpp-dev libmad0-dev libpng-dev libpulse-dev libtomcrypt-dev libtommath-dev libudev-dev libva-dev libvorbis-dev libxinerama-dev libx11-dev libxrandr-dev libxtst-dev || exit 1
4+
install_packages rsync cmake zlib1g-dev libjpeg-dev libjsoncpp-dev build-essential libbz2-dev libasound2-dev libsdl2-dev ffmpeg libavcodec-dev libavdevice-dev libswscale-dev libavformat-dev libavutil-dev libswresample-dev libgl-dev libglew-dev libgtk-3-dev libjack-jackd2-dev libjsoncpp-dev libmad0-dev libpng-dev libpulse-dev libtomcrypt-dev libtommath-dev libudev-dev libva-dev libvorbis-dev libxinerama-dev libx11-dev libxrandr-dev libxtst-dev yasm || exit 1
55

66
status "Cloning repo"
77
git_clone https://github.com/stepmania/stepmania.git || error "Could not clone repo"
88
cd stepmania || error "Could not enter stepmania folder"
9-
git checkout 0faf106eb196fd7187edab0aaa8f9e043c5e6d19 || error "Could not checkout desired commit"
9+
git checkout d55acb1ba26f1c5b5e3048d6d6c0bd116625216f || error "Could not checkout desired commit"
1010

1111
# add patch
1212
# this format of writing to a file changes none of the output (does not mess up '', "", or any special character)
@@ -83,7 +83,120 @@ index c092b76..36a6cf1 100644
8383
8484
EOF
8585

86+
cat << 'EOF' >> pre-7.1-ffmpeg.patch
87+
diff --git a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp
88+
index 935ddf324b0..d4eed01d599 100644
89+
--- a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp
90+
+++ b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp
91+
@@ -405,7 +405,7 @@ void MovieTexture_FFMpeg::RegisterProtocols()
92+
return;
93+
Done = true;
94+
95+
-#if !FF_API_NEXT
96+
+#if LIBAVCODEC_VERSION_MAJOR < 58
97+
avcodec::avcodec_register_all();
98+
avcodec::av_register_all();
99+
#endif
100+
@@ -508,7 +508,7 @@ RString MovieDecoder_FFMpeg::OpenCodec()
101+
if( m_pStreamCodec->codec )
102+
avcodec::avcodec_close( m_pStreamCodec );
103+
104+
- avcodec::AVCodec *pCodec = avcodec::avcodec_find_decoder( m_pStreamCodec->codec_id );
105+
+ const avcodec::AVCodec *pCodec = avcodec::avcodec_find_decoder( m_pStreamCodec->codec_id );
106+
if( pCodec == nullptr )
107+
return ssprintf( "Couldn't find decoder %i", m_pStreamCodec->codec_id );
108+
109+
diff --git a/src/arch/MovieTexture/MovieTexture_FFMpeg.h b/src/arch/MovieTexture/MovieTexture_FFMpeg.h
110+
index c092b765fc2..99f5ffcb1be 100644
111+
--- a/src/arch/MovieTexture/MovieTexture_FFMpeg.h
112+
+++ b/src/arch/MovieTexture/MovieTexture_FFMpeg.h
113+
@@ -13,6 +13,7 @@ namespace avcodec
114+
#include <libavformat/avformat.h>
115+
#include <libswscale/swscale.h>
116+
#include <libavutil/pixdesc.h>
117+
+ #include <libavcodec/avcodec.h>
118+
119+
#if LIBAVCODEC_VERSION_MAJOR >= 57
120+
#define av_free_packet av_packet_unref
121+
122+
EOF
123+
124+
# minor edits from https://github.com/h-lunah/stepmania-ddr/commit/46ad6dae13d9c2786147a38bfbd3b3812573ad22.patch
125+
cat << 'EOF' >> 7.1-ffmpeg.patch
126+
diff --git a/src/CMakeData-arch.cmake b/src/CMakeData-arch.cmake
127+
index 1c330a50bbc..6c3a6f24865 100644
128+
--- a/src/CMakeData-arch.cmake
129+
+++ b/src/CMakeData-arch.cmake
130+
@@ -105,6 +105,7 @@ else() # Unix
131+
"arch/MovieTexture/MovieTexture_FFMpeg.cpp")
132+
list(APPEND SMDATA_ARCH_MOVIE_TEXTURE_HPP
133+
"arch/MovieTexture/MovieTexture_FFMpeg.h")
134+
+ add_compile_definitions(FF_API_NEXT)
135+
endif()
136+
endif()
137+
138+
diff --git a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp
139+
index 935ddf324b0..a74e003193d 100644
140+
--- a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp
141+
+++ b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp
142+
@@ -112,6 +112,7 @@ MovieDecoder_FFMpeg::MovieDecoder_FFMpeg()
143+
m_swsctx = NULL;
144+
m_avioContext = NULL;
145+
m_buffer = NULL;
146+
+ m_pStreamCodec = NULL;
147+
m_fctx = nullptr;
148+
m_pStream = nullptr;
149+
m_iCurrentPacketOffset = -1;
150+
@@ -166,6 +167,7 @@ void MovieDecoder_FFMpeg::Init()
151+
{
152+
avcodec::avcodec_free_context(&m_pStreamCodec);
153+
}
154+
+ m_pStreamCodec = NULL;
155+
#endif
156+
}
157+
158+
@@ -273,7 +275,7 @@ int MovieDecoder_FFMpeg::DecodePacket( float fTargetTime )
159+
bool bSkipThisFrame =
160+
fTargetTime != -1 &&
161+
GetTimestamp() + GetFrameDuration() < fTargetTime &&
162+
- (m_pStreamCodec->frame_number % 2) == 0;
163+
+ (m_pStreamCodec->frame_num % 2) == 0;
164+
165+
int iGotFrame;
166+
int len;
167+
@@ -508,7 +510,7 @@ RString MovieDecoder_FFMpeg::OpenCodec()
168+
if( m_pStreamCodec->codec )
169+
avcodec::avcodec_close( m_pStreamCodec );
170+
171+
- avcodec::AVCodec *pCodec = avcodec::avcodec_find_decoder( m_pStreamCodec->codec_id );
172+
+ const avcodec::AVCodec *pCodec = avcodec::avcodec_find_decoder( m_pStreamCodec->codec_id );
173+
if( pCodec == nullptr )
174+
return ssprintf( "Couldn't find decoder %i", m_pStreamCodec->codec_id );
175+
176+
diff --git a/src/arch/MovieTexture/MovieTexture_FFMpeg.h b/src/arch/MovieTexture/MovieTexture_FFMpeg.h
177+
index c092b765fc2..99f5ffcb1be 100644
178+
--- a/src/arch/MovieTexture/MovieTexture_FFMpeg.h
179+
+++ b/src/arch/MovieTexture/MovieTexture_FFMpeg.h
180+
@@ -13,6 +13,7 @@ namespace avcodec
181+
#include <libavformat/avformat.h>
182+
#include <libswscale/swscale.h>
183+
#include <libavutil/pixdesc.h>
184+
+ #include <libavcodec/avcodec.h>
185+
186+
#if LIBAVCODEC_VERSION_MAJOR >= 57
187+
#define av_free_packet av_packet_unref
188+
189+
EOF
190+
86191
git apply 0001-patch-upstream-for-ARM.patch || error "Applying patch failed"
192+
193+
ffmpeg_version="$(package_latest_version ffmpeg | awk -F'[:.-]' '{print $2 $3}')"
194+
if [ "$ffmpeg_version" -ge 71 ] ; then
195+
git apply 7.1-ffmpeg.patch || error "Applying patch failed"
196+
else
197+
git apply pre-7.1-ffmpeg.patch || error "Applying patch failed"
198+
fi
199+
87200
mkdir build && cd build || error "Could not create or enter build directory"
88201
status "Running cmake"
89202
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_SDL=yes -DWITH_SYSTEM_GLEW=yes -DWITH_SYSTEM_TOMMATH=yes -DWITH_SYSTEM_MAD=yes -DWITH_SYSTEM_ZLIB=yes -DWITH_SYSTEM_JPEG=yes -DWITH_SYSTEM_OGG=yes -DWITH_SYSTEM_FFMPEG=yes -DWITH_SYSTEM_TOMCRYPT=yes -DWITH_FULL_RELEASE=yes -DWITH_CRASH_HANDLER=no -DWITH_NETWORKING=yes -WITH_MINIMAID=no .. || error "Cmake ended with error"

0 commit comments

Comments
 (0)