Skip to content
This repository was archived by the owner on Sep 5, 2024. It is now read-only.

Commit 59b7fde

Browse files
author
Jerome Wu
committed
Support pthread
1 parent d8638c0 commit 59b7fde

File tree

4 files changed

+45
-28
lines changed

4 files changed

+45
-28
lines changed

build-js.sh

Lines changed: 35 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@ NPROC=$(grep -c ^processor /proc/cpuinfo)
66
ROOT_DIR=$PWD
77
BUILD_DIR=$ROOT_DIR/build
88
EM_TOOLCHAIN_FILE=/emsdk_portable/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake
9+
PTHREAD_FLAGS='-s USE_PTHREADS=1'
10+
export CFLAGS=$PTHREAD_FLAGS
11+
export CPPFLAGS=$PTHREAD_FLAGS
12+
export LDFLAGS=$PTHREAD_FLAGS
13+
14+
clean_up() {
15+
rm -rf $BUILD_DIR
16+
}
917

1018
build_zlib() {
1119
cd third_party/zlib
@@ -27,33 +35,17 @@ build_x264() {
2735
--enable-static \
2836
--disable-cli \
2937
--disable-asm \
30-
--disable-thread \
3138
--host=i686-linux \
3239
--prefix=$BUILD_DIR
3340
emmake make clean
3441
emmake make install-lib-static -j${NPROC}
3542
cd ${ROOT_DIR}
3643
}
3744

38-
build_libwebp() {
39-
cd third_party/libwebp
40-
rm -rf build
41-
mkdir build
42-
cd build
43-
emmake cmake .. \
44-
-DCMAKE_INSTALL_PREFIX=${BUILD_DIR} \
45-
-DCMAKE_TOOLCHAIN_FILE=${EM_TOOLCHAIN_FILE} \
46-
-DBUILD_SHARED_LIBS=OFF \
47-
-DWEBP_BUILD_WEBP_JS=ON
48-
emmake make clean
49-
emmake make install -j${NPROC}
50-
cd ${ROOT_DIR}
51-
}
52-
5345
build_libvpx() {
5446
cd third_party/libvpx
55-
export AS=emar
56-
export STRIP=llvm-strip
47+
AS=emar \
48+
STRIP=llvm-strip \
5749
emconfigure ./configure \
5850
--disable-examples \
5951
--disable-tools \
@@ -70,6 +62,7 @@ build_libmp3lame() {
7062
cd third_party/libmp3lame
7163
emconfigure ./configure \
7264
--enable-shared=no \
65+
--host=i686-linux \
7366
--prefix=${BUILD_DIR}
7467
emmake make clean
7568
emmake make install -j${NPROC}
@@ -83,7 +76,7 @@ configure_ffmpeg() {
8376
--enable-libx264 \
8477
--enable-libvpx \
8578
--enable-libmp3lame \
86-
--disable-pthreads \
79+
--enable-cross-compile \
8780
--disable-x86asm \
8881
--disable-inline-asm \
8982
--disable-doc \
@@ -119,19 +112,21 @@ build_ffmpegjs() {
119112
-o $2 fftools/ffmpeg_opt.c fftools/ffmpeg_filter.c fftools/ffmpeg_hw.c fftools/cmdutils.c fftools/ffmpeg.c \
120113
-lavdevice -lavfilter -lavformat -lavcodec -lswresample -lswscale -lavutil -lpostproc -lm -lx264 -lz -lvpx -lmp3lame \
121114
-Wno-deprecated-declarations -Wno-pointer-sign -Wno-implicit-int-float-conversion -Wno-switch -Wno-parentheses \
122-
--closure 1 \
123115
--pre-js javascript/prepend.js \
124116
--post-js javascript/post.js \
125117
-s USE_SDL=2 \
126-
-s MODULARIZE=1 \
118+
$PTHREAD_FLAGS \
119+
-s INVOKE_RUN=0 \
120+
-s PTHREAD_POOL_SIZE=8 \
121+
-s PROXY_TO_PTHREAD=1 \
127122
-s SINGLE_FILE=$1 \
128-
-s EXPORTED_FUNCTIONS="[_ffmpeg]" \
123+
-s EXPORTED_FUNCTIONS="[_main, _proxy_main]" \
129124
-s EXTRA_EXPORTED_RUNTIME_METHODS="[cwrap, FS, getValue, setValue]" \
130-
-s TOTAL_MEMORY=33554432 \
131-
-s ALLOW_MEMORY_GROWTH=1
125+
-s TOTAL_MEMORY=1065353216
132126
}
133127

134128
main() {
129+
clean_up
135130
build_zlib
136131
build_x264
137132
build_libvpx
@@ -143,3 +138,19 @@ main() {
143138
}
144139

145140
main "$@"
141+
142+
#build_libwebp() {
143+
# cd third_party/libwebp
144+
# rm -rf build
145+
# mkdir build
146+
# cd build
147+
# emmake cmake .. \
148+
# -DCMAKE_INSTALL_PREFIX=${BUILD_DIR} \
149+
# -DCMAKE_TOOLCHAIN_FILE=${EM_TOOLCHAIN_FILE} \
150+
# -DBUILD_SHARED_LIBS=OFF \
151+
# -DWEBP_BUILD_WEBP_JS=ON
152+
# emmake make clean
153+
# emmake make install -j${NPROC}
154+
# cd ${ROOT_DIR}
155+
#}
156+

fftools/cmdutils.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,13 @@ void exit_program(int ret)
138138
if (program_exit)
139139
program_exit(ret);
140140

141-
// exit(ret);
141+
/*
142+
* This is a work around to detect the end of the ffmpeg command
143+
* Not ideal, but it works.
144+
*/
145+
printf("FFMPEG_END\n");
146+
147+
exit(ret);
142148
}
143149

144150
double parse_number_or_die(const char *context, const char *numstr, int type,

fftools/ffmpeg.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4853,7 +4853,7 @@ static void init_variables() {
48534853
ffmpeg_exited = 0;
48544854
}
48554855

4856-
int ffmpeg(int argc, char **argv)
4856+
int main(int argc, char **argv)
48574857
{
48584858
int i, ret;
48594859
BenchmarkTimeStamps ti;

javascript/prepend.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
var logger = function(){}
22

33
Module['setLogger'] = function(_logger) { logger = _logger; };
4-
Module['print'] = function(message) { logger(message, 'stdout'); };
5-
Module['printErr'] = function(message) { logger(message, 'stderr'); };
4+
Module['print'] = function(message) { logger({ message, type: 'ffmpeg-stdout' }); };
5+
Module['printErr'] = function(message) { logger({ message, type: 'ffmpeg-stderr' }); };
66
/*
77
Module['preRun'] = [
88
function() {

0 commit comments

Comments
 (0)