Skip to content

Commit 049d10e

Browse files
committed
Initial commit
0 parents  commit 049d10e

20 files changed

+618
-0
lines changed

.gitignore

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# -*- mode: gitignore; -*-
2+
*~
3+
\#*\#
4+
/.emacs.desktop
5+
/.emacs.desktop.lock
6+
*.elc
7+
auto-save-list
8+
tramp
9+
.\#*
10+
11+
*/output/
12+
13+
## Ignore Visual Studio temporary files, build results, and
14+
## files generated by popular Visual Studio add-ons.
15+
##
16+
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
17+
18+
# User-specific files
19+
*.rsuser
20+
*.suo
21+
*.user
22+
*.userosscache
23+
*.sln.docstates
24+
25+
# User-specific files (MonoDevelop/Xamarin Studio)
26+
*.userprefs
27+
28+
# Build results
29+
[Dd]ebug/
30+
[Dd]ebugPublic/
31+
[Rr]elease/
32+
[Rr]eleases/
33+
x64/
34+
x86/
35+
[Aa][Rr][Mm]/
36+
[Aa][Rr][Mm]64/
37+
bld/
38+
[Bb]in/
39+
[Oo]bj/
40+
[Ll]og/

.gitmodules

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[submodule "ffmpeg"]
2+
path = ffmpeg
3+
url = https://github.com/FFmpeg/FFmpeg.git
4+
[submodule "chromaprint"]
5+
path = chromaprint
6+
url = https://github.com/acoustid/chromaprint.git

azure-pipelines.yml

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
variables:
2+
majorVersion: '1.5.1'
3+
minorVersion: $[counter('minorVersion', 1)]
4+
fpcalcVersion: '$(majorVersion).$(minorVersion)'
5+
6+
trigger:
7+
branches:
8+
include:
9+
- master
10+
11+
pr:
12+
branches:
13+
include:
14+
- master
15+
16+
stages:
17+
- stage: Setup
18+
displayName: Setup
19+
jobs:
20+
- job:
21+
displayName: Build Variables
22+
pool:
23+
vmImage: 'ubuntu-20.04'
24+
steps:
25+
# Set the build name properly. The 'name' property won't recursively expand so hack here:
26+
- bash: echo "##vso[build.updatebuildnumber]$FPCALCVERSION"
27+
displayName: Set Build Name
28+
29+
- stage: fpcalc
30+
displayName: Build Fpcalc
31+
jobs:
32+
- job: build
33+
strategy:
34+
matrix:
35+
linux-x64:
36+
folder: 'linux-x64'
37+
poolName: 'Azure Pipelines'
38+
imageName: 'ubuntu-20.04'
39+
linux-arm:
40+
folder: 'linux-arm'
41+
poolName: 'Azure Pipelines'
42+
imageName: 'ubuntu-20.04'
43+
linux-arm64:
44+
folder: 'linux-arm64'
45+
poolName: 'Azure Pipelines'
46+
imageName: 'ubuntu-20.04'
47+
pool:
48+
name: $(poolName)
49+
vmImage: $(imageName)
50+
steps:
51+
- checkout: self
52+
submodules: true
53+
fetchDepth: 1
54+
- bash: |
55+
${FOLDER}/build.sh
56+
displayName: Build
57+
- publish: $(folder)/output/chromaprint/bin
58+
artifact: fpcalc-$(folder)
59+
displayName: Publish Fpcalc

chromaprint

Submodule chromaprint added at 5c3be68

common.sh

