|
1 | 1 | #!/bin/bash |
2 | 2 |
|
3 | 3 | 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 |
5 | 5 |
|
6 | 6 | status "Cloning repo" |
7 | 7 | git_clone https://github.com/stepmania/stepmania.git || error "Could not clone repo" |
8 | 8 | 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" |
10 | 10 |
|
11 | 11 | # add patch |
12 | 12 | # 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 |
83 | 83 |
|
84 | 84 | EOF |
85 | 85 |
|
| 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 | + |
86 | 191 | 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 | + |
87 | 200 | mkdir build && cd build || error "Could not create or enter build directory" |
88 | 201 | status "Running cmake" |
89 | 202 | 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