+182
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
#!/usr/bin/env bash
2+
3+
FFMPEG_VERSION=4.4.1
4+
FFMPEG_TARBALL=ffmpeg-$FFMPEG_VERSION.tar.bz2
5+
FFMPEG_TARBALL_URL=http://ffmpeg.org/releases/$FFMPEG_TARBALL
6+
7+
FFMPEG_CONFIGURE_FLAGS=(
8+
--disable-shared
9+
--enable-static
10+
--enable-pic
11+
12+
--disable-doc
13+
--disable-debug
14+
--disable-avdevice
15+
--disable-swscale
16+
--disable-programs
17+
--enable-rdft
18+
--enable-ffmpeg
19+
--enable-ffprobe
20+
--disable-network
21+
--disable-muxers
22+
--disable-demuxers
23+
--disable-zlib
24+
--disable-bzlib
25+
--disable-iconv
26+
--disable-bsfs
27+
--disable-filters
28+
--disable-parsers
29+
--disable-indevs
30+
--disable-outdevs
31+
--disable-encoders
32+
--disable-decoders
33+
--disable-hwaccels
34+
--disable-nvenc
35+
--disable-xvmc
36+
--disable-videotoolbox
37+
--disable-audiotoolbox
38+
39+
--disable-filters
40+
--enable-filter=aformat
41+
--enable-filter=anull
42+
--enable-filter=atrim
43+
--enable-filter=format
44+
--enable-filter=null
45+
--enable-filter=setpts
46+
--enable-filter=trim
47+
48+
--disable-protocols
49+
--enable-protocol=file
50+
--enable-protocol=pipe
51+
52+
--enable-demuxer=image2
53+
--enable-demuxer=aac
54+
--enable-demuxer=ac3
55+
--enable-demuxer=aiff
56+
--enable-demuxer=ape
57+
--enable-demuxer=asf
58+
--enable-demuxer=au
59+
--enable-demuxer=avi
60+
--enable-demuxer=flac
61+
--enable-demuxer=flv
62+
--enable-demuxer=matroska
63+
--enable-demuxer=mov
64+
--enable-demuxer=m4v
65+
--enable-demuxer=mp3
66+
--enable-demuxer=mpc
67+
--enable-demuxer=mpc8
68+
--enable-demuxer=ogg
69+
--enable-demuxer=pcm_alaw
70+
--enable-demuxer=pcm_mulaw
71+
--enable-demuxer=pcm_f64be
72+
--enable-demuxer=pcm_f64le
73+
--enable-demuxer=pcm_f32be
74+
--enable-demuxer=pcm_f32le
75+
--enable-demuxer=pcm_s32be
76+
--enable-demuxer=pcm_s32le
77+
--enable-demuxer=pcm_s24be
78+
--enable-demuxer=pcm_s24le
79+
--enable-demuxer=pcm_s16be
80+
--enable-demuxer=pcm_s16le
81+
--enable-demuxer=pcm_s8
82+
--enable-demuxer=pcm_u32be
83+
--enable-demuxer=pcm_u32le
84+
--enable-demuxer=pcm_u24be
85+
--enable-demuxer=pcm_u24le
86+
--enable-demuxer=pcm_u16be
87+
--enable-demuxer=pcm_u16le
88+
--enable-demuxer=pcm_u8
89+
--enable-demuxer=rm
90+
--enable-demuxer=shorten
91+
--enable-demuxer=tak
92+
--enable-demuxer=tta
93+
--enable-demuxer=wav
94+
--enable-demuxer=wv
95+
--enable-demuxer=xwma
96+
--enable-demuxer=dsf
97+
98+
--enable-decoder=aac
99+
--enable-decoder=aac_latm
100+
--enable-decoder=ac3
101+
--enable-decoder=alac
102+
--enable-decoder=als
103+
--enable-decoder=ape
104+
--enable-decoder=atrac1
105+
--enable-decoder=atrac3
106+
--enable-decoder=eac3
107+
--enable-decoder=flac
108+
--enable-decoder=gsm
109+
--enable-decoder=gsm_ms
110+
--enable-decoder=mp1
111+
--enable-decoder=mp1float
112+
--enable-decoder=mp2
113+
--enable-decoder=mp2float
114+
--enable-decoder=mp3
115+
--enable-decoder=mp3adu
116+
--enable-decoder=mp3adufloat
117+
--enable-decoder=mp3float
118+
--enable-decoder=mp3on4
119+
--enable-decoder=mp3on4float
120+
--enable-decoder=mpc7
121+
--enable-decoder=mpc8
122+
--enable-decoder=opus
123+
--enable-decoder=ra_144
124+
--enable-decoder=ra_288
125+
--enable-decoder=ralf
126+
--enable-decoder=shorten
127+
--enable-decoder=tak
128+
--enable-decoder=tta
129+
--enable-decoder=vorbis
130+
--enable-decoder=wavpack
131+
--enable-decoder=wmalossless
132+
--enable-decoder=wmapro
133+
--enable-decoder=wmav1
134+
--enable-decoder=wmav2
135+
--enable-decoder=wmavoice
136+
137+
--enable-decoder=pcm_alaw
138+
--enable-decoder=pcm_bluray
139+
--enable-decoder=pcm_dvd
140+
--enable-decoder=pcm_f32be
141+
--enable-decoder=pcm_f32le
142+
--enable-decoder=pcm_f64be
143+
--enable-decoder=pcm_f64le
144+
--enable-decoder=pcm_lxf
145+
--enable-decoder=pcm_mulaw
146+
--enable-decoder=pcm_s8
147+
--enable-decoder=pcm_s8_planar
148+
--enable-decoder=pcm_s16be
149+
--enable-decoder=pcm_s16be_planar
150+
--enable-decoder=pcm_s16le
151+
--enable-decoder=pcm_s16le_planar
152+
--enable-decoder=pcm_s24be
153+
--enable-decoder=pcm_s24daud
154+
--enable-decoder=pcm_s24le
155+
--enable-decoder=pcm_s24le_planar
156+
--enable-decoder=pcm_s32be
157+
--enable-decoder=pcm_s32le
158+
--enable-decoder=pcm_s32le_planar
159+
--enable-decoder=pcm_u8
160+
--enable-decoder=pcm_u16be
161+
--enable-decoder=pcm_u16le
162+
--enable-decoder=pcm_u24be
163+
--enable-decoder=pcm_u24le
164+
--enable-decoder=pcm_u32be
165+
--enable-decoder=pcm_u32le
166+
--enable-decoder=pcm_zork
167+
--enable-decoder=dsd_lsbf
168+
--enable-decoder=dsd_msbf
169+
--enable-decoder=dsd_lsbf_planar
170+
--enable-decoder=dsd_msbf_planar
171+
172+
--enable-parser=aac
173+
--enable-parser=aac_latm
174+
--enable-parser=ac3
175+
--enable-parser=cook
176+
--enable-parser=dca
177+
--enable-parser=flac
178+
--enable-parser=gsm
179+
--enable-parser=mpegaudio
180+
--enable-parser=tak
181+
--enable-parser=vorbis
182+
)

ffmpeg

Submodule ffmpeg added at 7e0d640

linux-arm/Dockerfile

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
FROM ubuntu:20.04
2+
3+
ARG DEBIAN_FRONTEND="noninteractive"
4+
ENV TZ="Etc/UTC" LANG="en_US.UTF-8" LANGUAGE="en_US:en" LC_ALL="en_US.UTF-8"
5+
6+
RUN apt-get update && apt-get install -y \
7+
autoconf \
8+
automake \
9+
build-essential \
10+
cmake \
11+
git-core \
12+
libass-dev \
13+
libfreetype6-dev \
14+
libgnutls28-dev \
15+
libtool \
16+
libvorbis-dev \
17+
meson \
18+
ninja-build \
19+
pkg-config \
20+
texinfo \
21+
wget \
22+
yasm \
23+
zlib1g-dev \
24+
libunistring-dev \
25+
libaom-dev \
26+
nasm \
27+
gcc-arm-linux-gnueabihf \
28+
g++-arm-linux-gnueabihf
29+
30+
RUN mkdir -p /ffmpeg/sources /ffmpeg/bin /ffmpeg/build

linux-arm/build.sh

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
6+
FFMPEG_DIR="${SCRIPT_DIR}/../ffmpeg"
7+
CHROMAPRINT_DIR="${SCRIPT_DIR}/../chromaprint"
8+
OUT_DIR="${SCRIPT_DIR}/output"
9+
10+
mkdir -p $OUT_DIR
11+
12+
docker build -t fpcalc-linux-arm - < ${SCRIPT_DIR}/Dockerfile
13+
14+
cp -v "${SCRIPT_DIR}/../common.sh" "${FFMPEG_DIR}"
15+
cp -v "${SCRIPT_DIR}/compile-ffmpeg.sh" "${FFMPEG_DIR}"
16+
17+
docker run -v "${FFMPEG_DIR}:/ffmpeg/sources" -v "${OUT_DIR}/ffmpeg:/ffmpeg/build" fpcalc-linux-arm /ffmpeg/sources/compile-ffmpeg.sh
18+
19+
rm "${FFMPEG_DIR}/compile-ffmpeg.sh"
20+
rm "${FFMPEG_DIR}/common.sh"
21+
22+
cp -v "${SCRIPT_DIR}/compile-fpcalc.sh" "${CHROMAPRINT_DIR}"
23+
cp -v "${SCRIPT_DIR}/toolchain.cmake" "${CHROMAPRINT_DIR}"
24+
25+
docker run -v "${CHROMAPRINT_DIR}:/chromaprint/sources" -v "${OUT_DIR}/ffmpeg:/ffmpeg/build" -v "${OUT_DIR}/chromaprint:/chromaprint/build" fpcalc-linux-arm /chromaprint/sources/compile-fpcalc.sh
26+
27+
rm "${CHROMAPRINT_DIR}/compile-fpcalc.sh"
28+
rm "${CHROMAPRINT_DIR}/toolchain.cmake"

linux-arm/compile-ffmpeg.sh

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
6+
pushd $SCRIPT_DIR
7+
8+
source common.sh
9+
10+
FFMPEG_CONFIGURE_FLAGS+=(
11+
--prefix=/ffmpeg/build
12+
--enable-cross-compile
13+
--cross-prefix=arm-linux-gnueabihf-
14+
--target-os=linux
15+
--arch=armhf
16+
)
17+
18+
./configure "${FFMPEG_CONFIGURE_FLAGS[@]}"
19+
20+
make -j6
21+
make install
22+
23+
popd

0 commit comments

Comments
 (0)