From 03083be56d2c3847e420ada840a574666426db04 Mon Sep 17 00:00:00 2001 From: xwu2git Date: Fri, 25 Jan 2019 09:59:35 -0800 Subject: [PATCH] first release --- .gitignore | 4 + CMakeLists.txt | 14 + LICENSE | 29 ++ README.md | 121 ++++++ VCA2/CMakeLists.txt | 1 + VCA2/README.md | 14 + VCA2/centos-7.4/CMakeLists.txt | 1 + VCA2/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt | 4 + VCA2/centos-7.4/ffmpeg+gst+dev/Dockerfile | 400 ++++++++++++++++++ VCA2/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 | 44 ++ VCA2/centos-7.4/ffmpeg+gst+dev/build.sh | 7 + VCA2/centos-7.4/ffmpeg+gst+dev/shell.sh | 6 + VCA2/centos-7.4/ffmpeg/.dockerignore | 4 + VCA2/centos-7.4/ffmpeg/CMakeLists.txt | 3 + VCA2/centos-7.4/ffmpeg/Dockerfile | 276 ++++++++++++ VCA2/centos-7.4/ffmpeg/Dockerfile.m4 | 35 ++ VCA2/centos-7.4/ffmpeg/build.sh | 7 + VCA2/centos-7.4/ffmpeg/shell.sh | 6 + VCA2/centos-7.4/gst/CMakeLists.txt | 3 + VCA2/centos-7.4/gst/Dockerfile | 333 +++++++++++++++ VCA2/centos-7.4/gst/Dockerfile.m4 | 40 ++ VCA2/centos-7.4/gst/build.sh | 7 + VCA2/centos-7.4/gst/shell.sh | 6 + VCA2/centos-7.4/nginx+rtmp/.dockerignore | 4 + VCA2/centos-7.4/nginx+rtmp/CMakeLists.txt | 4 + VCA2/centos-7.4/nginx+rtmp/Dockerfile | 70 +++ VCA2/centos-7.4/nginx+rtmp/Dockerfile.m4 | 19 + VCA2/centos-7.4/nginx+rtmp/build.sh | 7 + VCA2/centos-7.4/nginx+rtmp/nginx.conf | 94 ++++ VCA2/centos-7.4/nginx+rtmp/nginx.conf.m4 | 1 + VCA2/centos-7.4/nginx+rtmp/shell.sh | 6 + VCA2/centos-7.5/CMakeLists.txt | 1 + VCA2/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt | 4 + VCA2/centos-7.5/ffmpeg+gst+dev/Dockerfile | 400 ++++++++++++++++++ VCA2/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 | 44 ++ VCA2/centos-7.5/ffmpeg+gst+dev/build.sh | 7 + VCA2/centos-7.5/ffmpeg+gst+dev/shell.sh | 6 + VCA2/centos-7.5/ffmpeg/CMakeLists.txt | 3 + VCA2/centos-7.5/ffmpeg/Dockerfile | 276 ++++++++++++ VCA2/centos-7.5/ffmpeg/Dockerfile.m4 | 35 ++ VCA2/centos-7.5/ffmpeg/build.sh | 7 + VCA2/centos-7.5/ffmpeg/shell.sh | 6 + VCA2/centos-7.5/gst/CMakeLists.txt | 3 + VCA2/centos-7.5/gst/Dockerfile | 333 +++++++++++++++ VCA2/centos-7.5/gst/Dockerfile.m4 | 40 ++ VCA2/centos-7.5/gst/build.sh | 7 + VCA2/centos-7.5/gst/shell.sh | 6 + VCA2/centos-7.5/nginx+rtmp/.dockerignore | 4 + VCA2/centos-7.5/nginx+rtmp/CMakeLists.txt | 4 + VCA2/centos-7.5/nginx+rtmp/Dockerfile | 70 +++ VCA2/centos-7.5/nginx+rtmp/Dockerfile.m4 | 19 + VCA2/centos-7.5/nginx+rtmp/build.sh | 7 + VCA2/centos-7.5/nginx+rtmp/nginx.conf | 94 ++++ VCA2/centos-7.5/nginx+rtmp/nginx.conf.m4 | 1 + VCA2/centos-7.5/nginx+rtmp/shell.sh | 6 + VCA2/centos-7.6/CMakeLists.txt | 1 + VCA2/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt | 4 + VCA2/centos-7.6/ffmpeg+gst+dev/Dockerfile | 400 ++++++++++++++++++ VCA2/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 | 44 ++ VCA2/centos-7.6/ffmpeg+gst+dev/build.sh | 7 + VCA2/centos-7.6/ffmpeg+gst+dev/shell.sh | 6 + VCA2/centos-7.6/ffmpeg/CMakeLists.txt | 3 + VCA2/centos-7.6/ffmpeg/Dockerfile | 276 ++++++++++++ VCA2/centos-7.6/ffmpeg/Dockerfile.m4 | 35 ++ VCA2/centos-7.6/ffmpeg/build.sh | 7 + VCA2/centos-7.6/ffmpeg/shell.sh | 6 + VCA2/centos-7.6/gst/CMakeLists.txt | 3 + VCA2/centos-7.6/gst/Dockerfile | 333 +++++++++++++++ VCA2/centos-7.6/gst/Dockerfile.m4 | 40 ++ VCA2/centos-7.6/gst/build.sh | 7 + VCA2/centos-7.6/gst/shell.sh | 6 + VCA2/centos-7.6/nginx+rtmp/.dockerignore | 4 + VCA2/centos-7.6/nginx+rtmp/CMakeLists.txt | 4 + VCA2/centos-7.6/nginx+rtmp/Dockerfile | 70 +++ VCA2/centos-7.6/nginx+rtmp/Dockerfile.m4 | 19 + VCA2/centos-7.6/nginx+rtmp/build.sh | 7 + VCA2/centos-7.6/nginx+rtmp/nginx.conf | 94 ++++ VCA2/centos-7.6/nginx+rtmp/nginx.conf.m4 | 1 + VCA2/centos-7.6/nginx+rtmp/shell.sh | 6 + VCA2/ubuntu-16.04/CMakeLists.txt | 1 + .../ffmpeg+gst+dev/CMakeLists.txt | 4 + VCA2/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile | 369 ++++++++++++++++ .../ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 | 42 ++ VCA2/ubuntu-16.04/ffmpeg+gst+dev/build.sh | 7 + VCA2/ubuntu-16.04/ffmpeg+gst+dev/shell.sh | 6 + VCA2/ubuntu-16.04/ffmpeg/.dockerignore | 4 + VCA2/ubuntu-16.04/ffmpeg/CMakeLists.txt | 3 + VCA2/ubuntu-16.04/ffmpeg/Dockerfile | 255 +++++++++++ VCA2/ubuntu-16.04/ffmpeg/Dockerfile.m4 | 33 ++ VCA2/ubuntu-16.04/ffmpeg/build.sh | 7 + VCA2/ubuntu-16.04/ffmpeg/shell.sh | 6 + VCA2/ubuntu-16.04/gst/CMakeLists.txt | 3 + VCA2/ubuntu-16.04/gst/Dockerfile | 302 +++++++++++++ VCA2/ubuntu-16.04/gst/Dockerfile.m4 | 38 ++ VCA2/ubuntu-16.04/gst/build.sh | 7 + VCA2/ubuntu-16.04/gst/shell.sh | 6 + VCA2/ubuntu-16.04/nginx+rtmp/.dockerignore | 4 + VCA2/ubuntu-16.04/nginx+rtmp/CMakeLists.txt | 4 + VCA2/ubuntu-16.04/nginx+rtmp/Dockerfile | 69 +++ VCA2/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 | 19 + VCA2/ubuntu-16.04/nginx+rtmp/build.sh | 7 + VCA2/ubuntu-16.04/nginx+rtmp/nginx.conf | 94 ++++ VCA2/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 | 1 + VCA2/ubuntu-16.04/nginx+rtmp/shell.sh | 6 + VCA2/ubuntu-18.04/CMakeLists.txt | 1 + .../ffmpeg+gst+dev/CMakeLists.txt | 4 + VCA2/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile | 371 ++++++++++++++++ .../ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 | 42 ++ VCA2/ubuntu-18.04/ffmpeg+gst+dev/build.sh | 7 + VCA2/ubuntu-18.04/ffmpeg+gst+dev/shell.sh | 6 + VCA2/ubuntu-18.04/ffmpeg/CMakeLists.txt | 3 + VCA2/ubuntu-18.04/ffmpeg/Dockerfile | 256 +++++++++++ VCA2/ubuntu-18.04/ffmpeg/Dockerfile.m4 | 33 ++ VCA2/ubuntu-18.04/ffmpeg/build.sh | 7 + VCA2/ubuntu-18.04/ffmpeg/shell.sh | 6 + VCA2/ubuntu-18.04/gst/CMakeLists.txt | 3 + VCA2/ubuntu-18.04/gst/Dockerfile | 304 +++++++++++++ VCA2/ubuntu-18.04/gst/Dockerfile.m4 | 38 ++ VCA2/ubuntu-18.04/gst/build.sh | 7 + VCA2/ubuntu-18.04/gst/shell.sh | 6 + VCA2/ubuntu-18.04/nginx+rtmp/.dockerignore | 4 + VCA2/ubuntu-18.04/nginx+rtmp/CMakeLists.txt | 4 + VCA2/ubuntu-18.04/nginx+rtmp/Dockerfile | 70 +++ VCA2/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 | 19 + VCA2/ubuntu-18.04/nginx+rtmp/build.sh | 7 + VCA2/ubuntu-18.04/nginx+rtmp/nginx.conf | 94 ++++ VCA2/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 | 1 + VCA2/ubuntu-18.04/nginx+rtmp/shell.sh | 6 + Xeon/CMakeLists.txt | 1 + Xeon/README.md | 6 + Xeon/centos-7.4/CMakeLists.txt | 1 + Xeon/centos-7.4/dldt+ffmpeg/CMakeLists.txt | 3 + Xeon/centos-7.4/dldt+ffmpeg/Dockerfile | 245 +++++++++++ Xeon/centos-7.4/dldt+ffmpeg/Dockerfile.m4 | 31 ++ Xeon/centos-7.4/dldt+ffmpeg/build.sh | 7 + Xeon/centos-7.4/dldt+ffmpeg/shell.sh | 6 + Xeon/centos-7.4/dldt+gst/CMakeLists.txt | 3 + Xeon/centos-7.4/dldt+gst/Dockerfile | 290 +++++++++++++ Xeon/centos-7.4/dldt+gst/Dockerfile.m4 | 35 ++ Xeon/centos-7.4/dldt+gst/build.sh | 7 + Xeon/centos-7.4/dldt+gst/shell.sh | 6 + Xeon/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt | 4 + Xeon/centos-7.4/ffmpeg+gst+dev/Dockerfile | 310 ++++++++++++++ Xeon/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 | 37 ++ Xeon/centos-7.4/ffmpeg+gst+dev/build.sh | 7 + Xeon/centos-7.4/ffmpeg+gst+dev/shell.sh | 6 + Xeon/centos-7.4/ffmpeg/CMakeLists.txt | 3 + Xeon/centos-7.4/ffmpeg/Dockerfile | 210 +++++++++ Xeon/centos-7.4/ffmpeg/Dockerfile.m4 | 30 ++ Xeon/centos-7.4/ffmpeg/build.sh | 7 + Xeon/centos-7.4/ffmpeg/shell.sh | 6 + Xeon/centos-7.4/gst/CMakeLists.txt | 3 + Xeon/centos-7.4/gst/Dockerfile | 255 +++++++++++ Xeon/centos-7.4/gst/Dockerfile.m4 | 34 ++ Xeon/centos-7.4/gst/build.sh | 7 + Xeon/centos-7.4/gst/shell.sh | 6 + Xeon/centos-7.4/nginx+rtmp/CMakeLists.txt | 4 + Xeon/centos-7.4/nginx+rtmp/Dockerfile | 70 +++ Xeon/centos-7.4/nginx+rtmp/Dockerfile.m4 | 19 + Xeon/centos-7.4/nginx+rtmp/build.sh | 7 + Xeon/centos-7.4/nginx+rtmp/nginx.conf | 94 ++++ Xeon/centos-7.4/nginx+rtmp/nginx.conf.m4 | 1 + Xeon/centos-7.4/nginx+rtmp/shell.sh | 6 + Xeon/centos-7.5/CMakeLists.txt | 1 + Xeon/centos-7.5/dldt+ffmpeg/.dockerignore | 4 + Xeon/centos-7.5/dldt+ffmpeg/CMakeLists.txt | 3 + Xeon/centos-7.5/dldt+ffmpeg/Dockerfile | 245 +++++++++++ Xeon/centos-7.5/dldt+ffmpeg/Dockerfile.m4 | 31 ++ Xeon/centos-7.5/dldt+ffmpeg/build.sh | 7 + Xeon/centos-7.5/dldt+ffmpeg/shell.sh | 6 + Xeon/centos-7.5/dldt+gst/.dockerignore | 4 + Xeon/centos-7.5/dldt+gst/CMakeLists.txt | 3 + Xeon/centos-7.5/dldt+gst/Dockerfile | 290 +++++++++++++ Xeon/centos-7.5/dldt+gst/Dockerfile.m4 | 35 ++ Xeon/centos-7.5/dldt+gst/build.sh | 7 + Xeon/centos-7.5/dldt+gst/shell.sh | 6 + Xeon/centos-7.5/ffmpeg+gst+dev/.dockerignore | 4 + Xeon/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt | 4 + Xeon/centos-7.5/ffmpeg+gst+dev/Dockerfile | 310 ++++++++++++++ Xeon/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 | 37 ++ Xeon/centos-7.5/ffmpeg+gst+dev/build.sh | 7 + Xeon/centos-7.5/ffmpeg+gst+dev/shell.sh | 6 + Xeon/centos-7.5/ffmpeg/.dockerignore | 4 + Xeon/centos-7.5/ffmpeg/CMakeLists.txt | 3 + Xeon/centos-7.5/ffmpeg/Dockerfile | 210 +++++++++ Xeon/centos-7.5/ffmpeg/Dockerfile.m4 | 30 ++ Xeon/centos-7.5/ffmpeg/build.sh | 7 + Xeon/centos-7.5/ffmpeg/shell.sh | 6 + Xeon/centos-7.5/gst/.dockerignore | 4 + Xeon/centos-7.5/gst/CMakeLists.txt | 3 + Xeon/centos-7.5/gst/Dockerfile | 255 +++++++++++ Xeon/centos-7.5/gst/Dockerfile.m4 | 34 ++ Xeon/centos-7.5/gst/build.sh | 7 + Xeon/centos-7.5/gst/shell.sh | 6 + Xeon/centos-7.5/nginx+rtmp/.dockerignore | 4 + Xeon/centos-7.5/nginx+rtmp/CMakeLists.txt | 4 + Xeon/centos-7.5/nginx+rtmp/Dockerfile | 70 +++ Xeon/centos-7.5/nginx+rtmp/Dockerfile.m4 | 19 + Xeon/centos-7.5/nginx+rtmp/build.sh | 7 + Xeon/centos-7.5/nginx+rtmp/nginx.conf | 94 ++++ Xeon/centos-7.5/nginx+rtmp/nginx.conf.m4 | 1 + Xeon/centos-7.5/nginx+rtmp/shell.sh | 6 + Xeon/centos-7.6/CMakeLists.txt | 1 + Xeon/centos-7.6/dldt+ffmpeg/.dockerignore | 4 + Xeon/centos-7.6/dldt+ffmpeg/CMakeLists.txt | 3 + Xeon/centos-7.6/dldt+ffmpeg/Dockerfile | 245 +++++++++++ Xeon/centos-7.6/dldt+ffmpeg/Dockerfile.m4 | 31 ++ Xeon/centos-7.6/dldt+ffmpeg/build.sh | 7 + Xeon/centos-7.6/dldt+ffmpeg/shell.sh | 6 + Xeon/centos-7.6/dldt+gst/.dockerignore | 4 + Xeon/centos-7.6/dldt+gst/CMakeLists.txt | 3 + Xeon/centos-7.6/dldt+gst/Dockerfile | 290 +++++++++++++ Xeon/centos-7.6/dldt+gst/Dockerfile.m4 | 35 ++ Xeon/centos-7.6/dldt+gst/build.sh | 7 + Xeon/centos-7.6/dldt+gst/shell.sh | 6 + Xeon/centos-7.6/ffmpeg+gst+dev/.dockerignore | 4 + Xeon/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt | 4 + Xeon/centos-7.6/ffmpeg+gst+dev/Dockerfile | 310 ++++++++++++++ Xeon/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 | 37 ++ Xeon/centos-7.6/ffmpeg+gst+dev/build.sh | 7 + Xeon/centos-7.6/ffmpeg+gst+dev/shell.sh | 6 + Xeon/centos-7.6/ffmpeg/.dockerignore | 4 + Xeon/centos-7.6/ffmpeg/CMakeLists.txt | 3 + Xeon/centos-7.6/ffmpeg/Dockerfile | 210 +++++++++ Xeon/centos-7.6/ffmpeg/Dockerfile.m4 | 30 ++ Xeon/centos-7.6/ffmpeg/build.sh | 7 + Xeon/centos-7.6/ffmpeg/shell.sh | 6 + Xeon/centos-7.6/gst/.dockerignore | 4 + Xeon/centos-7.6/gst/CMakeLists.txt | 3 + Xeon/centos-7.6/gst/Dockerfile | 255 +++++++++++ Xeon/centos-7.6/gst/Dockerfile.m4 | 34 ++ Xeon/centos-7.6/gst/build.sh | 7 + Xeon/centos-7.6/gst/shell.sh | 6 + Xeon/centos-7.6/nginx+rtmp/.dockerignore | 4 + Xeon/centos-7.6/nginx+rtmp/CMakeLists.txt | 4 + Xeon/centos-7.6/nginx+rtmp/Dockerfile | 70 +++ Xeon/centos-7.6/nginx+rtmp/Dockerfile.m4 | 19 + Xeon/centos-7.6/nginx+rtmp/build.sh | 7 + Xeon/centos-7.6/nginx+rtmp/nginx.conf | 94 ++++ Xeon/centos-7.6/nginx+rtmp/nginx.conf.m4 | 1 + Xeon/centos-7.6/nginx+rtmp/shell.sh | 6 + Xeon/ubuntu-16.04/CMakeLists.txt | 1 + Xeon/ubuntu-16.04/dldt+ffmpeg/.dockerignore | 4 + Xeon/ubuntu-16.04/dldt+ffmpeg/CMakeLists.txt | 3 + Xeon/ubuntu-16.04/dldt+ffmpeg/Dockerfile | 239 +++++++++++ Xeon/ubuntu-16.04/dldt+ffmpeg/Dockerfile.m4 | 31 ++ Xeon/ubuntu-16.04/dldt+ffmpeg/build.sh | 7 + Xeon/ubuntu-16.04/dldt+ffmpeg/shell.sh | 6 + Xeon/ubuntu-16.04/dldt+gst/.dockerignore | 4 + Xeon/ubuntu-16.04/dldt+gst/CMakeLists.txt | 3 + Xeon/ubuntu-16.04/dldt+gst/Dockerfile | 284 +++++++++++++ Xeon/ubuntu-16.04/dldt+gst/Dockerfile.m4 | 35 ++ Xeon/ubuntu-16.04/dldt+gst/build.sh | 7 + Xeon/ubuntu-16.04/dldt+gst/shell.sh | 6 + .../ubuntu-16.04/ffmpeg+gst+dev/.dockerignore | 4 + .../ffmpeg+gst+dev/CMakeLists.txt | 4 + Xeon/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile | 304 +++++++++++++ .../ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 | 37 ++ Xeon/ubuntu-16.04/ffmpeg+gst+dev/build.sh | 7 + Xeon/ubuntu-16.04/ffmpeg+gst+dev/shell.sh | 6 + Xeon/ubuntu-16.04/ffmpeg/.dockerignore | 4 + Xeon/ubuntu-16.04/ffmpeg/CMakeLists.txt | 3 + Xeon/ubuntu-16.04/ffmpeg/Dockerfile | 204 +++++++++ Xeon/ubuntu-16.04/ffmpeg/Dockerfile.m4 | 30 ++ Xeon/ubuntu-16.04/ffmpeg/build.sh | 7 + Xeon/ubuntu-16.04/ffmpeg/shell.sh | 6 + Xeon/ubuntu-16.04/gst/.dockerignore | 4 + Xeon/ubuntu-16.04/gst/CMakeLists.txt | 3 + Xeon/ubuntu-16.04/gst/Dockerfile | 249 +++++++++++ Xeon/ubuntu-16.04/gst/Dockerfile.m4 | 34 ++ Xeon/ubuntu-16.04/gst/build.sh | 7 + Xeon/ubuntu-16.04/gst/shell.sh | 6 + Xeon/ubuntu-16.04/nginx+rtmp/.dockerignore | 4 + Xeon/ubuntu-16.04/nginx+rtmp/CMakeLists.txt | 4 + Xeon/ubuntu-16.04/nginx+rtmp/Dockerfile | 69 +++ Xeon/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 | 19 + Xeon/ubuntu-16.04/nginx+rtmp/build.sh | 7 + Xeon/ubuntu-16.04/nginx+rtmp/nginx.conf | 94 ++++ Xeon/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 | 1 + Xeon/ubuntu-16.04/nginx+rtmp/shell.sh | 6 + Xeon/ubuntu-18.04/CMakeLists.txt | 1 + Xeon/ubuntu-18.04/dldt+ffmpeg/.dockerignore | 4 + Xeon/ubuntu-18.04/dldt+ffmpeg/CMakeLists.txt | 3 + Xeon/ubuntu-18.04/dldt+ffmpeg/Dockerfile | 240 +++++++++++ Xeon/ubuntu-18.04/dldt+ffmpeg/Dockerfile.m4 | 31 ++ Xeon/ubuntu-18.04/dldt+ffmpeg/build.sh | 7 + Xeon/ubuntu-18.04/dldt+ffmpeg/shell.sh | 6 + Xeon/ubuntu-18.04/dldt+gst/.dockerignore | 4 + Xeon/ubuntu-18.04/dldt+gst/CMakeLists.txt | 3 + Xeon/ubuntu-18.04/dldt+gst/Dockerfile | 286 +++++++++++++ Xeon/ubuntu-18.04/dldt+gst/Dockerfile.m4 | 35 ++ Xeon/ubuntu-18.04/dldt+gst/build.sh | 7 + Xeon/ubuntu-18.04/dldt+gst/shell.sh | 6 + .../ubuntu-18.04/ffmpeg+gst+dev/.dockerignore | 4 + .../ffmpeg+gst+dev/CMakeLists.txt | 4 + Xeon/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile | 306 ++++++++++++++ .../ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 | 37 ++ Xeon/ubuntu-18.04/ffmpeg+gst+dev/build.sh | 7 + Xeon/ubuntu-18.04/ffmpeg+gst+dev/shell.sh | 6 + Xeon/ubuntu-18.04/ffmpeg/.dockerignore | 4 + Xeon/ubuntu-18.04/ffmpeg/CMakeLists.txt | 3 + Xeon/ubuntu-18.04/ffmpeg/Dockerfile | 205 +++++++++ Xeon/ubuntu-18.04/ffmpeg/Dockerfile.m4 | 30 ++ Xeon/ubuntu-18.04/ffmpeg/build.sh | 7 + Xeon/ubuntu-18.04/ffmpeg/shell.sh | 6 + Xeon/ubuntu-18.04/gst/.dockerignore | 4 + Xeon/ubuntu-18.04/gst/CMakeLists.txt | 3 + Xeon/ubuntu-18.04/gst/Dockerfile | 251 +++++++++++ Xeon/ubuntu-18.04/gst/Dockerfile.m4 | 34 ++ Xeon/ubuntu-18.04/gst/build.sh | 7 + Xeon/ubuntu-18.04/gst/shell.sh | 6 + Xeon/ubuntu-18.04/nginx+rtmp/.dockerignore | 4 + Xeon/ubuntu-18.04/nginx+rtmp/CMakeLists.txt | 4 + Xeon/ubuntu-18.04/nginx+rtmp/Dockerfile | 70 +++ Xeon/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 | 19 + Xeon/ubuntu-18.04/nginx+rtmp/build.sh | 7 + Xeon/ubuntu-18.04/nginx+rtmp/nginx.conf | 94 ++++ Xeon/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 | 1 + Xeon/ubuntu-18.04/nginx+rtmp/shell.sh | 6 + XeonE3/CMakeLists.txt | 1 + XeonE3/README.md | 26 ++ XeonE3/centos-7.4/CMakeLists.txt | 1 + .../centos-7.4/ffmpeg+gst+dev/CMakeLists.txt | 4 + XeonE3/centos-7.4/ffmpeg+gst+dev/Dockerfile | 400 ++++++++++++++++++ .../centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 | 44 ++ XeonE3/centos-7.4/ffmpeg+gst+dev/build.sh | 7 + XeonE3/centos-7.4/ffmpeg+gst+dev/shell.sh | 6 + XeonE3/centos-7.4/ffmpeg/.dockerignore | 4 + XeonE3/centos-7.4/ffmpeg/CMakeLists.txt | 3 + XeonE3/centos-7.4/ffmpeg/Dockerfile | 276 ++++++++++++ XeonE3/centos-7.4/ffmpeg/Dockerfile.m4 | 35 ++ XeonE3/centos-7.4/ffmpeg/build.sh | 7 + XeonE3/centos-7.4/ffmpeg/shell.sh | 6 + XeonE3/centos-7.4/gst/CMakeLists.txt | 3 + XeonE3/centos-7.4/gst/Dockerfile | 333 +++++++++++++++ XeonE3/centos-7.4/gst/Dockerfile.m4 | 40 ++ XeonE3/centos-7.4/gst/build.sh | 7 + XeonE3/centos-7.4/gst/shell.sh | 6 + XeonE3/centos-7.4/nginx+rtmp/.dockerignore | 4 + XeonE3/centos-7.4/nginx+rtmp/CMakeLists.txt | 4 + XeonE3/centos-7.4/nginx+rtmp/Dockerfile | 70 +++ XeonE3/centos-7.4/nginx+rtmp/Dockerfile.m4 | 19 + XeonE3/centos-7.4/nginx+rtmp/build.sh | 7 + XeonE3/centos-7.4/nginx+rtmp/nginx.conf | 94 ++++ XeonE3/centos-7.4/nginx+rtmp/nginx.conf.m4 | 1 + XeonE3/centos-7.4/nginx+rtmp/shell.sh | 6 + XeonE3/centos-7.5/CMakeLists.txt | 1 + .../centos-7.5/ffmpeg+gst+dev/CMakeLists.txt | 4 + XeonE3/centos-7.5/ffmpeg+gst+dev/Dockerfile | 400 ++++++++++++++++++ .../centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 | 44 ++ XeonE3/centos-7.5/ffmpeg+gst+dev/build.sh | 7 + XeonE3/centos-7.5/ffmpeg+gst+dev/shell.sh | 6 + XeonE3/centos-7.5/ffmpeg/.dockerignore | 4 + XeonE3/centos-7.5/ffmpeg/CMakeLists.txt | 3 + XeonE3/centos-7.5/ffmpeg/Dockerfile | 276 ++++++++++++ XeonE3/centos-7.5/ffmpeg/Dockerfile.m4 | 35 ++ XeonE3/centos-7.5/ffmpeg/build.sh | 7 + XeonE3/centos-7.5/ffmpeg/shell.sh | 6 + XeonE3/centos-7.5/gst/CMakeLists.txt | 3 + XeonE3/centos-7.5/gst/Dockerfile | 333 +++++++++++++++ XeonE3/centos-7.5/gst/Dockerfile.m4 | 40 ++ XeonE3/centos-7.5/gst/build.sh | 7 + XeonE3/centos-7.5/gst/shell.sh | 6 + XeonE3/centos-7.5/nginx+rtmp/.dockerignore | 4 + XeonE3/centos-7.5/nginx+rtmp/CMakeLists.txt | 4 + XeonE3/centos-7.5/nginx+rtmp/Dockerfile | 70 +++ XeonE3/centos-7.5/nginx+rtmp/Dockerfile.m4 | 19 + XeonE3/centos-7.5/nginx+rtmp/build.sh | 7 + XeonE3/centos-7.5/nginx+rtmp/nginx.conf | 94 ++++ XeonE3/centos-7.5/nginx+rtmp/nginx.conf.m4 | 1 + XeonE3/centos-7.5/nginx+rtmp/shell.sh | 6 + XeonE3/centos-7.6/CMakeLists.txt | 1 + .../centos-7.6/ffmpeg+gst+dev/CMakeLists.txt | 4 + XeonE3/centos-7.6/ffmpeg+gst+dev/Dockerfile | 400 ++++++++++++++++++ .../centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 | 44 ++ XeonE3/centos-7.6/ffmpeg+gst+dev/build.sh | 7 + XeonE3/centos-7.6/ffmpeg+gst+dev/shell.sh | 6 + XeonE3/centos-7.6/ffmpeg/.dockerignore | 4 + XeonE3/centos-7.6/ffmpeg/CMakeLists.txt | 3 + XeonE3/centos-7.6/ffmpeg/Dockerfile | 276 ++++++++++++ XeonE3/centos-7.6/ffmpeg/Dockerfile.m4 | 35 ++ XeonE3/centos-7.6/ffmpeg/build.sh | 7 + XeonE3/centos-7.6/ffmpeg/shell.sh | 6 + XeonE3/centos-7.6/gst/CMakeLists.txt | 3 + XeonE3/centos-7.6/gst/Dockerfile | 333 +++++++++++++++ XeonE3/centos-7.6/gst/Dockerfile.m4 | 40 ++ XeonE3/centos-7.6/gst/build.sh | 7 + XeonE3/centos-7.6/gst/shell.sh | 6 + XeonE3/centos-7.6/nginx+rtmp/.dockerignore | 4 + XeonE3/centos-7.6/nginx+rtmp/CMakeLists.txt | 4 + XeonE3/centos-7.6/nginx+rtmp/Dockerfile | 70 +++ XeonE3/centos-7.6/nginx+rtmp/Dockerfile.m4 | 19 + XeonE3/centos-7.6/nginx+rtmp/build.sh | 7 + XeonE3/centos-7.6/nginx+rtmp/nginx.conf | 94 ++++ XeonE3/centos-7.6/nginx+rtmp/nginx.conf.m4 | 1 + XeonE3/centos-7.6/nginx+rtmp/shell.sh | 6 + XeonE3/ubuntu-16.04/CMakeLists.txt | 1 + .../ffmpeg+gst+dev/CMakeLists.txt | 4 + XeonE3/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile | 369 ++++++++++++++++ .../ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 | 42 ++ XeonE3/ubuntu-16.04/ffmpeg+gst+dev/build.sh | 7 + XeonE3/ubuntu-16.04/ffmpeg+gst+dev/shell.sh | 6 + XeonE3/ubuntu-16.04/ffmpeg/.dockerignore | 4 + XeonE3/ubuntu-16.04/ffmpeg/CMakeLists.txt | 3 + XeonE3/ubuntu-16.04/ffmpeg/Dockerfile | 255 +++++++++++ XeonE3/ubuntu-16.04/ffmpeg/Dockerfile.m4 | 33 ++ XeonE3/ubuntu-16.04/ffmpeg/build.sh | 7 + XeonE3/ubuntu-16.04/ffmpeg/shell.sh | 6 + XeonE3/ubuntu-16.04/gst/CMakeLists.txt | 3 + XeonE3/ubuntu-16.04/gst/Dockerfile | 302 +++++++++++++ XeonE3/ubuntu-16.04/gst/Dockerfile.m4 | 38 ++ XeonE3/ubuntu-16.04/gst/build.sh | 7 + XeonE3/ubuntu-16.04/gst/shell.sh | 6 + XeonE3/ubuntu-16.04/nginx+rtmp/.dockerignore | 4 + XeonE3/ubuntu-16.04/nginx+rtmp/CMakeLists.txt | 4 + XeonE3/ubuntu-16.04/nginx+rtmp/Dockerfile | 69 +++ XeonE3/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 | 19 + XeonE3/ubuntu-16.04/nginx+rtmp/build.sh | 7 + XeonE3/ubuntu-16.04/nginx+rtmp/nginx.conf | 94 ++++ XeonE3/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 | 1 + XeonE3/ubuntu-16.04/nginx+rtmp/shell.sh | 6 + XeonE3/ubuntu-18.04/CMakeLists.txt | 1 + .../ffmpeg+gst+dev/CMakeLists.txt | 4 + XeonE3/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile | 371 ++++++++++++++++ .../ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 | 42 ++ XeonE3/ubuntu-18.04/ffmpeg+gst+dev/build.sh | 7 + XeonE3/ubuntu-18.04/ffmpeg+gst+dev/shell.sh | 6 + XeonE3/ubuntu-18.04/ffmpeg/.dockerignore | 4 + XeonE3/ubuntu-18.04/ffmpeg/CMakeLists.txt | 3 + XeonE3/ubuntu-18.04/ffmpeg/Dockerfile | 256 +++++++++++ XeonE3/ubuntu-18.04/ffmpeg/Dockerfile.m4 | 33 ++ XeonE3/ubuntu-18.04/ffmpeg/build.sh | 7 + XeonE3/ubuntu-18.04/ffmpeg/shell.sh | 6 + XeonE3/ubuntu-18.04/gst/CMakeLists.txt | 3 + XeonE3/ubuntu-18.04/gst/Dockerfile | 304 +++++++++++++ XeonE3/ubuntu-18.04/gst/Dockerfile.m4 | 38 ++ XeonE3/ubuntu-18.04/gst/build.sh | 7 + XeonE3/ubuntu-18.04/gst/shell.sh | 6 + XeonE3/ubuntu-18.04/nginx+rtmp/.dockerignore | 4 + XeonE3/ubuntu-18.04/nginx+rtmp/CMakeLists.txt | 4 + XeonE3/ubuntu-18.04/nginx+rtmp/Dockerfile | 70 +++ XeonE3/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 | 19 + XeonE3/ubuntu-18.04/nginx+rtmp/build.sh | 7 + XeonE3/ubuntu-18.04/nginx+rtmp/nginx.conf | 94 ++++ XeonE3/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 | 1 + XeonE3/ubuntu-18.04/nginx+rtmp/shell.sh | 6 + script/build.sh | 24 ++ script/dldt-tests.cmake | 5 + script/ffmpeg-tests.cmake | 5 + script/gst-tests.cmake | 5 + script/image.cmake | 6 + script/mss-tests.cmake | 5 + script/nginx-tests.cmake | 5 + script/os.cmake | 12 + script/platform.cmake | 6 + script/shell.sh | 9 + template/automake.m4 | 10 + template/build-tools.m4 | 12 + template/cleanup.m4 | 8 + template/cmake.m4 | 8 + template/dldt-ie.m4 | 34 ++ template/ffmpeg.m4 | 33 ++ template/gmmlib.m4 | 6 + template/gst-plugin-bad.m4 | 10 + template/gst-plugin-base.m4 | 12 + template/gst-plugin-good.m4 | 10 + template/gst-plugin-libav.m4 | 18 + template/gst-plugin-ugly.m4 | 10 + template/gst-plugin-vaapi.m4 | 21 + template/gst.m4 | 22 + template/install.m4 | 2 + template/install.pkgs.m4 | 17 + template/libaom.m4 | 13 + template/libdrm.m4 | 19 + template/libfdk-aac.m4 | 13 + template/libmp3lame.m4 | 11 + template/libogg.m4 | 10 + template/libopus.m4 | 11 + template/libva.m4 | 18 + template/libvorbis.m4 | 11 + template/libvpx.m4 | 13 + template/libx264.m4 | 13 + template/libx265.m4 | 18 + template/media-driver.m4 | 23 + template/media-sdk.m4 | 15 + template/nasm.m4 | 9 + template/nginx-conf.m4 | 93 ++++ template/nginx-qat.m4 | 32 ++ template/nginx-rtmp.m4 | 14 + template/nginx.m4 | 33 ++ template/qat-driver.m4 | 29 ++ template/qat-engine.m4 | 12 + template/qat-openssl.m4 | 15 + template/qat-zip.m4 | 13 + template/svt-hevc.m4 | 28 ++ template/transform360.m4 | 38 ++ template/yasm.m4 | 9 + test/ffmpeg_1dns.sh | 5 + test/ffmpeg_flv_hevc.sh | 4 + test/ffmpeg_qsv.sh | 12 + test/ffmpeg_svt_hevc.sh | 4 + test/ffmpeg_vaapi.sh | 12 + test/ffmpeg_vpx.sh | 5 + test/ffmpeg_x264.sh | 5 + test/ffmpeg_x265.sh | 5 + test/gst_fdkaac.sh | 4 + test/gst_lamemp3.sh | 4 + test/gst_opus.sh | 4 + test/gst_vaapi.sh | 11 + test/gst_vorbis.sh | 4 + test/gst_x264.sh | 5 + test/gst_x265.sh | 5 + test/nginx_dash.sh | 14 + test/nginx_dash_hevc.sh | 14 + test/nginx_hls.sh | 14 + test/nginx_hls_hevc.sh | 14 + test/nginx_html.sh | 12 + test/nginx_rtmp.sh | 17 + test/nginx_rtmp_hevc.sh | 17 + 519 files changed, 23589 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 LICENSE create mode 100644 README.md create mode 100644 VCA2/CMakeLists.txt create mode 100644 VCA2/README.md create mode 100644 VCA2/centos-7.4/CMakeLists.txt create mode 100644 VCA2/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 VCA2/centos-7.4/ffmpeg+gst+dev/Dockerfile create mode 100644 VCA2/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 VCA2/centos-7.4/ffmpeg+gst+dev/build.sh create mode 100755 VCA2/centos-7.4/ffmpeg+gst+dev/shell.sh create mode 100644 VCA2/centos-7.4/ffmpeg/.dockerignore create mode 100644 VCA2/centos-7.4/ffmpeg/CMakeLists.txt create mode 100644 VCA2/centos-7.4/ffmpeg/Dockerfile create mode 100644 VCA2/centos-7.4/ffmpeg/Dockerfile.m4 create mode 100755 VCA2/centos-7.4/ffmpeg/build.sh create mode 100755 VCA2/centos-7.4/ffmpeg/shell.sh create mode 100644 VCA2/centos-7.4/gst/CMakeLists.txt create mode 100644 VCA2/centos-7.4/gst/Dockerfile create mode 100644 VCA2/centos-7.4/gst/Dockerfile.m4 create mode 100755 VCA2/centos-7.4/gst/build.sh create mode 100755 VCA2/centos-7.4/gst/shell.sh create mode 100644 VCA2/centos-7.4/nginx+rtmp/.dockerignore create mode 100644 VCA2/centos-7.4/nginx+rtmp/CMakeLists.txt create mode 100644 VCA2/centos-7.4/nginx+rtmp/Dockerfile create mode 100644 VCA2/centos-7.4/nginx+rtmp/Dockerfile.m4 create mode 100755 VCA2/centos-7.4/nginx+rtmp/build.sh create mode 100644 VCA2/centos-7.4/nginx+rtmp/nginx.conf create mode 100644 VCA2/centos-7.4/nginx+rtmp/nginx.conf.m4 create mode 100755 VCA2/centos-7.4/nginx+rtmp/shell.sh create mode 100644 VCA2/centos-7.5/CMakeLists.txt create mode 100644 VCA2/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 VCA2/centos-7.5/ffmpeg+gst+dev/Dockerfile create mode 100644 VCA2/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 VCA2/centos-7.5/ffmpeg+gst+dev/build.sh create mode 100755 VCA2/centos-7.5/ffmpeg+gst+dev/shell.sh create mode 100644 VCA2/centos-7.5/ffmpeg/CMakeLists.txt create mode 100644 VCA2/centos-7.5/ffmpeg/Dockerfile create mode 100644 VCA2/centos-7.5/ffmpeg/Dockerfile.m4 create mode 100755 VCA2/centos-7.5/ffmpeg/build.sh create mode 100755 VCA2/centos-7.5/ffmpeg/shell.sh create mode 100644 VCA2/centos-7.5/gst/CMakeLists.txt create mode 100644 VCA2/centos-7.5/gst/Dockerfile create mode 100644 VCA2/centos-7.5/gst/Dockerfile.m4 create mode 100755 VCA2/centos-7.5/gst/build.sh create mode 100755 VCA2/centos-7.5/gst/shell.sh create mode 100644 VCA2/centos-7.5/nginx+rtmp/.dockerignore create mode 100644 VCA2/centos-7.5/nginx+rtmp/CMakeLists.txt create mode 100644 VCA2/centos-7.5/nginx+rtmp/Dockerfile create mode 100644 VCA2/centos-7.5/nginx+rtmp/Dockerfile.m4 create mode 100755 VCA2/centos-7.5/nginx+rtmp/build.sh create mode 100644 VCA2/centos-7.5/nginx+rtmp/nginx.conf create mode 100644 VCA2/centos-7.5/nginx+rtmp/nginx.conf.m4 create mode 100755 VCA2/centos-7.5/nginx+rtmp/shell.sh create mode 100644 VCA2/centos-7.6/CMakeLists.txt create mode 100644 VCA2/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 VCA2/centos-7.6/ffmpeg+gst+dev/Dockerfile create mode 100644 VCA2/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 VCA2/centos-7.6/ffmpeg+gst+dev/build.sh create mode 100755 VCA2/centos-7.6/ffmpeg+gst+dev/shell.sh create mode 100644 VCA2/centos-7.6/ffmpeg/CMakeLists.txt create mode 100644 VCA2/centos-7.6/ffmpeg/Dockerfile create mode 100644 VCA2/centos-7.6/ffmpeg/Dockerfile.m4 create mode 100755 VCA2/centos-7.6/ffmpeg/build.sh create mode 100755 VCA2/centos-7.6/ffmpeg/shell.sh create mode 100644 VCA2/centos-7.6/gst/CMakeLists.txt create mode 100644 VCA2/centos-7.6/gst/Dockerfile create mode 100644 VCA2/centos-7.6/gst/Dockerfile.m4 create mode 100755 VCA2/centos-7.6/gst/build.sh create mode 100755 VCA2/centos-7.6/gst/shell.sh create mode 100644 VCA2/centos-7.6/nginx+rtmp/.dockerignore create mode 100644 VCA2/centos-7.6/nginx+rtmp/CMakeLists.txt create mode 100644 VCA2/centos-7.6/nginx+rtmp/Dockerfile create mode 100644 VCA2/centos-7.6/nginx+rtmp/Dockerfile.m4 create mode 100755 VCA2/centos-7.6/nginx+rtmp/build.sh create mode 100644 VCA2/centos-7.6/nginx+rtmp/nginx.conf create mode 100644 VCA2/centos-7.6/nginx+rtmp/nginx.conf.m4 create mode 100755 VCA2/centos-7.6/nginx+rtmp/shell.sh create mode 100644 VCA2/ubuntu-16.04/CMakeLists.txt create mode 100644 VCA2/ubuntu-16.04/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 VCA2/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile create mode 100644 VCA2/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 VCA2/ubuntu-16.04/ffmpeg+gst+dev/build.sh create mode 100755 VCA2/ubuntu-16.04/ffmpeg+gst+dev/shell.sh create mode 100644 VCA2/ubuntu-16.04/ffmpeg/.dockerignore create mode 100644 VCA2/ubuntu-16.04/ffmpeg/CMakeLists.txt create mode 100644 VCA2/ubuntu-16.04/ffmpeg/Dockerfile create mode 100644 VCA2/ubuntu-16.04/ffmpeg/Dockerfile.m4 create mode 100755 VCA2/ubuntu-16.04/ffmpeg/build.sh create mode 100755 VCA2/ubuntu-16.04/ffmpeg/shell.sh create mode 100644 VCA2/ubuntu-16.04/gst/CMakeLists.txt create mode 100644 VCA2/ubuntu-16.04/gst/Dockerfile create mode 100644 VCA2/ubuntu-16.04/gst/Dockerfile.m4 create mode 100755 VCA2/ubuntu-16.04/gst/build.sh create mode 100755 VCA2/ubuntu-16.04/gst/shell.sh create mode 100644 VCA2/ubuntu-16.04/nginx+rtmp/.dockerignore create mode 100644 VCA2/ubuntu-16.04/nginx+rtmp/CMakeLists.txt create mode 100644 VCA2/ubuntu-16.04/nginx+rtmp/Dockerfile create mode 100644 VCA2/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 create mode 100755 VCA2/ubuntu-16.04/nginx+rtmp/build.sh create mode 100644 VCA2/ubuntu-16.04/nginx+rtmp/nginx.conf create mode 100644 VCA2/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 create mode 100755 VCA2/ubuntu-16.04/nginx+rtmp/shell.sh create mode 100644 VCA2/ubuntu-18.04/CMakeLists.txt create mode 100644 VCA2/ubuntu-18.04/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 VCA2/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile create mode 100644 VCA2/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 VCA2/ubuntu-18.04/ffmpeg+gst+dev/build.sh create mode 100755 VCA2/ubuntu-18.04/ffmpeg+gst+dev/shell.sh create mode 100644 VCA2/ubuntu-18.04/ffmpeg/CMakeLists.txt create mode 100644 VCA2/ubuntu-18.04/ffmpeg/Dockerfile create mode 100644 VCA2/ubuntu-18.04/ffmpeg/Dockerfile.m4 create mode 100755 VCA2/ubuntu-18.04/ffmpeg/build.sh create mode 100755 VCA2/ubuntu-18.04/ffmpeg/shell.sh create mode 100644 VCA2/ubuntu-18.04/gst/CMakeLists.txt create mode 100644 VCA2/ubuntu-18.04/gst/Dockerfile create mode 100644 VCA2/ubuntu-18.04/gst/Dockerfile.m4 create mode 100755 VCA2/ubuntu-18.04/gst/build.sh create mode 100755 VCA2/ubuntu-18.04/gst/shell.sh create mode 100644 VCA2/ubuntu-18.04/nginx+rtmp/.dockerignore create mode 100644 VCA2/ubuntu-18.04/nginx+rtmp/CMakeLists.txt create mode 100644 VCA2/ubuntu-18.04/nginx+rtmp/Dockerfile create mode 100644 VCA2/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 create mode 100755 VCA2/ubuntu-18.04/nginx+rtmp/build.sh create mode 100644 VCA2/ubuntu-18.04/nginx+rtmp/nginx.conf create mode 100644 VCA2/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 create mode 100755 VCA2/ubuntu-18.04/nginx+rtmp/shell.sh create mode 100644 Xeon/CMakeLists.txt create mode 100644 Xeon/README.md create mode 100644 Xeon/centos-7.4/CMakeLists.txt create mode 100644 Xeon/centos-7.4/dldt+ffmpeg/CMakeLists.txt create mode 100644 Xeon/centos-7.4/dldt+ffmpeg/Dockerfile create mode 100644 Xeon/centos-7.4/dldt+ffmpeg/Dockerfile.m4 create mode 100755 Xeon/centos-7.4/dldt+ffmpeg/build.sh create mode 100755 Xeon/centos-7.4/dldt+ffmpeg/shell.sh create mode 100644 Xeon/centos-7.4/dldt+gst/CMakeLists.txt create mode 100644 Xeon/centos-7.4/dldt+gst/Dockerfile create mode 100644 Xeon/centos-7.4/dldt+gst/Dockerfile.m4 create mode 100755 Xeon/centos-7.4/dldt+gst/build.sh create mode 100755 Xeon/centos-7.4/dldt+gst/shell.sh create mode 100644 Xeon/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 Xeon/centos-7.4/ffmpeg+gst+dev/Dockerfile create mode 100644 Xeon/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 Xeon/centos-7.4/ffmpeg+gst+dev/build.sh create mode 100755 Xeon/centos-7.4/ffmpeg+gst+dev/shell.sh create mode 100644 Xeon/centos-7.4/ffmpeg/CMakeLists.txt create mode 100644 Xeon/centos-7.4/ffmpeg/Dockerfile create mode 100644 Xeon/centos-7.4/ffmpeg/Dockerfile.m4 create mode 100755 Xeon/centos-7.4/ffmpeg/build.sh create mode 100755 Xeon/centos-7.4/ffmpeg/shell.sh create mode 100644 Xeon/centos-7.4/gst/CMakeLists.txt create mode 100644 Xeon/centos-7.4/gst/Dockerfile create mode 100644 Xeon/centos-7.4/gst/Dockerfile.m4 create mode 100755 Xeon/centos-7.4/gst/build.sh create mode 100755 Xeon/centos-7.4/gst/shell.sh create mode 100644 Xeon/centos-7.4/nginx+rtmp/CMakeLists.txt create mode 100644 Xeon/centos-7.4/nginx+rtmp/Dockerfile create mode 100644 Xeon/centos-7.4/nginx+rtmp/Dockerfile.m4 create mode 100755 Xeon/centos-7.4/nginx+rtmp/build.sh create mode 100644 Xeon/centos-7.4/nginx+rtmp/nginx.conf create mode 100644 Xeon/centos-7.4/nginx+rtmp/nginx.conf.m4 create mode 100755 Xeon/centos-7.4/nginx+rtmp/shell.sh create mode 100644 Xeon/centos-7.5/CMakeLists.txt create mode 100644 Xeon/centos-7.5/dldt+ffmpeg/.dockerignore create mode 100644 Xeon/centos-7.5/dldt+ffmpeg/CMakeLists.txt create mode 100644 Xeon/centos-7.5/dldt+ffmpeg/Dockerfile create mode 100644 Xeon/centos-7.5/dldt+ffmpeg/Dockerfile.m4 create mode 100755 Xeon/centos-7.5/dldt+ffmpeg/build.sh create mode 100755 Xeon/centos-7.5/dldt+ffmpeg/shell.sh create mode 100644 Xeon/centos-7.5/dldt+gst/.dockerignore create mode 100644 Xeon/centos-7.5/dldt+gst/CMakeLists.txt create mode 100644 Xeon/centos-7.5/dldt+gst/Dockerfile create mode 100644 Xeon/centos-7.5/dldt+gst/Dockerfile.m4 create mode 100755 Xeon/centos-7.5/dldt+gst/build.sh create mode 100755 Xeon/centos-7.5/dldt+gst/shell.sh create mode 100644 Xeon/centos-7.5/ffmpeg+gst+dev/.dockerignore create mode 100644 Xeon/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 Xeon/centos-7.5/ffmpeg+gst+dev/Dockerfile create mode 100644 Xeon/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 Xeon/centos-7.5/ffmpeg+gst+dev/build.sh create mode 100755 Xeon/centos-7.5/ffmpeg+gst+dev/shell.sh create mode 100644 Xeon/centos-7.5/ffmpeg/.dockerignore create mode 100644 Xeon/centos-7.5/ffmpeg/CMakeLists.txt create mode 100644 Xeon/centos-7.5/ffmpeg/Dockerfile create mode 100644 Xeon/centos-7.5/ffmpeg/Dockerfile.m4 create mode 100755 Xeon/centos-7.5/ffmpeg/build.sh create mode 100755 Xeon/centos-7.5/ffmpeg/shell.sh create mode 100644 Xeon/centos-7.5/gst/.dockerignore create mode 100644 Xeon/centos-7.5/gst/CMakeLists.txt create mode 100644 Xeon/centos-7.5/gst/Dockerfile create mode 100644 Xeon/centos-7.5/gst/Dockerfile.m4 create mode 100755 Xeon/centos-7.5/gst/build.sh create mode 100755 Xeon/centos-7.5/gst/shell.sh create mode 100644 Xeon/centos-7.5/nginx+rtmp/.dockerignore create mode 100644 Xeon/centos-7.5/nginx+rtmp/CMakeLists.txt create mode 100644 Xeon/centos-7.5/nginx+rtmp/Dockerfile create mode 100644 Xeon/centos-7.5/nginx+rtmp/Dockerfile.m4 create mode 100755 Xeon/centos-7.5/nginx+rtmp/build.sh create mode 100644 Xeon/centos-7.5/nginx+rtmp/nginx.conf create mode 100644 Xeon/centos-7.5/nginx+rtmp/nginx.conf.m4 create mode 100755 Xeon/centos-7.5/nginx+rtmp/shell.sh create mode 100644 Xeon/centos-7.6/CMakeLists.txt create mode 100644 Xeon/centos-7.6/dldt+ffmpeg/.dockerignore create mode 100644 Xeon/centos-7.6/dldt+ffmpeg/CMakeLists.txt create mode 100644 Xeon/centos-7.6/dldt+ffmpeg/Dockerfile create mode 100644 Xeon/centos-7.6/dldt+ffmpeg/Dockerfile.m4 create mode 100755 Xeon/centos-7.6/dldt+ffmpeg/build.sh create mode 100755 Xeon/centos-7.6/dldt+ffmpeg/shell.sh create mode 100644 Xeon/centos-7.6/dldt+gst/.dockerignore create mode 100644 Xeon/centos-7.6/dldt+gst/CMakeLists.txt create mode 100644 Xeon/centos-7.6/dldt+gst/Dockerfile create mode 100644 Xeon/centos-7.6/dldt+gst/Dockerfile.m4 create mode 100755 Xeon/centos-7.6/dldt+gst/build.sh create mode 100755 Xeon/centos-7.6/dldt+gst/shell.sh create mode 100644 Xeon/centos-7.6/ffmpeg+gst+dev/.dockerignore create mode 100644 Xeon/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 Xeon/centos-7.6/ffmpeg+gst+dev/Dockerfile create mode 100644 Xeon/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 Xeon/centos-7.6/ffmpeg+gst+dev/build.sh create mode 100755 Xeon/centos-7.6/ffmpeg+gst+dev/shell.sh create mode 100644 Xeon/centos-7.6/ffmpeg/.dockerignore create mode 100644 Xeon/centos-7.6/ffmpeg/CMakeLists.txt create mode 100644 Xeon/centos-7.6/ffmpeg/Dockerfile create mode 100644 Xeon/centos-7.6/ffmpeg/Dockerfile.m4 create mode 100755 Xeon/centos-7.6/ffmpeg/build.sh create mode 100755 Xeon/centos-7.6/ffmpeg/shell.sh create mode 100644 Xeon/centos-7.6/gst/.dockerignore create mode 100644 Xeon/centos-7.6/gst/CMakeLists.txt create mode 100644 Xeon/centos-7.6/gst/Dockerfile create mode 100644 Xeon/centos-7.6/gst/Dockerfile.m4 create mode 100755 Xeon/centos-7.6/gst/build.sh create mode 100755 Xeon/centos-7.6/gst/shell.sh create mode 100644 Xeon/centos-7.6/nginx+rtmp/.dockerignore create mode 100644 Xeon/centos-7.6/nginx+rtmp/CMakeLists.txt create mode 100644 Xeon/centos-7.6/nginx+rtmp/Dockerfile create mode 100644 Xeon/centos-7.6/nginx+rtmp/Dockerfile.m4 create mode 100755 Xeon/centos-7.6/nginx+rtmp/build.sh create mode 100644 Xeon/centos-7.6/nginx+rtmp/nginx.conf create mode 100644 Xeon/centos-7.6/nginx+rtmp/nginx.conf.m4 create mode 100755 Xeon/centos-7.6/nginx+rtmp/shell.sh create mode 100644 Xeon/ubuntu-16.04/CMakeLists.txt create mode 100644 Xeon/ubuntu-16.04/dldt+ffmpeg/.dockerignore create mode 100644 Xeon/ubuntu-16.04/dldt+ffmpeg/CMakeLists.txt create mode 100644 Xeon/ubuntu-16.04/dldt+ffmpeg/Dockerfile create mode 100644 Xeon/ubuntu-16.04/dldt+ffmpeg/Dockerfile.m4 create mode 100755 Xeon/ubuntu-16.04/dldt+ffmpeg/build.sh create mode 100755 Xeon/ubuntu-16.04/dldt+ffmpeg/shell.sh create mode 100644 Xeon/ubuntu-16.04/dldt+gst/.dockerignore create mode 100644 Xeon/ubuntu-16.04/dldt+gst/CMakeLists.txt create mode 100644 Xeon/ubuntu-16.04/dldt+gst/Dockerfile create mode 100644 Xeon/ubuntu-16.04/dldt+gst/Dockerfile.m4 create mode 100755 Xeon/ubuntu-16.04/dldt+gst/build.sh create mode 100755 Xeon/ubuntu-16.04/dldt+gst/shell.sh create mode 100644 Xeon/ubuntu-16.04/ffmpeg+gst+dev/.dockerignore create mode 100644 Xeon/ubuntu-16.04/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 Xeon/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile create mode 100644 Xeon/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 Xeon/ubuntu-16.04/ffmpeg+gst+dev/build.sh create mode 100755 Xeon/ubuntu-16.04/ffmpeg+gst+dev/shell.sh create mode 100644 Xeon/ubuntu-16.04/ffmpeg/.dockerignore create mode 100644 Xeon/ubuntu-16.04/ffmpeg/CMakeLists.txt create mode 100644 Xeon/ubuntu-16.04/ffmpeg/Dockerfile create mode 100644 Xeon/ubuntu-16.04/ffmpeg/Dockerfile.m4 create mode 100755 Xeon/ubuntu-16.04/ffmpeg/build.sh create mode 100755 Xeon/ubuntu-16.04/ffmpeg/shell.sh create mode 100644 Xeon/ubuntu-16.04/gst/.dockerignore create mode 100644 Xeon/ubuntu-16.04/gst/CMakeLists.txt create mode 100644 Xeon/ubuntu-16.04/gst/Dockerfile create mode 100644 Xeon/ubuntu-16.04/gst/Dockerfile.m4 create mode 100755 Xeon/ubuntu-16.04/gst/build.sh create mode 100755 Xeon/ubuntu-16.04/gst/shell.sh create mode 100644 Xeon/ubuntu-16.04/nginx+rtmp/.dockerignore create mode 100644 Xeon/ubuntu-16.04/nginx+rtmp/CMakeLists.txt create mode 100644 Xeon/ubuntu-16.04/nginx+rtmp/Dockerfile create mode 100644 Xeon/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 create mode 100755 Xeon/ubuntu-16.04/nginx+rtmp/build.sh create mode 100644 Xeon/ubuntu-16.04/nginx+rtmp/nginx.conf create mode 100644 Xeon/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 create mode 100755 Xeon/ubuntu-16.04/nginx+rtmp/shell.sh create mode 100644 Xeon/ubuntu-18.04/CMakeLists.txt create mode 100644 Xeon/ubuntu-18.04/dldt+ffmpeg/.dockerignore create mode 100644 Xeon/ubuntu-18.04/dldt+ffmpeg/CMakeLists.txt create mode 100644 Xeon/ubuntu-18.04/dldt+ffmpeg/Dockerfile create mode 100644 Xeon/ubuntu-18.04/dldt+ffmpeg/Dockerfile.m4 create mode 100755 Xeon/ubuntu-18.04/dldt+ffmpeg/build.sh create mode 100755 Xeon/ubuntu-18.04/dldt+ffmpeg/shell.sh create mode 100644 Xeon/ubuntu-18.04/dldt+gst/.dockerignore create mode 100644 Xeon/ubuntu-18.04/dldt+gst/CMakeLists.txt create mode 100644 Xeon/ubuntu-18.04/dldt+gst/Dockerfile create mode 100644 Xeon/ubuntu-18.04/dldt+gst/Dockerfile.m4 create mode 100755 Xeon/ubuntu-18.04/dldt+gst/build.sh create mode 100755 Xeon/ubuntu-18.04/dldt+gst/shell.sh create mode 100644 Xeon/ubuntu-18.04/ffmpeg+gst+dev/.dockerignore create mode 100644 Xeon/ubuntu-18.04/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 Xeon/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile create mode 100644 Xeon/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 Xeon/ubuntu-18.04/ffmpeg+gst+dev/build.sh create mode 100755 Xeon/ubuntu-18.04/ffmpeg+gst+dev/shell.sh create mode 100644 Xeon/ubuntu-18.04/ffmpeg/.dockerignore create mode 100644 Xeon/ubuntu-18.04/ffmpeg/CMakeLists.txt create mode 100644 Xeon/ubuntu-18.04/ffmpeg/Dockerfile create mode 100644 Xeon/ubuntu-18.04/ffmpeg/Dockerfile.m4 create mode 100755 Xeon/ubuntu-18.04/ffmpeg/build.sh create mode 100755 Xeon/ubuntu-18.04/ffmpeg/shell.sh create mode 100644 Xeon/ubuntu-18.04/gst/.dockerignore create mode 100644 Xeon/ubuntu-18.04/gst/CMakeLists.txt create mode 100644 Xeon/ubuntu-18.04/gst/Dockerfile create mode 100644 Xeon/ubuntu-18.04/gst/Dockerfile.m4 create mode 100755 Xeon/ubuntu-18.04/gst/build.sh create mode 100755 Xeon/ubuntu-18.04/gst/shell.sh create mode 100644 Xeon/ubuntu-18.04/nginx+rtmp/.dockerignore create mode 100644 Xeon/ubuntu-18.04/nginx+rtmp/CMakeLists.txt create mode 100644 Xeon/ubuntu-18.04/nginx+rtmp/Dockerfile create mode 100644 Xeon/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 create mode 100755 Xeon/ubuntu-18.04/nginx+rtmp/build.sh create mode 100644 Xeon/ubuntu-18.04/nginx+rtmp/nginx.conf create mode 100644 Xeon/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 create mode 100755 Xeon/ubuntu-18.04/nginx+rtmp/shell.sh create mode 100644 XeonE3/CMakeLists.txt create mode 100644 XeonE3/README.md create mode 100644 XeonE3/centos-7.4/CMakeLists.txt create mode 100644 XeonE3/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 XeonE3/centos-7.4/ffmpeg+gst+dev/Dockerfile create mode 100644 XeonE3/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 XeonE3/centos-7.4/ffmpeg+gst+dev/build.sh create mode 100755 XeonE3/centos-7.4/ffmpeg+gst+dev/shell.sh create mode 100644 XeonE3/centos-7.4/ffmpeg/.dockerignore create mode 100644 XeonE3/centos-7.4/ffmpeg/CMakeLists.txt create mode 100644 XeonE3/centos-7.4/ffmpeg/Dockerfile create mode 100644 XeonE3/centos-7.4/ffmpeg/Dockerfile.m4 create mode 100755 XeonE3/centos-7.4/ffmpeg/build.sh create mode 100755 XeonE3/centos-7.4/ffmpeg/shell.sh create mode 100644 XeonE3/centos-7.4/gst/CMakeLists.txt create mode 100644 XeonE3/centos-7.4/gst/Dockerfile create mode 100644 XeonE3/centos-7.4/gst/Dockerfile.m4 create mode 100755 XeonE3/centos-7.4/gst/build.sh create mode 100755 XeonE3/centos-7.4/gst/shell.sh create mode 100644 XeonE3/centos-7.4/nginx+rtmp/.dockerignore create mode 100644 XeonE3/centos-7.4/nginx+rtmp/CMakeLists.txt create mode 100644 XeonE3/centos-7.4/nginx+rtmp/Dockerfile create mode 100644 XeonE3/centos-7.4/nginx+rtmp/Dockerfile.m4 create mode 100755 XeonE3/centos-7.4/nginx+rtmp/build.sh create mode 100644 XeonE3/centos-7.4/nginx+rtmp/nginx.conf create mode 100644 XeonE3/centos-7.4/nginx+rtmp/nginx.conf.m4 create mode 100755 XeonE3/centos-7.4/nginx+rtmp/shell.sh create mode 100644 XeonE3/centos-7.5/CMakeLists.txt create mode 100644 XeonE3/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 XeonE3/centos-7.5/ffmpeg+gst+dev/Dockerfile create mode 100644 XeonE3/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 XeonE3/centos-7.5/ffmpeg+gst+dev/build.sh create mode 100755 XeonE3/centos-7.5/ffmpeg+gst+dev/shell.sh create mode 100644 XeonE3/centos-7.5/ffmpeg/.dockerignore create mode 100644 XeonE3/centos-7.5/ffmpeg/CMakeLists.txt create mode 100644 XeonE3/centos-7.5/ffmpeg/Dockerfile create mode 100644 XeonE3/centos-7.5/ffmpeg/Dockerfile.m4 create mode 100755 XeonE3/centos-7.5/ffmpeg/build.sh create mode 100755 XeonE3/centos-7.5/ffmpeg/shell.sh create mode 100644 XeonE3/centos-7.5/gst/CMakeLists.txt create mode 100644 XeonE3/centos-7.5/gst/Dockerfile create mode 100644 XeonE3/centos-7.5/gst/Dockerfile.m4 create mode 100755 XeonE3/centos-7.5/gst/build.sh create mode 100755 XeonE3/centos-7.5/gst/shell.sh create mode 100644 XeonE3/centos-7.5/nginx+rtmp/.dockerignore create mode 100644 XeonE3/centos-7.5/nginx+rtmp/CMakeLists.txt create mode 100644 XeonE3/centos-7.5/nginx+rtmp/Dockerfile create mode 100644 XeonE3/centos-7.5/nginx+rtmp/Dockerfile.m4 create mode 100755 XeonE3/centos-7.5/nginx+rtmp/build.sh create mode 100644 XeonE3/centos-7.5/nginx+rtmp/nginx.conf create mode 100644 XeonE3/centos-7.5/nginx+rtmp/nginx.conf.m4 create mode 100755 XeonE3/centos-7.5/nginx+rtmp/shell.sh create mode 100644 XeonE3/centos-7.6/CMakeLists.txt create mode 100644 XeonE3/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 XeonE3/centos-7.6/ffmpeg+gst+dev/Dockerfile create mode 100644 XeonE3/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 XeonE3/centos-7.6/ffmpeg+gst+dev/build.sh create mode 100755 XeonE3/centos-7.6/ffmpeg+gst+dev/shell.sh create mode 100644 XeonE3/centos-7.6/ffmpeg/.dockerignore create mode 100644 XeonE3/centos-7.6/ffmpeg/CMakeLists.txt create mode 100644 XeonE3/centos-7.6/ffmpeg/Dockerfile create mode 100644 XeonE3/centos-7.6/ffmpeg/Dockerfile.m4 create mode 100755 XeonE3/centos-7.6/ffmpeg/build.sh create mode 100755 XeonE3/centos-7.6/ffmpeg/shell.sh create mode 100644 XeonE3/centos-7.6/gst/CMakeLists.txt create mode 100644 XeonE3/centos-7.6/gst/Dockerfile create mode 100644 XeonE3/centos-7.6/gst/Dockerfile.m4 create mode 100755 XeonE3/centos-7.6/gst/build.sh create mode 100755 XeonE3/centos-7.6/gst/shell.sh create mode 100644 XeonE3/centos-7.6/nginx+rtmp/.dockerignore create mode 100644 XeonE3/centos-7.6/nginx+rtmp/CMakeLists.txt create mode 100644 XeonE3/centos-7.6/nginx+rtmp/Dockerfile create mode 100644 XeonE3/centos-7.6/nginx+rtmp/Dockerfile.m4 create mode 100755 XeonE3/centos-7.6/nginx+rtmp/build.sh create mode 100644 XeonE3/centos-7.6/nginx+rtmp/nginx.conf create mode 100644 XeonE3/centos-7.6/nginx+rtmp/nginx.conf.m4 create mode 100755 XeonE3/centos-7.6/nginx+rtmp/shell.sh create mode 100644 XeonE3/ubuntu-16.04/CMakeLists.txt create mode 100644 XeonE3/ubuntu-16.04/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 XeonE3/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile create mode 100644 XeonE3/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 XeonE3/ubuntu-16.04/ffmpeg+gst+dev/build.sh create mode 100755 XeonE3/ubuntu-16.04/ffmpeg+gst+dev/shell.sh create mode 100644 XeonE3/ubuntu-16.04/ffmpeg/.dockerignore create mode 100644 XeonE3/ubuntu-16.04/ffmpeg/CMakeLists.txt create mode 100644 XeonE3/ubuntu-16.04/ffmpeg/Dockerfile create mode 100644 XeonE3/ubuntu-16.04/ffmpeg/Dockerfile.m4 create mode 100755 XeonE3/ubuntu-16.04/ffmpeg/build.sh create mode 100755 XeonE3/ubuntu-16.04/ffmpeg/shell.sh create mode 100644 XeonE3/ubuntu-16.04/gst/CMakeLists.txt create mode 100644 XeonE3/ubuntu-16.04/gst/Dockerfile create mode 100644 XeonE3/ubuntu-16.04/gst/Dockerfile.m4 create mode 100755 XeonE3/ubuntu-16.04/gst/build.sh create mode 100755 XeonE3/ubuntu-16.04/gst/shell.sh create mode 100644 XeonE3/ubuntu-16.04/nginx+rtmp/.dockerignore create mode 100644 XeonE3/ubuntu-16.04/nginx+rtmp/CMakeLists.txt create mode 100644 XeonE3/ubuntu-16.04/nginx+rtmp/Dockerfile create mode 100644 XeonE3/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 create mode 100755 XeonE3/ubuntu-16.04/nginx+rtmp/build.sh create mode 100644 XeonE3/ubuntu-16.04/nginx+rtmp/nginx.conf create mode 100644 XeonE3/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 create mode 100755 XeonE3/ubuntu-16.04/nginx+rtmp/shell.sh create mode 100644 XeonE3/ubuntu-18.04/CMakeLists.txt create mode 100644 XeonE3/ubuntu-18.04/ffmpeg+gst+dev/CMakeLists.txt create mode 100644 XeonE3/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile create mode 100644 XeonE3/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 create mode 100755 XeonE3/ubuntu-18.04/ffmpeg+gst+dev/build.sh create mode 100755 XeonE3/ubuntu-18.04/ffmpeg+gst+dev/shell.sh create mode 100644 XeonE3/ubuntu-18.04/ffmpeg/.dockerignore create mode 100644 XeonE3/ubuntu-18.04/ffmpeg/CMakeLists.txt create mode 100644 XeonE3/ubuntu-18.04/ffmpeg/Dockerfile create mode 100644 XeonE3/ubuntu-18.04/ffmpeg/Dockerfile.m4 create mode 100755 XeonE3/ubuntu-18.04/ffmpeg/build.sh create mode 100755 XeonE3/ubuntu-18.04/ffmpeg/shell.sh create mode 100644 XeonE3/ubuntu-18.04/gst/CMakeLists.txt create mode 100644 XeonE3/ubuntu-18.04/gst/Dockerfile create mode 100644 XeonE3/ubuntu-18.04/gst/Dockerfile.m4 create mode 100755 XeonE3/ubuntu-18.04/gst/build.sh create mode 100755 XeonE3/ubuntu-18.04/gst/shell.sh create mode 100644 XeonE3/ubuntu-18.04/nginx+rtmp/.dockerignore create mode 100644 XeonE3/ubuntu-18.04/nginx+rtmp/CMakeLists.txt create mode 100644 XeonE3/ubuntu-18.04/nginx+rtmp/Dockerfile create mode 100644 XeonE3/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 create mode 100755 XeonE3/ubuntu-18.04/nginx+rtmp/build.sh create mode 100644 XeonE3/ubuntu-18.04/nginx+rtmp/nginx.conf create mode 100644 XeonE3/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 create mode 100755 XeonE3/ubuntu-18.04/nginx+rtmp/shell.sh create mode 100644 script/build.sh create mode 100644 script/dldt-tests.cmake create mode 100644 script/ffmpeg-tests.cmake create mode 100644 script/gst-tests.cmake create mode 100644 script/image.cmake create mode 100644 script/mss-tests.cmake create mode 100644 script/nginx-tests.cmake create mode 100644 script/os.cmake create mode 100644 script/platform.cmake create mode 100644 script/shell.sh create mode 100644 template/automake.m4 create mode 100644 template/build-tools.m4 create mode 100644 template/cleanup.m4 create mode 100644 template/cmake.m4 create mode 100644 template/dldt-ie.m4 create mode 100644 template/ffmpeg.m4 create mode 100644 template/gmmlib.m4 create mode 100644 template/gst-plugin-bad.m4 create mode 100644 template/gst-plugin-base.m4 create mode 100644 template/gst-plugin-good.m4 create mode 100644 template/gst-plugin-libav.m4 create mode 100644 template/gst-plugin-ugly.m4 create mode 100644 template/gst-plugin-vaapi.m4 create mode 100644 template/gst.m4 create mode 100644 template/install.m4 create mode 100644 template/install.pkgs.m4 create mode 100644 template/libaom.m4 create mode 100644 template/libdrm.m4 create mode 100644 template/libfdk-aac.m4 create mode 100644 template/libmp3lame.m4 create mode 100644 template/libogg.m4 create mode 100644 template/libopus.m4 create mode 100644 template/libva.m4 create mode 100644 template/libvorbis.m4 create mode 100644 template/libvpx.m4 create mode 100644 template/libx264.m4 create mode 100644 template/libx265.m4 create mode 100644 template/media-driver.m4 create mode 100644 template/media-sdk.m4 create mode 100644 template/nasm.m4 create mode 100644 template/nginx-conf.m4 create mode 100644 template/nginx-qat.m4 create mode 100644 template/nginx-rtmp.m4 create mode 100644 template/nginx.m4 create mode 100644 template/qat-driver.m4 create mode 100644 template/qat-engine.m4 create mode 100644 template/qat-openssl.m4 create mode 100644 template/qat-zip.m4 create mode 100644 template/svt-hevc.m4 create mode 100644 template/transform360.m4 create mode 100644 template/yasm.m4 create mode 100755 test/ffmpeg_1dns.sh create mode 100755 test/ffmpeg_flv_hevc.sh create mode 100755 test/ffmpeg_qsv.sh create mode 100755 test/ffmpeg_svt_hevc.sh create mode 100755 test/ffmpeg_vaapi.sh create mode 100755 test/ffmpeg_vpx.sh create mode 100755 test/ffmpeg_x264.sh create mode 100755 test/ffmpeg_x265.sh create mode 100755 test/gst_fdkaac.sh create mode 100755 test/gst_lamemp3.sh create mode 100755 test/gst_opus.sh create mode 100755 test/gst_vaapi.sh create mode 100755 test/gst_vorbis.sh create mode 100755 test/gst_x264.sh create mode 100755 test/gst_x265.sh create mode 100755 test/nginx_dash.sh create mode 100755 test/nginx_dash_hevc.sh create mode 100755 test/nginx_hls.sh create mode 100755 test/nginx_hls_hevc.sh create mode 100755 test/nginx_html.sh create mode 100755 test/nginx_rtmp.sh create mode 100755 test/nginx_rtmp_hevc.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..7bd985acd --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +software/*.tar.gz +software/*.tgz +software/*.patch +build/* diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..7c2a99592 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required (VERSION 2.8) + +Project(DockerFiles NONE) +enable_testing() + +file(GLOB dirs "*") +foreach(dir ${dirs}) + if(EXISTS ${dir}/CMakeLists.txt) + add_subdirectory(${dir}) + endif() +endforeach() + +# legal message +execute_process(COMMAND printf "\nThis script will build third party components licensed under various open source licenses into your container images. The terms under which those components may be used and distributed can be found with the license document that is provided with those components. Please familiarize yourself with those terms to ensure your distribution of those components complies with the terms of those licenses.\n\n") diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..2856ed1d1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2018, VCSE +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 000000000..27ca738d8 --- /dev/null +++ b/README.md @@ -0,0 +1,121 @@ +This repository hosts docker build files for multiple platform/OS/image combinations. Each image is tagged with development status. + +Image: +- FFmpeg: image optimized for media creation and delivery. Included codecs: aac, mp3, opus, ogg, vorbis, x264, x265, vp8/9, av1 and SVT-HEVC. The GPU images are accelerated with vaapi and qsv. +- GStreamer: image optimized for media creation and delivery. Included the base, good, bad, ugly and libav set of plugins. The GPU images are accelerated with vaapi. +- DLDT+FFmpeg: image optimized for media analytics. Included what are in the FFmpeg image. Inferencing engine and tracking plugins to be included. +- DLDT+GStreamer: image optimized for media analytics. Included what are in the GStreamer image. Inferencing engine and tracking plugins to be included. +- FFmpeg+GStreamer (Dev): FFmpeg + GStreamer + C++ development files. Model optimizer to be included. +- NGINX+RTMP: image optimized for web hosting and caching. Based on FFmpeg, included NGINX the web server and RTMP the RTMP, DASH and HLS streaming module. + +Status: +- C: Compiled. Not yet tested. +- T: Tested. Some tests failed. +- V: Verified. All tests passed. +- -: To be added in subsequent commits. + +| Platform: Xeon (CPU) | Ubuntu 16.04 LTS | Ubuntu 18.04 LTS | CentOS-7.4 | CentOS-7.5 | CentOS-7.6 | +|-----|:---:|:---:|:---:|:---:|:---:| +| FFmpeg | V | V | V | V | V | +| GStreamer | V | V | V | V | V | +| DLDT(IE)+FFmpeg | V | V | V | V | V | +| DLDT(IE)+GStreamer | V | V | V | V | V | +| FFmpeg+GStreamer (Dev) | V | V | V | V | V | +| NGINX+RTMP | V | V | V | V | V | + +| Platform: VCA2 | Ubuntu 16.04 LTS | Ubuntu 18.04 LTS | CentOS-7.4 | CentOS-7.5 | CentOS-7.6 | +|-----|:---:|:---:|:---:|:---:|:---:| +| FFmpeg | V | V | - | V | V | +| GStreamer | C | C | - | C | C | +| FFmpeg+GStreamer (Dev) | T | T | - | T | T | +| NGINX+RTMP | V | V | - | V | V | + +| Platform: XeonE3 (GPU) | Ubuntu 16.04 LTS | Ubuntu 18.04 LTS | CentOS-7.4 | CentOS-7.5 | CentOS-7.6 | +|-----|:---:|:---:|:---:|:---:|:---:| +| FFmpeg | V | V | V | V | V | +| GStreamer | C | C | C | C | C | +| FFmpeg+GStreamer (Dev) | C | C | C | C | C | +| NGINX+RTMP | V | V | V | V | V | + +### Update kernel and firmware: + +Please see each platform folder README for the platform setup instructions. + +### Install docker.ce: +| Ubuntu | CentOS | +|:----------|:----------------| +|(0) sudo apt-get remove docker.io # remove old docker |(0) sudo yum remove docker docker-engine # remove old docker | +|(1) curl -fsSL https://download.docker.com/linux/ubuntu/gpg \| sudo apt-key add - |(1) sudo yum install -y yum-utils device-mapper-persistent-data lvm2 | +|(2) sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" |(2) sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo | +|(3) sudo apt-get update && sudo apt-get install -y docker-ce |(3) sudo yum install -y docker-ce | + + +### Setup docker proxy: +```bash +(4) sudo mkdir -p /etc/systemd/system/docker.service.d +(5) printf "[Service]\nEnvironment=\"HTTPS_PROXY=$https_proxy\" \"NO_PROXY=$no_proxy\"\n" | sudo tee /etc/systemd/system/docker.service.d/proxy.conf +(6) sudo systemctl daemon-reload +(7) sudo systemctl restart docker +``` + +### Build docker image(s): + +```bash +(1) mkdir build +(2) cd build +(3) cmake .. +(4) cd Xeon/ubuntu-16.04/ffmpeg # please build your specific <_platform_>/<_OS_>/<_image_> only as a full build takes a long time. +(5) make # build on the target processor for best performance. +(6) ctest +``` + +### Run shell: + +```bash +(1) Xeon/ubuntu-16.04/ffmpeg/shell.sh #<_platform_>/<_OS_>/<_image_> +``` + +### Customize: + +You can modify any Dockerfile.m4 template for customization. For example, uncomment #include(transform360.m4) in Xeon/ubuntu-16.04/ffmpeg/Dockerfile.m4 to add essential 360 video transformation in the FFmpeg build. +After modification, please rerun cmake and make. + +### Use alternative repo: + +Certain source repo might be blocked in certain network. You can use alternative repos before build as follows: + +```bash +export AOM_REPO=... +export VPX_REPO=... +make +``` + +For a list of all REPOs and their versions, run the following command: + +```bash +grep -E '_(REPO|VER)=' template/*.m4 +``` + +### Use Dockerfile(s) in other project: + +It is recommended that you copy the Dockerfile(s) of your platform, OS and image directly into your other project. The following shell scripts show how to sync (if needed) and build the NGINX+RTMP Dockerfile (and its dependency FFmpeg): + +update.sh: +```bash +DOCKER_REPO=${DOCKER_REPO="https://<>/master/raw/Xeon/ubuntu-18.04"} +(echo "# xeon-ubuntu1804-ffmpeg" && curl ${DOCKER_REPO}/ffmpeg/Dockerfile) > Dockerfile.2 +(echo "# xeon-ubuntu1804-nginx-rtmp" && curl ${DOCKER_REPO}/nginx+rtmp/Dockerfile) > Dockerfile.1 +``` +build.sh: +```bash +for dep in .2 .1; do + image=$(grep -m1 '#' "Dockerfile$dep" | cut -d' ' -f2) + sudo docker build --network=host --file="Dockerfile$dep" -t "$image:latest" . $(env | grep -E '_(proxy)=' | sed 's/^/--build-arg /') +done +``` + + + + + + diff --git a/VCA2/CMakeLists.txt b/VCA2/CMakeLists.txt new file mode 100644 index 000000000..ce2898405 --- /dev/null +++ b/VCA2/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/platform.cmake) diff --git a/VCA2/README.md b/VCA2/README.md new file mode 100644 index 000000000..44dc15cc1 --- /dev/null +++ b/VCA2/README.md @@ -0,0 +1,14 @@ +The Intel(R) Visual Compute Accelerator 2 (Intel VCA 2) features three Intel(R) Xeon(R) processors E3-1500 v5 with Iris(R) Pro P580. + +See the following documents for instructions on how to setup Intel VCA 2: +- [Intel VCA 2 Product Specification and Hardware Guide](https://www.intel.com/content/dam/support/us/en/documents/server-products/server-accessories/VCA2_HW_User_Guide.pdf) +- [Intel VCA 2 Product Family Software Guide](https://www.intel.com/content/dam/support/us/en/documents/server-products/server-accessories/VCA_SoftwareUserGuide.pdf) + +The Dockerfiles presented in this repo are targeted to run on the Intel VCA 2 nodes. +Therefore the host installation steps mentioned in the parent [README.md](../README.md) apply to each Intel VCA 2 node instead. +The build and test scripts additionally require "sudo" to be available on the node: + +```sh +Ubuntu: apt-get install -y sudo +CentOS: yum install -y sudo +``` diff --git a/VCA2/centos-7.4/CMakeLists.txt b/VCA2/centos-7.4/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/VCA2/centos-7.4/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/VCA2/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt b/VCA2/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..6ff2e2612 --- /dev/null +++ b/VCA2/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "vca2_ffmpeg_gst_devel_centos74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/VCA2/centos-7.4/ffmpeg+gst+dev/Dockerfile b/VCA2/centos-7.4/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..2ea3ff5d3 --- /dev/null +++ b/VCA2/centos-7.4/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,400 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=ON -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Install automake +ARG AUTOMAKE_VER=1.14 +ARG AUTOMAKE_REPO=https://ftp.gnu.org/pub/gnu/automake/automake-${AUTOMAKE_VER}.tar.xz + +RUN wget -O - ${AUTOMAKE_REPO} | tar xJ; \ + cd automake-${AUTOMAKE_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --disable-doc; \ + make -j8; \ + make install + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN yum install -y -q libXrandr-devel + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q libass-devel freetype-devel SDL2-devel libxcb-devel libvdpau-devel texinfo zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM centos:7.4.1708 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 libass numactl libvdpau glib2-2.56.1 libpciaccesslibxcb mesa-libGL libXrandr libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/VCA2/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 b/VCA2/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..bd471c014 --- /dev/null +++ b/VCA2/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,44 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(automake.m4) +include(gst-plugin-vaapi.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.4.1708 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/VCA2/centos-7.4/ffmpeg+gst+dev/build.sh b/VCA2/centos-7.4/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..682db3e6f --- /dev/null +++ b/VCA2/centos-7.4/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-centos74-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/centos-7.4/ffmpeg+gst+dev/shell.sh b/VCA2/centos-7.4/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..b9ca5116b --- /dev/null +++ b/VCA2/centos-7.4/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-centos74-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/centos-7.4/ffmpeg/.dockerignore b/VCA2/centos-7.4/ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/VCA2/centos-7.4/ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/VCA2/centos-7.4/ffmpeg/CMakeLists.txt b/VCA2/centos-7.4/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..3ef8d5650 --- /dev/null +++ b/VCA2/centos-7.4/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "vca2_ffmpeg_centos74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/VCA2/centos-7.4/ffmpeg/Dockerfile b/VCA2/centos-7.4/ffmpeg/Dockerfile new file mode 100644 index 000000000..5aecb325b --- /dev/null +++ b/VCA2/centos-7.4/ffmpeg/Dockerfile @@ -0,0 +1,276 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + rm -rf /home/build/usr/samples; \ + rm -rf /home/build/usr/plugins; \ + make install; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q SDL2-devel libxcb-devel libvdpau-devel zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.4.1708 +LABEL Description="This is the base image for FFMPEG CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 numactl libvdpau libpciaccess; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD + diff --git a/VCA2/centos-7.4/ffmpeg/Dockerfile.m4 b/VCA2/centos-7.4/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..43153ddf2 --- /dev/null +++ b/VCA2/centos-7.4/ffmpeg/Dockerfile.m4 @@ -0,0 +1,35 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.4.1708 +LABEL Description="This is the base image for FFMPEG CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/VCA2/centos-7.4/ffmpeg/build.sh b/VCA2/centos-7.4/ffmpeg/build.sh new file mode 100755 index 000000000..85fcf8373 --- /dev/null +++ b/VCA2/centos-7.4/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-centos74-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/centos-7.4/ffmpeg/shell.sh b/VCA2/centos-7.4/ffmpeg/shell.sh new file mode 100755 index 000000000..adf2c126a --- /dev/null +++ b/VCA2/centos-7.4/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-centos74-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/centos-7.4/gst/CMakeLists.txt b/VCA2/centos-7.4/gst/CMakeLists.txt new file mode 100644 index 000000000..234141d7f --- /dev/null +++ b/VCA2/centos-7.4/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "vca2_gst_centos74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/VCA2/centos-7.4/gst/Dockerfile b/VCA2/centos-7.4/gst/Dockerfile new file mode 100644 index 000000000..7f5b79e35 --- /dev/null +++ b/VCA2/centos-7.4/gst/Dockerfile @@ -0,0 +1,333 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Install automake +ARG AUTOMAKE_VER=1.14 +ARG AUTOMAKE_REPO=https://ftp.gnu.org/pub/gnu/automake/automake-${AUTOMAKE_VER}.tar.xz + +RUN wget -O - ${AUTOMAKE_REPO} | tar xJ; \ + cd automake-${AUTOMAKE_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --disable-doc; \ + make -j8; \ + make install + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN yum install -y -q libXrandr-devel + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.4.1708 +LABEL Description="This is the base image for GStreamer CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl glib2-2.56.1 libpciaccesslibxcb mesa-libGL libXrandr libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/VCA2/centos-7.4/gst/Dockerfile.m4 b/VCA2/centos-7.4/gst/Dockerfile.m4 new file mode 100644 index 000000000..705776a34 --- /dev/null +++ b/VCA2/centos-7.4/gst/Dockerfile.m4 @@ -0,0 +1,40 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(automake.m4) +include(gst-plugin-vaapi.m4) +include(cleanup.m4)dnl + +FROM centos:7.4.1708 +LABEL Description="This is the base image for GStreamer CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/VCA2/centos-7.4/gst/build.sh b/VCA2/centos-7.4/gst/build.sh new file mode 100755 index 000000000..f93eb14e6 --- /dev/null +++ b/VCA2/centos-7.4/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-centos74-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/centos-7.4/gst/shell.sh b/VCA2/centos-7.4/gst/shell.sh new file mode 100755 index 000000000..12fd1adcf --- /dev/null +++ b/VCA2/centos-7.4/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-centos74-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/centos-7.4/nginx+rtmp/.dockerignore b/VCA2/centos-7.4/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/VCA2/centos-7.4/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/VCA2/centos-7.4/nginx+rtmp/CMakeLists.txt b/VCA2/centos-7.4/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..a0ab3967e --- /dev/null +++ b/VCA2/centos-7.4/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "vca2_nginx_rtmp_centos74") +set(dep_image "vca2_ffmpeg_centos74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/VCA2/centos-7.4/nginx+rtmp/Dockerfile b/VCA2/centos-7.4/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..4ff29ed7e --- /dev/null +++ b/VCA2/centos-7.4/nginx+rtmp/Dockerfile @@ -0,0 +1,70 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN yum install -y -q openssl-devel pcre2-devel zlib-devel libxslt-devel + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=nobody --group=nobody --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM vca2-centos74-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN \ + yum install -y -q openssl-libs pcre2 zlib libxslt libxml2 ; \ + rm -rf /var/cache/yum/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/VCA2/centos-7.4/nginx+rtmp/Dockerfile.m4 b/VCA2/centos-7.4/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..b57bb4af2 --- /dev/null +++ b/VCA2/centos-7.4/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM vca2-centos74-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/VCA2/centos-7.4/nginx+rtmp/build.sh b/VCA2/centos-7.4/nginx+rtmp/build.sh new file mode 100755 index 000000000..5b5a41485 --- /dev/null +++ b/VCA2/centos-7.4/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-centos74-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/centos-7.4/nginx+rtmp/nginx.conf b/VCA2/centos-7.4/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/VCA2/centos-7.4/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/VCA2/centos-7.4/nginx+rtmp/nginx.conf.m4 b/VCA2/centos-7.4/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/VCA2/centos-7.4/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/VCA2/centos-7.4/nginx+rtmp/shell.sh b/VCA2/centos-7.4/nginx+rtmp/shell.sh new file mode 100755 index 000000000..da158c418 --- /dev/null +++ b/VCA2/centos-7.4/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-centos74-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/centos-7.5/CMakeLists.txt b/VCA2/centos-7.5/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/VCA2/centos-7.5/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/VCA2/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt b/VCA2/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..55510e49e --- /dev/null +++ b/VCA2/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "vca2_ffmpeg_gst_devel_centos75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/VCA2/centos-7.5/ffmpeg+gst+dev/Dockerfile b/VCA2/centos-7.5/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..93fa05dd1 --- /dev/null +++ b/VCA2/centos-7.5/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,400 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=ON -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Install automake +ARG AUTOMAKE_VER=1.14 +ARG AUTOMAKE_REPO=https://ftp.gnu.org/pub/gnu/automake/automake-${AUTOMAKE_VER}.tar.xz + +RUN wget -O - ${AUTOMAKE_REPO} | tar xJ; \ + cd automake-${AUTOMAKE_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --disable-doc; \ + make -j8; \ + make install + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN yum install -y -q libXrandr-devel + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q libass-devel freetype-devel SDL2-devel libxcb-devel libvdpau-devel texinfo zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM centos:7.5.1804 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 libass numactl libvdpau glib2-2.56.1 libpciaccesslibxcb mesa-libGL libXrandr libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/VCA2/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 b/VCA2/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..9ca5082f2 --- /dev/null +++ b/VCA2/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,44 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(automake.m4) +include(gst-plugin-vaapi.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.5.1804 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/VCA2/centos-7.5/ffmpeg+gst+dev/build.sh b/VCA2/centos-7.5/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..4227ff576 --- /dev/null +++ b/VCA2/centos-7.5/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-centos75-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/centos-7.5/ffmpeg+gst+dev/shell.sh b/VCA2/centos-7.5/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..46e27cf9b --- /dev/null +++ b/VCA2/centos-7.5/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-centos75-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/centos-7.5/ffmpeg/CMakeLists.txt b/VCA2/centos-7.5/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..da692f90d --- /dev/null +++ b/VCA2/centos-7.5/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "vca2_ffmpeg_centos75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/VCA2/centos-7.5/ffmpeg/Dockerfile b/VCA2/centos-7.5/ffmpeg/Dockerfile new file mode 100644 index 000000000..1805df9e3 --- /dev/null +++ b/VCA2/centos-7.5/ffmpeg/Dockerfile @@ -0,0 +1,276 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + rm -rf /home/build/usr/samples; \ + rm -rf /home/build/usr/plugins; \ + make install; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q SDL2-devel libxcb-devel libvdpau-devel zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.5.1804 +LABEL Description="This is the base image for FFMPEG CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 numactl libvdpau libpciaccess; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD + diff --git a/VCA2/centos-7.5/ffmpeg/Dockerfile.m4 b/VCA2/centos-7.5/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..55cace77d --- /dev/null +++ b/VCA2/centos-7.5/ffmpeg/Dockerfile.m4 @@ -0,0 +1,35 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.5.1804 +LABEL Description="This is the base image for FFMPEG CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/VCA2/centos-7.5/ffmpeg/build.sh b/VCA2/centos-7.5/ffmpeg/build.sh new file mode 100755 index 000000000..af6018f55 --- /dev/null +++ b/VCA2/centos-7.5/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-centos75-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/centos-7.5/ffmpeg/shell.sh b/VCA2/centos-7.5/ffmpeg/shell.sh new file mode 100755 index 000000000..f6a9ea1d9 --- /dev/null +++ b/VCA2/centos-7.5/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-centos75-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/centos-7.5/gst/CMakeLists.txt b/VCA2/centos-7.5/gst/CMakeLists.txt new file mode 100644 index 000000000..7abe22eec --- /dev/null +++ b/VCA2/centos-7.5/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "vca2_gst_centos75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/VCA2/centos-7.5/gst/Dockerfile b/VCA2/centos-7.5/gst/Dockerfile new file mode 100644 index 000000000..779c3fa23 --- /dev/null +++ b/VCA2/centos-7.5/gst/Dockerfile @@ -0,0 +1,333 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Install automake +ARG AUTOMAKE_VER=1.14 +ARG AUTOMAKE_REPO=https://ftp.gnu.org/pub/gnu/automake/automake-${AUTOMAKE_VER}.tar.xz + +RUN wget -O - ${AUTOMAKE_REPO} | tar xJ; \ + cd automake-${AUTOMAKE_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --disable-doc; \ + make -j8; \ + make install + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN yum install -y -q libXrandr-devel + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.5.1804 +LABEL Description="This is the base image for GStreamer CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl glib2-2.56.1 libpciaccesslibxcb mesa-libGL libXrandr libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/VCA2/centos-7.5/gst/Dockerfile.m4 b/VCA2/centos-7.5/gst/Dockerfile.m4 new file mode 100644 index 000000000..13c833a6a --- /dev/null +++ b/VCA2/centos-7.5/gst/Dockerfile.m4 @@ -0,0 +1,40 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(automake.m4) +include(gst-plugin-vaapi.m4) +include(cleanup.m4)dnl + +FROM centos:7.5.1804 +LABEL Description="This is the base image for GStreamer CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/VCA2/centos-7.5/gst/build.sh b/VCA2/centos-7.5/gst/build.sh new file mode 100755 index 000000000..08f6cc233 --- /dev/null +++ b/VCA2/centos-7.5/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-centos75-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/centos-7.5/gst/shell.sh b/VCA2/centos-7.5/gst/shell.sh new file mode 100755 index 000000000..4aa9d135a --- /dev/null +++ b/VCA2/centos-7.5/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-centos75-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/centos-7.5/nginx+rtmp/.dockerignore b/VCA2/centos-7.5/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/VCA2/centos-7.5/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/VCA2/centos-7.5/nginx+rtmp/CMakeLists.txt b/VCA2/centos-7.5/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..2b795b452 --- /dev/null +++ b/VCA2/centos-7.5/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "vca2_nginx_rtmp_centos75") +set(dep_image "vca2_ffmpeg_centos75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/VCA2/centos-7.5/nginx+rtmp/Dockerfile b/VCA2/centos-7.5/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..4835fedf6 --- /dev/null +++ b/VCA2/centos-7.5/nginx+rtmp/Dockerfile @@ -0,0 +1,70 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN yum install -y -q openssl-devel pcre2-devel zlib-devel libxslt-devel + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=nobody --group=nobody --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM vca2-centos75-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN \ + yum install -y -q openssl-libs pcre2 zlib libxslt libxml2 ; \ + rm -rf /var/cache/yum/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/VCA2/centos-7.5/nginx+rtmp/Dockerfile.m4 b/VCA2/centos-7.5/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..467cfb4c0 --- /dev/null +++ b/VCA2/centos-7.5/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM vca2-centos75-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/VCA2/centos-7.5/nginx+rtmp/build.sh b/VCA2/centos-7.5/nginx+rtmp/build.sh new file mode 100755 index 000000000..313be18c3 --- /dev/null +++ b/VCA2/centos-7.5/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-centos75-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/centos-7.5/nginx+rtmp/nginx.conf b/VCA2/centos-7.5/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/VCA2/centos-7.5/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/VCA2/centos-7.5/nginx+rtmp/nginx.conf.m4 b/VCA2/centos-7.5/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/VCA2/centos-7.5/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/VCA2/centos-7.5/nginx+rtmp/shell.sh b/VCA2/centos-7.5/nginx+rtmp/shell.sh new file mode 100755 index 000000000..94d8c8777 --- /dev/null +++ b/VCA2/centos-7.5/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-centos75-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/centos-7.6/CMakeLists.txt b/VCA2/centos-7.6/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/VCA2/centos-7.6/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/VCA2/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt b/VCA2/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..2fabfb5ee --- /dev/null +++ b/VCA2/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "vca2_ffmpeg_gst_devel_centos76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/VCA2/centos-7.6/ffmpeg+gst+dev/Dockerfile b/VCA2/centos-7.6/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..9841fa65e --- /dev/null +++ b/VCA2/centos-7.6/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,400 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=ON -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Install automake +ARG AUTOMAKE_VER=1.14 +ARG AUTOMAKE_REPO=https://ftp.gnu.org/pub/gnu/automake/automake-${AUTOMAKE_VER}.tar.xz + +RUN wget -O - ${AUTOMAKE_REPO} | tar xJ; \ + cd automake-${AUTOMAKE_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --disable-doc; \ + make -j8; \ + make install + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN yum install -y -q libXrandr-devel + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q libass-devel freetype-devel SDL2-devel libxcb-devel libvdpau-devel texinfo zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM centos:7.6.1810 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 libass numactl libvdpau glib2-2.56.1 libpciaccesslibxcb mesa-libGL libXrandr libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/VCA2/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 b/VCA2/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..8fc213948 --- /dev/null +++ b/VCA2/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,44 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(automake.m4) +include(gst-plugin-vaapi.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.6.1810 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/VCA2/centos-7.6/ffmpeg+gst+dev/build.sh b/VCA2/centos-7.6/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..65f25acb2 --- /dev/null +++ b/VCA2/centos-7.6/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-centos76-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/centos-7.6/ffmpeg+gst+dev/shell.sh b/VCA2/centos-7.6/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..7270e4fc2 --- /dev/null +++ b/VCA2/centos-7.6/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-centos76-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/centos-7.6/ffmpeg/CMakeLists.txt b/VCA2/centos-7.6/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..95ab19e3d --- /dev/null +++ b/VCA2/centos-7.6/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "vca2_ffmpeg_centos76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/VCA2/centos-7.6/ffmpeg/Dockerfile b/VCA2/centos-7.6/ffmpeg/Dockerfile new file mode 100644 index 000000000..7bb9c01be --- /dev/null +++ b/VCA2/centos-7.6/ffmpeg/Dockerfile @@ -0,0 +1,276 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + rm -rf /home/build/usr/samples; \ + rm -rf /home/build/usr/plugins; \ + make install; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q SDL2-devel libxcb-devel libvdpau-devel zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.6.1810 +LABEL Description="This is the base image for FFMPEG CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 numactl libvdpau libpciaccess; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD + diff --git a/VCA2/centos-7.6/ffmpeg/Dockerfile.m4 b/VCA2/centos-7.6/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..80e8a5d40 --- /dev/null +++ b/VCA2/centos-7.6/ffmpeg/Dockerfile.m4 @@ -0,0 +1,35 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.6.1810 +LABEL Description="This is the base image for FFMPEG CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/VCA2/centos-7.6/ffmpeg/build.sh b/VCA2/centos-7.6/ffmpeg/build.sh new file mode 100755 index 000000000..f6a7c80de --- /dev/null +++ b/VCA2/centos-7.6/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-centos76-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/centos-7.6/ffmpeg/shell.sh b/VCA2/centos-7.6/ffmpeg/shell.sh new file mode 100755 index 000000000..6c1f60328 --- /dev/null +++ b/VCA2/centos-7.6/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-centos76-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/centos-7.6/gst/CMakeLists.txt b/VCA2/centos-7.6/gst/CMakeLists.txt new file mode 100644 index 000000000..ad0c43ed5 --- /dev/null +++ b/VCA2/centos-7.6/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "vca2_gst_centos76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/VCA2/centos-7.6/gst/Dockerfile b/VCA2/centos-7.6/gst/Dockerfile new file mode 100644 index 000000000..211c480af --- /dev/null +++ b/VCA2/centos-7.6/gst/Dockerfile @@ -0,0 +1,333 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Install automake +ARG AUTOMAKE_VER=1.14 +ARG AUTOMAKE_REPO=https://ftp.gnu.org/pub/gnu/automake/automake-${AUTOMAKE_VER}.tar.xz + +RUN wget -O - ${AUTOMAKE_REPO} | tar xJ; \ + cd automake-${AUTOMAKE_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --disable-doc; \ + make -j8; \ + make install + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN yum install -y -q libXrandr-devel + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.6.1810 +LABEL Description="This is the base image for GStreamer CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl glib2-2.56.1 libpciaccesslibxcb mesa-libGL libXrandr libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/VCA2/centos-7.6/gst/Dockerfile.m4 b/VCA2/centos-7.6/gst/Dockerfile.m4 new file mode 100644 index 000000000..5a02b81e8 --- /dev/null +++ b/VCA2/centos-7.6/gst/Dockerfile.m4 @@ -0,0 +1,40 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(automake.m4) +include(gst-plugin-vaapi.m4) +include(cleanup.m4)dnl + +FROM centos:7.6.1810 +LABEL Description="This is the base image for GStreamer CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/VCA2/centos-7.6/gst/build.sh b/VCA2/centos-7.6/gst/build.sh new file mode 100755 index 000000000..28a30d861 --- /dev/null +++ b/VCA2/centos-7.6/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-centos76-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/centos-7.6/gst/shell.sh b/VCA2/centos-7.6/gst/shell.sh new file mode 100755 index 000000000..5374c294a --- /dev/null +++ b/VCA2/centos-7.6/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-centos76-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/centos-7.6/nginx+rtmp/.dockerignore b/VCA2/centos-7.6/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/VCA2/centos-7.6/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/VCA2/centos-7.6/nginx+rtmp/CMakeLists.txt b/VCA2/centos-7.6/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..0b5d0f048 --- /dev/null +++ b/VCA2/centos-7.6/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "vca2_nginx_rtmp_centos76") +set(dep_image "vca2_ffmpeg_centos76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/VCA2/centos-7.6/nginx+rtmp/Dockerfile b/VCA2/centos-7.6/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..070c58a97 --- /dev/null +++ b/VCA2/centos-7.6/nginx+rtmp/Dockerfile @@ -0,0 +1,70 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN yum install -y -q openssl-devel pcre2-devel zlib-devel libxslt-devel + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=nobody --group=nobody --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM vca2-centos76-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN \ + yum install -y -q openssl-libs pcre2 zlib libxslt libxml2 ; \ + rm -rf /var/cache/yum/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/VCA2/centos-7.6/nginx+rtmp/Dockerfile.m4 b/VCA2/centos-7.6/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..3cea6229d --- /dev/null +++ b/VCA2/centos-7.6/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM vca2-centos76-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/VCA2/centos-7.6/nginx+rtmp/build.sh b/VCA2/centos-7.6/nginx+rtmp/build.sh new file mode 100755 index 000000000..712d53693 --- /dev/null +++ b/VCA2/centos-7.6/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-centos76-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/centos-7.6/nginx+rtmp/nginx.conf b/VCA2/centos-7.6/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/VCA2/centos-7.6/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/VCA2/centos-7.6/nginx+rtmp/nginx.conf.m4 b/VCA2/centos-7.6/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/VCA2/centos-7.6/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/VCA2/centos-7.6/nginx+rtmp/shell.sh b/VCA2/centos-7.6/nginx+rtmp/shell.sh new file mode 100755 index 000000000..e7493e6e3 --- /dev/null +++ b/VCA2/centos-7.6/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-centos76-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/ubuntu-16.04/CMakeLists.txt b/VCA2/ubuntu-16.04/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/VCA2/ubuntu-16.04/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/VCA2/ubuntu-16.04/ffmpeg+gst+dev/CMakeLists.txt b/VCA2/ubuntu-16.04/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..8ce535223 --- /dev/null +++ b/VCA2/ubuntu-16.04/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "vca2_ffmpeg_gst_devel_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/VCA2/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile b/VCA2/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..50d137b85 --- /dev/null +++ b/VCA2/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,369 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libpciaccess-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib/x86_64-linux-gnu -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=ON -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib/x86_64-linux-gnu"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib/x86_64-linux-gnu" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libxrandr-dev + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libass-dev libfreetype6-dev libvdpau-dev libsdl2-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev texinfo zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM ubuntu:16.04 +LABEL Description="This is the base image for developing FFMPEG and GStreamer applications based on Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxv1 libxcb-shm0 libxcb-shape0 libxcb-xfixes0 libsdl2-2.0-0 libasound2 libvdpau1 libnuma1 libass5 libssl1.0.0 libglib2.0 libdrm-intel1 libx11-xcb1 libgl1-mesa-glx libxrandr2 libpng12-0 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/VCA2/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 b/VCA2/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..911f541e0 --- /dev/null +++ b/VCA2/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,42 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(gst-plugin-vaapi.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:16.04 +LABEL Description="This is the base image for developing FFMPEG and GStreamer applications based on Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/VCA2/ubuntu-16.04/ffmpeg+gst+dev/build.sh b/VCA2/ubuntu-16.04/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..da82ae547 --- /dev/null +++ b/VCA2/ubuntu-16.04/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1604-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/ubuntu-16.04/ffmpeg+gst+dev/shell.sh b/VCA2/ubuntu-16.04/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..87cdcb5a5 --- /dev/null +++ b/VCA2/ubuntu-16.04/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1604-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/ubuntu-16.04/ffmpeg/.dockerignore b/VCA2/ubuntu-16.04/ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/VCA2/ubuntu-16.04/ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/VCA2/ubuntu-16.04/ffmpeg/CMakeLists.txt b/VCA2/ubuntu-16.04/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..e225fbbac --- /dev/null +++ b/VCA2/ubuntu-16.04/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "vca2_ffmpeg_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/VCA2/ubuntu-16.04/ffmpeg/Dockerfile b/VCA2/ubuntu-16.04/ffmpeg/Dockerfile new file mode 100644 index 000000000..45c6a4846 --- /dev/null +++ b/VCA2/ubuntu-16.04/ffmpeg/Dockerfile @@ -0,0 +1,255 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libpciaccess-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + rm -rf /home/build/usr/samples; \ + rm -rf /home/build/usr/plugins; \ + make install; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libvdpau-dev libsdl2-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:16.04 +LABEL Description="This is the base image for FFMPEG Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxv1 libxcb-shm0 libxcb-shape0 libxcb-xfixes0 libsdl2-2.0-0 libasound2 libvdpau1 libnuma1 libssl1.0.0 ; \ + rm -rf /var/lib/apt/lists/*; +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri +ENV LIBVA_DRIVER_NAME=iHD + diff --git a/VCA2/ubuntu-16.04/ffmpeg/Dockerfile.m4 b/VCA2/ubuntu-16.04/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..7a8c36682 --- /dev/null +++ b/VCA2/ubuntu-16.04/ffmpeg/Dockerfile.m4 @@ -0,0 +1,33 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:16.04 +LABEL Description="This is the base image for FFMPEG Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/VCA2/ubuntu-16.04/ffmpeg/build.sh b/VCA2/ubuntu-16.04/ffmpeg/build.sh new file mode 100755 index 000000000..120370132 --- /dev/null +++ b/VCA2/ubuntu-16.04/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1604-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/ubuntu-16.04/ffmpeg/shell.sh b/VCA2/ubuntu-16.04/ffmpeg/shell.sh new file mode 100755 index 000000000..e2d8d8f66 --- /dev/null +++ b/VCA2/ubuntu-16.04/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1604-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/ubuntu-16.04/gst/CMakeLists.txt b/VCA2/ubuntu-16.04/gst/CMakeLists.txt new file mode 100644 index 000000000..a9858f0a5 --- /dev/null +++ b/VCA2/ubuntu-16.04/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "vca2_gst_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/VCA2/ubuntu-16.04/gst/Dockerfile b/VCA2/ubuntu-16.04/gst/Dockerfile new file mode 100644 index 000000000..145fc8c70 --- /dev/null +++ b/VCA2/ubuntu-16.04/gst/Dockerfile @@ -0,0 +1,302 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libpciaccess-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libxrandr-dev + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:16.04 +LABEL Description="This is the base image for GStreamer Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma1 libssl1.0.0 libglib2.0 libdrm-intel1 libx11-xcb1 libgl1-mesa-glx libxrandr2 libpng12-0 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/VCA2/ubuntu-16.04/gst/Dockerfile.m4 b/VCA2/ubuntu-16.04/gst/Dockerfile.m4 new file mode 100644 index 000000000..14e37d6fc --- /dev/null +++ b/VCA2/ubuntu-16.04/gst/Dockerfile.m4 @@ -0,0 +1,38 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gmmlib.m4) +include(libva.m4) +include(media-driver.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(gst-plugin-vaapi.m4) +include(cleanup.m4)dnl + +FROM ubuntu:16.04 +LABEL Description="This is the base image for GStreamer Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/VCA2/ubuntu-16.04/gst/build.sh b/VCA2/ubuntu-16.04/gst/build.sh new file mode 100755 index 000000000..ec4319556 --- /dev/null +++ b/VCA2/ubuntu-16.04/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1604-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/ubuntu-16.04/gst/shell.sh b/VCA2/ubuntu-16.04/gst/shell.sh new file mode 100755 index 000000000..9010d99e3 --- /dev/null +++ b/VCA2/ubuntu-16.04/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1604-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/ubuntu-16.04/nginx+rtmp/.dockerignore b/VCA2/ubuntu-16.04/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/VCA2/ubuntu-16.04/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/VCA2/ubuntu-16.04/nginx+rtmp/CMakeLists.txt b/VCA2/ubuntu-16.04/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..577e23e29 --- /dev/null +++ b/VCA2/ubuntu-16.04/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "vca2_nginx_rtmp_ubuntu1604") +set(dep_image "vca2_ffmpeg_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/VCA2/ubuntu-16.04/nginx+rtmp/Dockerfile b/VCA2/ubuntu-16.04/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..d118877fc --- /dev/null +++ b/VCA2/ubuntu-16.04/nginx+rtmp/Dockerfile @@ -0,0 +1,69 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libssl-dev libpcre3-dev zlib1g-dev libxslt1-dev + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/x86_64-linux-gnu/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=www-data --group=www-data --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM vca2-ubuntu1604-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxml2 libssl1.0.0 libpcre3 zlib1g libxslt1.1 ; \ + rm -rf /var/lib/apt/lists/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/VCA2/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 b/VCA2/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..df064851b --- /dev/null +++ b/VCA2/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM vca2-ubuntu1604-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/VCA2/ubuntu-16.04/nginx+rtmp/build.sh b/VCA2/ubuntu-16.04/nginx+rtmp/build.sh new file mode 100755 index 000000000..bc6cf1dfb --- /dev/null +++ b/VCA2/ubuntu-16.04/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1604-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/ubuntu-16.04/nginx+rtmp/nginx.conf b/VCA2/ubuntu-16.04/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/VCA2/ubuntu-16.04/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/VCA2/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 b/VCA2/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/VCA2/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/VCA2/ubuntu-16.04/nginx+rtmp/shell.sh b/VCA2/ubuntu-16.04/nginx+rtmp/shell.sh new file mode 100755 index 000000000..725d7122f --- /dev/null +++ b/VCA2/ubuntu-16.04/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1604-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/ubuntu-18.04/CMakeLists.txt b/VCA2/ubuntu-18.04/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/VCA2/ubuntu-18.04/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/VCA2/ubuntu-18.04/ffmpeg+gst+dev/CMakeLists.txt b/VCA2/ubuntu-18.04/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..7315fccbe --- /dev/null +++ b/VCA2/ubuntu-18.04/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "vca2_ffmpeg_gst_devel_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/VCA2/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile b/VCA2/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..c07b302e0 --- /dev/null +++ b/VCA2/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,371 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libpciaccess-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib/x86_64-linux-gnu -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=ON -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib/x86_64-linux-gnu"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib/x86_64-linux-gnu" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libxrandr-dev + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libass-dev libfreetype6-dev libvdpau-dev libsdl2-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev texinfo zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM ubuntu:18.04 +LABEL Description="This is the image for FFMPEG & GSTREAMER application development on Ubuntu 18.04" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxv1 libxcb-shm0 libxcb-shape0 libxcb-xfixes0 libsdl2-2.0-0 libasound2 libvdpau1 libnuma1 libass9 libssl1.1 libpciaccess0 libglib2.0 libdrm-intel1 libx11-xcb1 libgl1-mesa-glx libxrandr2 libpng16-16 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/VCA2/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 b/VCA2/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..a1f5e9074 --- /dev/null +++ b/VCA2/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,42 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(gst-plugin-vaapi.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:18.04 +LABEL Description="This is the image for FFMPEG & GSTREAMER application development on Ubuntu 18.04" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/VCA2/ubuntu-18.04/ffmpeg+gst+dev/build.sh b/VCA2/ubuntu-18.04/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..9f9a47d25 --- /dev/null +++ b/VCA2/ubuntu-18.04/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1804-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/ubuntu-18.04/ffmpeg+gst+dev/shell.sh b/VCA2/ubuntu-18.04/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..0207fd5bb --- /dev/null +++ b/VCA2/ubuntu-18.04/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1804-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/ubuntu-18.04/ffmpeg/CMakeLists.txt b/VCA2/ubuntu-18.04/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..fe3668eaa --- /dev/null +++ b/VCA2/ubuntu-18.04/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "vca2_ffmpeg_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/VCA2/ubuntu-18.04/ffmpeg/Dockerfile b/VCA2/ubuntu-18.04/ffmpeg/Dockerfile new file mode 100644 index 000000000..fd5702ef5 --- /dev/null +++ b/VCA2/ubuntu-18.04/ffmpeg/Dockerfile @@ -0,0 +1,256 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libpciaccess-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + rm -rf /home/build/usr/samples; \ + rm -rf /home/build/usr/plugins; \ + make install; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libvdpau-dev libsdl2-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:18.04 +LABEL Description="This is the base image for FFMPEG Ubuntu 18.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxv1 libxcb-shm0 libxcb-shape0 libxcb-xfixes0 libsdl2-2.0-0 libasound2 libvdpau1 libnuma1 libssl1.1 libpciaccess0 ; \ + rm -rf /var/lib/apt/lists/*; +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri +ENV LIBVA_DRIVER_NAME=iHD + diff --git a/VCA2/ubuntu-18.04/ffmpeg/Dockerfile.m4 b/VCA2/ubuntu-18.04/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..d7e6a16cd --- /dev/null +++ b/VCA2/ubuntu-18.04/ffmpeg/Dockerfile.m4 @@ -0,0 +1,33 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:18.04 +LABEL Description="This is the base image for FFMPEG Ubuntu 18.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/VCA2/ubuntu-18.04/ffmpeg/build.sh b/VCA2/ubuntu-18.04/ffmpeg/build.sh new file mode 100755 index 000000000..9a7b6e291 --- /dev/null +++ b/VCA2/ubuntu-18.04/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1804-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/ubuntu-18.04/ffmpeg/shell.sh b/VCA2/ubuntu-18.04/ffmpeg/shell.sh new file mode 100755 index 000000000..9c959bb8d --- /dev/null +++ b/VCA2/ubuntu-18.04/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1804-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/ubuntu-18.04/gst/CMakeLists.txt b/VCA2/ubuntu-18.04/gst/CMakeLists.txt new file mode 100644 index 000000000..6c1990d73 --- /dev/null +++ b/VCA2/ubuntu-18.04/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "vca2_gst_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/VCA2/ubuntu-18.04/gst/Dockerfile b/VCA2/ubuntu-18.04/gst/Dockerfile new file mode 100644 index 000000000..658562f78 --- /dev/null +++ b/VCA2/ubuntu-18.04/gst/Dockerfile @@ -0,0 +1,304 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libpciaccess-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libxrandr-dev + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:18.04 +LABEL Description="This is the base image for GStreamer Ubuntu 18.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma1 libssl1.1 libglib2.0 libdrm-intel1 libx11-xcb1 libgl1-mesa-glx libxrandr2 libpng16-16 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/VCA2/ubuntu-18.04/gst/Dockerfile.m4 b/VCA2/ubuntu-18.04/gst/Dockerfile.m4 new file mode 100644 index 000000000..0efe8b05c --- /dev/null +++ b/VCA2/ubuntu-18.04/gst/Dockerfile.m4 @@ -0,0 +1,38 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gmmlib.m4) +include(libva.m4) +include(media-driver.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(gst-plugin-vaapi.m4) +include(cleanup.m4)dnl + +FROM ubuntu:18.04 +LABEL Description="This is the base image for GStreamer Ubuntu 18.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/VCA2/ubuntu-18.04/gst/build.sh b/VCA2/ubuntu-18.04/gst/build.sh new file mode 100755 index 000000000..197b52837 --- /dev/null +++ b/VCA2/ubuntu-18.04/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1804-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/ubuntu-18.04/gst/shell.sh b/VCA2/ubuntu-18.04/gst/shell.sh new file mode 100755 index 000000000..cb280a41e --- /dev/null +++ b/VCA2/ubuntu-18.04/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1804-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/VCA2/ubuntu-18.04/nginx+rtmp/.dockerignore b/VCA2/ubuntu-18.04/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/VCA2/ubuntu-18.04/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/VCA2/ubuntu-18.04/nginx+rtmp/CMakeLists.txt b/VCA2/ubuntu-18.04/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..ca221fa98 --- /dev/null +++ b/VCA2/ubuntu-18.04/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "vca2_nginx_rtmp_ubuntu1804") +set(dep_image "vca2_ffmpeg_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/VCA2/ubuntu-18.04/nginx+rtmp/Dockerfile b/VCA2/ubuntu-18.04/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..58673f58e --- /dev/null +++ b/VCA2/ubuntu-18.04/nginx+rtmp/Dockerfile @@ -0,0 +1,70 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libssl-dev libpcre3-dev zlib1g-dev libxslt1-dev + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/x86_64-linux-gnu/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=www-data --group=www-data --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM vca2-ubuntu1804-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxml2 libssl1.0.0 libpcre3 zlib1g libxslt1.1 ; \ + rm -rf /var/lib/apt/lists/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/VCA2/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 b/VCA2/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..0206577e5 --- /dev/null +++ b/VCA2/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM vca2-ubuntu1804-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/VCA2/ubuntu-18.04/nginx+rtmp/build.sh b/VCA2/ubuntu-18.04/nginx+rtmp/build.sh new file mode 100755 index 000000000..9f6d31a45 --- /dev/null +++ b/VCA2/ubuntu-18.04/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1804-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/VCA2/ubuntu-18.04/nginx+rtmp/nginx.conf b/VCA2/ubuntu-18.04/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/VCA2/ubuntu-18.04/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/VCA2/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 b/VCA2/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/VCA2/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/VCA2/ubuntu-18.04/nginx+rtmp/shell.sh b/VCA2/ubuntu-18.04/nginx+rtmp/shell.sh new file mode 100755 index 000000000..14c9353f7 --- /dev/null +++ b/VCA2/ubuntu-18.04/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="vca2-ubuntu1804-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/CMakeLists.txt b/Xeon/CMakeLists.txt new file mode 100644 index 000000000..ce2898405 --- /dev/null +++ b/Xeon/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/platform.cmake) diff --git a/Xeon/README.md b/Xeon/README.md new file mode 100644 index 000000000..c68ca417f --- /dev/null +++ b/Xeon/README.md @@ -0,0 +1,6 @@ +This folder contains docker files to build CPU software stack for Intel(R) Xeon(R) -SP or -D scalable processors. + +### Setup host platform: + +No special setup is needed except to install the docker.ce service and setup proxy if you are behind a firewall. See [../README.md](../README.md) for instructions. + diff --git a/Xeon/centos-7.4/CMakeLists.txt b/Xeon/centos-7.4/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/Xeon/centos-7.4/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/Xeon/centos-7.4/dldt+ffmpeg/CMakeLists.txt b/Xeon/centos-7.4/dldt+ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..3dab5d56d --- /dev/null +++ b/Xeon/centos-7.4/dldt+ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_dldt_ffmpeg_cent74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/Xeon/centos-7.4/dldt+ffmpeg/Dockerfile b/Xeon/centos-7.4/dldt+ffmpeg/Dockerfile new file mode 100644 index 000000000..7af20547d --- /dev/null +++ b/Xeon/centos-7.4/dldt+ffmpeg/Dockerfile @@ -0,0 +1,245 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --disable-xlib --disable-sdl2 --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.4.1708 +LABEL Description="This is the image for DLDT and FFMPEG on CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl ; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.4/dldt+ffmpeg/Dockerfile.m4 b/Xeon/centos-7.4/dldt+ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..8513c25e9 --- /dev/null +++ b/Xeon/centos-7.4/dldt+ffmpeg/Dockerfile.m4 @@ -0,0 +1,31 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(dldt-ie.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.4.1708 +LABEL Description="This is the image for DLDT and FFMPEG on CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.4/dldt+ffmpeg/build.sh b/Xeon/centos-7.4/dldt+ffmpeg/build.sh new file mode 100755 index 000000000..01be4653d --- /dev/null +++ b/Xeon/centos-7.4/dldt+ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos74-dldt-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.4/dldt+ffmpeg/shell.sh b/Xeon/centos-7.4/dldt+ffmpeg/shell.sh new file mode 100755 index 000000000..aecbc9bad --- /dev/null +++ b/Xeon/centos-7.4/dldt+ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos74-dldt-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.4/dldt+gst/CMakeLists.txt b/Xeon/centos-7.4/dldt+gst/CMakeLists.txt new file mode 100644 index 000000000..089aee3ed --- /dev/null +++ b/Xeon/centos-7.4/dldt+gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_dldt_gst_centos74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/centos-7.4/dldt+gst/Dockerfile b/Xeon/centos-7.4/dldt+gst/Dockerfile new file mode 100644 index 000000000..665f4d0ca --- /dev/null +++ b/Xeon/centos-7.4/dldt+gst/Dockerfile @@ -0,0 +1,290 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.4.1708 +LABEL Description="This is the image for DLDT and GSTREAMER on CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl glib2-2.56.1 libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.4/dldt+gst/Dockerfile.m4 b/Xeon/centos-7.4/dldt+gst/Dockerfile.m4 new file mode 100644 index 000000000..c131f3c17 --- /dev/null +++ b/Xeon/centos-7.4/dldt+gst/Dockerfile.m4 @@ -0,0 +1,35 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(cleanup.m4)dnl + +FROM centos:7.4.1708 +LABEL Description="This is the image for DLDT and GSTREAMER on CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.4/dldt+gst/build.sh b/Xeon/centos-7.4/dldt+gst/build.sh new file mode 100755 index 000000000..1bba7710b --- /dev/null +++ b/Xeon/centos-7.4/dldt+gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos74-dldt-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.4/dldt+gst/shell.sh b/Xeon/centos-7.4/dldt+gst/shell.sh new file mode 100755 index 000000000..3b4f2c3ec --- /dev/null +++ b/Xeon/centos-7.4/dldt+gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos74-dldt-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt b/Xeon/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..15e373c7d --- /dev/null +++ b/Xeon/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeon_ffmpeg_gst_devel_centos74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/centos-7.4/ffmpeg+gst+dev/Dockerfile b/Xeon/centos-7.4/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..81e5c09a6 --- /dev/null +++ b/Xeon/centos-7.4/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,310 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q libass-devel freetype-devel SDL2-devel libxcb-devel texinfo zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM centos:7.4.1708 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 libass numactl glib2-2.56.1 libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 b/Xeon/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..638074023 --- /dev/null +++ b/Xeon/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,37 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.4.1708 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.4/ffmpeg+gst+dev/build.sh b/Xeon/centos-7.4/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..fd7c77b74 --- /dev/null +++ b/Xeon/centos-7.4/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos74-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.4/ffmpeg+gst+dev/shell.sh b/Xeon/centos-7.4/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..57b7e3f9d --- /dev/null +++ b/Xeon/centos-7.4/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos74-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.4/ffmpeg/CMakeLists.txt b/Xeon/centos-7.4/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..1b480b73a --- /dev/null +++ b/Xeon/centos-7.4/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_ffmpeg_centos74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/Xeon/centos-7.4/ffmpeg/Dockerfile b/Xeon/centos-7.4/ffmpeg/Dockerfile new file mode 100644 index 000000000..42e54208a --- /dev/null +++ b/Xeon/centos-7.4/ffmpeg/Dockerfile @@ -0,0 +1,210 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --disable-xlib --disable-sdl2 --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.4.1708 +LABEL Description="This is the base image for FFMPEG CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl ; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.4/ffmpeg/Dockerfile.m4 b/Xeon/centos-7.4/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..b9ae2d0ea --- /dev/null +++ b/Xeon/centos-7.4/ffmpeg/Dockerfile.m4 @@ -0,0 +1,30 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.4.1708 +LABEL Description="This is the base image for FFMPEG CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.4/ffmpeg/build.sh b/Xeon/centos-7.4/ffmpeg/build.sh new file mode 100755 index 000000000..2c3aeb0d9 --- /dev/null +++ b/Xeon/centos-7.4/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos74-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.4/ffmpeg/shell.sh b/Xeon/centos-7.4/ffmpeg/shell.sh new file mode 100755 index 000000000..d9ff763c5 --- /dev/null +++ b/Xeon/centos-7.4/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos74-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.4/gst/CMakeLists.txt b/Xeon/centos-7.4/gst/CMakeLists.txt new file mode 100644 index 000000000..00c8666e5 --- /dev/null +++ b/Xeon/centos-7.4/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_gst_centos74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/centos-7.4/gst/Dockerfile b/Xeon/centos-7.4/gst/Dockerfile new file mode 100644 index 000000000..7cfa3bffd --- /dev/null +++ b/Xeon/centos-7.4/gst/Dockerfile @@ -0,0 +1,255 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.4.1708 +LABEL Description="This is the base image for GStreamer CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl glib2-2.56.1 libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.4/gst/Dockerfile.m4 b/Xeon/centos-7.4/gst/Dockerfile.m4 new file mode 100644 index 000000000..f9430ecfe --- /dev/null +++ b/Xeon/centos-7.4/gst/Dockerfile.m4 @@ -0,0 +1,34 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(cleanup.m4)dnl + +FROM centos:7.4.1708 +LABEL Description="This is the base image for GStreamer CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.4/gst/build.sh b/Xeon/centos-7.4/gst/build.sh new file mode 100755 index 000000000..63feb8689 --- /dev/null +++ b/Xeon/centos-7.4/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos74-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.4/gst/shell.sh b/Xeon/centos-7.4/gst/shell.sh new file mode 100755 index 000000000..2f15de04b --- /dev/null +++ b/Xeon/centos-7.4/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos74-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.4/nginx+rtmp/CMakeLists.txt b/Xeon/centos-7.4/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..3d83686b0 --- /dev/null +++ b/Xeon/centos-7.4/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeon_nginx_rtmp_centos74") +set(dep_image "xeon_ffmpeg_centos74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/Xeon/centos-7.4/nginx+rtmp/Dockerfile b/Xeon/centos-7.4/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..a259f64a8 --- /dev/null +++ b/Xeon/centos-7.4/nginx+rtmp/Dockerfile @@ -0,0 +1,70 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN yum install -y -q openssl-devel pcre2-devel zlib-devel libxslt-devel + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=nobody --group=nobody --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM xeon-centos74-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN \ + yum install -y -q openssl-libs pcre2 zlib libxslt libxml2 ; \ + rm -rf /var/cache/yum/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/Xeon/centos-7.4/nginx+rtmp/Dockerfile.m4 b/Xeon/centos-7.4/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..d76df6a56 --- /dev/null +++ b/Xeon/centos-7.4/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM xeon-centos74-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/Xeon/centos-7.4/nginx+rtmp/build.sh b/Xeon/centos-7.4/nginx+rtmp/build.sh new file mode 100755 index 000000000..9e093f29a --- /dev/null +++ b/Xeon/centos-7.4/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos74-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.4/nginx+rtmp/nginx.conf b/Xeon/centos-7.4/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/Xeon/centos-7.4/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/Xeon/centos-7.4/nginx+rtmp/nginx.conf.m4 b/Xeon/centos-7.4/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/Xeon/centos-7.4/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/Xeon/centos-7.4/nginx+rtmp/shell.sh b/Xeon/centos-7.4/nginx+rtmp/shell.sh new file mode 100755 index 000000000..4a46f8c9f --- /dev/null +++ b/Xeon/centos-7.4/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos74-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.5/CMakeLists.txt b/Xeon/centos-7.5/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/Xeon/centos-7.5/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/Xeon/centos-7.5/dldt+ffmpeg/.dockerignore b/Xeon/centos-7.5/dldt+ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/centos-7.5/dldt+ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/centos-7.5/dldt+ffmpeg/CMakeLists.txt b/Xeon/centos-7.5/dldt+ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..98fb33dd2 --- /dev/null +++ b/Xeon/centos-7.5/dldt+ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_dldt_ffmpeg_cent75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/Xeon/centos-7.5/dldt+ffmpeg/Dockerfile b/Xeon/centos-7.5/dldt+ffmpeg/Dockerfile new file mode 100644 index 000000000..fe885d9d1 --- /dev/null +++ b/Xeon/centos-7.5/dldt+ffmpeg/Dockerfile @@ -0,0 +1,245 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --disable-xlib --disable-sdl2 --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.5.1804 +LABEL Description="This is the image for DLDT and FFMPEG on CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl ; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.5/dldt+ffmpeg/Dockerfile.m4 b/Xeon/centos-7.5/dldt+ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..60d0e66a8 --- /dev/null +++ b/Xeon/centos-7.5/dldt+ffmpeg/Dockerfile.m4 @@ -0,0 +1,31 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(dldt-ie.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.5.1804 +LABEL Description="This is the image for DLDT and FFMPEG on CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.5/dldt+ffmpeg/build.sh b/Xeon/centos-7.5/dldt+ffmpeg/build.sh new file mode 100755 index 000000000..89bf5c5f1 --- /dev/null +++ b/Xeon/centos-7.5/dldt+ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos75-dldt-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.5/dldt+ffmpeg/shell.sh b/Xeon/centos-7.5/dldt+ffmpeg/shell.sh new file mode 100755 index 000000000..ac875008c --- /dev/null +++ b/Xeon/centos-7.5/dldt+ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos75-dldt-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.5/dldt+gst/.dockerignore b/Xeon/centos-7.5/dldt+gst/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/centos-7.5/dldt+gst/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/centos-7.5/dldt+gst/CMakeLists.txt b/Xeon/centos-7.5/dldt+gst/CMakeLists.txt new file mode 100644 index 000000000..57dcf31f6 --- /dev/null +++ b/Xeon/centos-7.5/dldt+gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_dldt_gst_centos75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/centos-7.5/dldt+gst/Dockerfile b/Xeon/centos-7.5/dldt+gst/Dockerfile new file mode 100644 index 000000000..39a12c631 --- /dev/null +++ b/Xeon/centos-7.5/dldt+gst/Dockerfile @@ -0,0 +1,290 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.5.1804 +LABEL Description="This is the image for DLDT and GSTREAMER on CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl glib2-2.56.1 libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.5/dldt+gst/Dockerfile.m4 b/Xeon/centos-7.5/dldt+gst/Dockerfile.m4 new file mode 100644 index 000000000..4b0c00bd1 --- /dev/null +++ b/Xeon/centos-7.5/dldt+gst/Dockerfile.m4 @@ -0,0 +1,35 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(cleanup.m4)dnl + +FROM centos:7.5.1804 +LABEL Description="This is the image for DLDT and GSTREAMER on CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.5/dldt+gst/build.sh b/Xeon/centos-7.5/dldt+gst/build.sh new file mode 100755 index 000000000..8340acdf1 --- /dev/null +++ b/Xeon/centos-7.5/dldt+gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos75-dldt-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.5/dldt+gst/shell.sh b/Xeon/centos-7.5/dldt+gst/shell.sh new file mode 100755 index 000000000..117151fef --- /dev/null +++ b/Xeon/centos-7.5/dldt+gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos75-dldt-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.5/ffmpeg+gst+dev/.dockerignore b/Xeon/centos-7.5/ffmpeg+gst+dev/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/centos-7.5/ffmpeg+gst+dev/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt b/Xeon/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..0df8c2f4e --- /dev/null +++ b/Xeon/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeon_ffmpeg_gst_devel_centos75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/centos-7.5/ffmpeg+gst+dev/Dockerfile b/Xeon/centos-7.5/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..6e06e197a --- /dev/null +++ b/Xeon/centos-7.5/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,310 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q libass-devel freetype-devel SDL2-devel libxcb-devel texinfo zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM centos:7.5.1804 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 libass numactl glib2-2.56.1 libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 b/Xeon/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..47bdbae93 --- /dev/null +++ b/Xeon/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,37 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.5.1804 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.5/ffmpeg+gst+dev/build.sh b/Xeon/centos-7.5/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..b094678d9 --- /dev/null +++ b/Xeon/centos-7.5/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos75-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.5/ffmpeg+gst+dev/shell.sh b/Xeon/centos-7.5/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..57c690d14 --- /dev/null +++ b/Xeon/centos-7.5/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos75-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.5/ffmpeg/.dockerignore b/Xeon/centos-7.5/ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/centos-7.5/ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/centos-7.5/ffmpeg/CMakeLists.txt b/Xeon/centos-7.5/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..d8481521f --- /dev/null +++ b/Xeon/centos-7.5/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_ffmpeg_centos75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/Xeon/centos-7.5/ffmpeg/Dockerfile b/Xeon/centos-7.5/ffmpeg/Dockerfile new file mode 100644 index 000000000..b5c9c6cee --- /dev/null +++ b/Xeon/centos-7.5/ffmpeg/Dockerfile @@ -0,0 +1,210 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --disable-xlib --disable-sdl2 --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.5.1804 +LABEL Description="This is the base image for FFMPEG CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl ; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.5/ffmpeg/Dockerfile.m4 b/Xeon/centos-7.5/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..4e0f0119d --- /dev/null +++ b/Xeon/centos-7.5/ffmpeg/Dockerfile.m4 @@ -0,0 +1,30 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.5.1804 +LABEL Description="This is the base image for FFMPEG CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.5/ffmpeg/build.sh b/Xeon/centos-7.5/ffmpeg/build.sh new file mode 100755 index 000000000..4f198334e --- /dev/null +++ b/Xeon/centos-7.5/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos75-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.5/ffmpeg/shell.sh b/Xeon/centos-7.5/ffmpeg/shell.sh new file mode 100755 index 000000000..86a2cfeab --- /dev/null +++ b/Xeon/centos-7.5/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos75-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.5/gst/.dockerignore b/Xeon/centos-7.5/gst/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/centos-7.5/gst/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/centos-7.5/gst/CMakeLists.txt b/Xeon/centos-7.5/gst/CMakeLists.txt new file mode 100644 index 000000000..a52ae1677 --- /dev/null +++ b/Xeon/centos-7.5/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_gst_centos75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/centos-7.5/gst/Dockerfile b/Xeon/centos-7.5/gst/Dockerfile new file mode 100644 index 000000000..d878518e3 --- /dev/null +++ b/Xeon/centos-7.5/gst/Dockerfile @@ -0,0 +1,255 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.5.1804 +LABEL Description="This is the base image for GStreamer CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl glib2-2.56.1 libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.5/gst/Dockerfile.m4 b/Xeon/centos-7.5/gst/Dockerfile.m4 new file mode 100644 index 000000000..63c0e3902 --- /dev/null +++ b/Xeon/centos-7.5/gst/Dockerfile.m4 @@ -0,0 +1,34 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(cleanup.m4)dnl + +FROM centos:7.5.1804 +LABEL Description="This is the base image for GStreamer CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.5/gst/build.sh b/Xeon/centos-7.5/gst/build.sh new file mode 100755 index 000000000..956858948 --- /dev/null +++ b/Xeon/centos-7.5/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos75-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.5/gst/shell.sh b/Xeon/centos-7.5/gst/shell.sh new file mode 100755 index 000000000..0eedc1667 --- /dev/null +++ b/Xeon/centos-7.5/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos75-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.5/nginx+rtmp/.dockerignore b/Xeon/centos-7.5/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/centos-7.5/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/centos-7.5/nginx+rtmp/CMakeLists.txt b/Xeon/centos-7.5/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..34ba9ea80 --- /dev/null +++ b/Xeon/centos-7.5/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeon_nginx_rtmp_centos75") +set(dep_image "xeon_ffmpeg_centos75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/Xeon/centos-7.5/nginx+rtmp/Dockerfile b/Xeon/centos-7.5/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..04aa04a09 --- /dev/null +++ b/Xeon/centos-7.5/nginx+rtmp/Dockerfile @@ -0,0 +1,70 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN yum install -y -q openssl-devel pcre2-devel zlib-devel libxslt-devel + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=nobody --group=nobody --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM xeon-centos75-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN \ + yum install -y -q openssl-libs pcre2 zlib libxslt libxml2 ; \ + rm -rf /var/cache/yum/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/Xeon/centos-7.5/nginx+rtmp/Dockerfile.m4 b/Xeon/centos-7.5/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..0ce5c96a7 --- /dev/null +++ b/Xeon/centos-7.5/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM xeon-centos75-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/Xeon/centos-7.5/nginx+rtmp/build.sh b/Xeon/centos-7.5/nginx+rtmp/build.sh new file mode 100755 index 000000000..b7ac8d78d --- /dev/null +++ b/Xeon/centos-7.5/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos75-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.5/nginx+rtmp/nginx.conf b/Xeon/centos-7.5/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/Xeon/centos-7.5/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/Xeon/centos-7.5/nginx+rtmp/nginx.conf.m4 b/Xeon/centos-7.5/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/Xeon/centos-7.5/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/Xeon/centos-7.5/nginx+rtmp/shell.sh b/Xeon/centos-7.5/nginx+rtmp/shell.sh new file mode 100755 index 000000000..02a22d2b7 --- /dev/null +++ b/Xeon/centos-7.5/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos75-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.6/CMakeLists.txt b/Xeon/centos-7.6/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/Xeon/centos-7.6/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/Xeon/centos-7.6/dldt+ffmpeg/.dockerignore b/Xeon/centos-7.6/dldt+ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/centos-7.6/dldt+ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/centos-7.6/dldt+ffmpeg/CMakeLists.txt b/Xeon/centos-7.6/dldt+ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..b4ca0b314 --- /dev/null +++ b/Xeon/centos-7.6/dldt+ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_dldt_ffmpeg_cent76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/Xeon/centos-7.6/dldt+ffmpeg/Dockerfile b/Xeon/centos-7.6/dldt+ffmpeg/Dockerfile new file mode 100644 index 000000000..f63b11cba --- /dev/null +++ b/Xeon/centos-7.6/dldt+ffmpeg/Dockerfile @@ -0,0 +1,245 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --disable-xlib --disable-sdl2 --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.6.1810 +LABEL Description="This is the image for DLDT and FFMPEG on CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl ; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.6/dldt+ffmpeg/Dockerfile.m4 b/Xeon/centos-7.6/dldt+ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..e410500cc --- /dev/null +++ b/Xeon/centos-7.6/dldt+ffmpeg/Dockerfile.m4 @@ -0,0 +1,31 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(dldt-ie.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.6.1810 +LABEL Description="This is the image for DLDT and FFMPEG on CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.6/dldt+ffmpeg/build.sh b/Xeon/centos-7.6/dldt+ffmpeg/build.sh new file mode 100755 index 000000000..dd0b72dd0 --- /dev/null +++ b/Xeon/centos-7.6/dldt+ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos76-dldt-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.6/dldt+ffmpeg/shell.sh b/Xeon/centos-7.6/dldt+ffmpeg/shell.sh new file mode 100755 index 000000000..3c9565678 --- /dev/null +++ b/Xeon/centos-7.6/dldt+ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos76-dldt-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.6/dldt+gst/.dockerignore b/Xeon/centos-7.6/dldt+gst/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/centos-7.6/dldt+gst/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/centos-7.6/dldt+gst/CMakeLists.txt b/Xeon/centos-7.6/dldt+gst/CMakeLists.txt new file mode 100644 index 000000000..147a5eedf --- /dev/null +++ b/Xeon/centos-7.6/dldt+gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_dldt_gst_centos76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/centos-7.6/dldt+gst/Dockerfile b/Xeon/centos-7.6/dldt+gst/Dockerfile new file mode 100644 index 000000000..4e19fb860 --- /dev/null +++ b/Xeon/centos-7.6/dldt+gst/Dockerfile @@ -0,0 +1,290 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.6.1810 +LABEL Description="This is the image for DLDT and GSTREAMER on CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl glib2-2.56.1 libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.6/dldt+gst/Dockerfile.m4 b/Xeon/centos-7.6/dldt+gst/Dockerfile.m4 new file mode 100644 index 000000000..43ac8623b --- /dev/null +++ b/Xeon/centos-7.6/dldt+gst/Dockerfile.m4 @@ -0,0 +1,35 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(cleanup.m4)dnl + +FROM centos:7.6.1810 +LABEL Description="This is the image for DLDT and GSTREAMER on CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.6/dldt+gst/build.sh b/Xeon/centos-7.6/dldt+gst/build.sh new file mode 100755 index 000000000..af8f8b496 --- /dev/null +++ b/Xeon/centos-7.6/dldt+gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos76-dldt-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.6/dldt+gst/shell.sh b/Xeon/centos-7.6/dldt+gst/shell.sh new file mode 100755 index 000000000..da259c2a2 --- /dev/null +++ b/Xeon/centos-7.6/dldt+gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos76-dldt-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.6/ffmpeg+gst+dev/.dockerignore b/Xeon/centos-7.6/ffmpeg+gst+dev/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/centos-7.6/ffmpeg+gst+dev/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt b/Xeon/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..47265ae38 --- /dev/null +++ b/Xeon/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeon_ffmpeg_gst_devel_centos76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/centos-7.6/ffmpeg+gst+dev/Dockerfile b/Xeon/centos-7.6/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..5d9271d69 --- /dev/null +++ b/Xeon/centos-7.6/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,310 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q libass-devel freetype-devel SDL2-devel libxcb-devel texinfo zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM centos:7.6.1810 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 libass numactl glib2-2.56.1 libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 b/Xeon/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..938f9bc57 --- /dev/null +++ b/Xeon/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,37 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.6.1810 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.6/ffmpeg+gst+dev/build.sh b/Xeon/centos-7.6/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..9f789b2b2 --- /dev/null +++ b/Xeon/centos-7.6/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos76-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.6/ffmpeg+gst+dev/shell.sh b/Xeon/centos-7.6/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..440bf3084 --- /dev/null +++ b/Xeon/centos-7.6/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos76-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.6/ffmpeg/.dockerignore b/Xeon/centos-7.6/ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/centos-7.6/ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/centos-7.6/ffmpeg/CMakeLists.txt b/Xeon/centos-7.6/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..2b4612e98 --- /dev/null +++ b/Xeon/centos-7.6/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_ffmpeg_centos76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/Xeon/centos-7.6/ffmpeg/Dockerfile b/Xeon/centos-7.6/ffmpeg/Dockerfile new file mode 100644 index 000000000..b68b56598 --- /dev/null +++ b/Xeon/centos-7.6/ffmpeg/Dockerfile @@ -0,0 +1,210 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --disable-xlib --disable-sdl2 --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.6.1810 +LABEL Description="This is the base image for FFMPEG CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl ; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.6/ffmpeg/Dockerfile.m4 b/Xeon/centos-7.6/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..4244ee202 --- /dev/null +++ b/Xeon/centos-7.6/ffmpeg/Dockerfile.m4 @@ -0,0 +1,30 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.6.1810 +LABEL Description="This is the base image for FFMPEG CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.6/ffmpeg/build.sh b/Xeon/centos-7.6/ffmpeg/build.sh new file mode 100755 index 000000000..72fd74096 --- /dev/null +++ b/Xeon/centos-7.6/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos76-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.6/ffmpeg/shell.sh b/Xeon/centos-7.6/ffmpeg/shell.sh new file mode 100755 index 000000000..79e554d9b --- /dev/null +++ b/Xeon/centos-7.6/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos76-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.6/gst/.dockerignore b/Xeon/centos-7.6/gst/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/centos-7.6/gst/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/centos-7.6/gst/CMakeLists.txt b/Xeon/centos-7.6/gst/CMakeLists.txt new file mode 100644 index 000000000..de6611d1c --- /dev/null +++ b/Xeon/centos-7.6/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_gst_centos76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/centos-7.6/gst/Dockerfile b/Xeon/centos-7.6/gst/Dockerfile new file mode 100644 index 000000000..c2f323779 --- /dev/null +++ b/Xeon/centos-7.6/gst/Dockerfile @@ -0,0 +1,255 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.6.1810 +LABEL Description="This is the base image for GStreamer CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl glib2-2.56.1 libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/centos-7.6/gst/Dockerfile.m4 b/Xeon/centos-7.6/gst/Dockerfile.m4 new file mode 100644 index 000000000..7dc2131cc --- /dev/null +++ b/Xeon/centos-7.6/gst/Dockerfile.m4 @@ -0,0 +1,34 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(cleanup.m4)dnl + +FROM centos:7.6.1810 +LABEL Description="This is the base image for GStreamer CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/centos-7.6/gst/build.sh b/Xeon/centos-7.6/gst/build.sh new file mode 100755 index 000000000..9abcfc4eb --- /dev/null +++ b/Xeon/centos-7.6/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos76-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.6/gst/shell.sh b/Xeon/centos-7.6/gst/shell.sh new file mode 100755 index 000000000..a8ded51ee --- /dev/null +++ b/Xeon/centos-7.6/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos76-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/centos-7.6/nginx+rtmp/.dockerignore b/Xeon/centos-7.6/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/centos-7.6/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/centos-7.6/nginx+rtmp/CMakeLists.txt b/Xeon/centos-7.6/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..acaaaaffb --- /dev/null +++ b/Xeon/centos-7.6/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeon_nginx_rtmp_centos76") +set(dep_image "xeon_ffmpeg_centos76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/Xeon/centos-7.6/nginx+rtmp/Dockerfile b/Xeon/centos-7.6/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..c5363855e --- /dev/null +++ b/Xeon/centos-7.6/nginx+rtmp/Dockerfile @@ -0,0 +1,70 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN yum install -y -q openssl-devel pcre2-devel zlib-devel libxslt-devel + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=nobody --group=nobody --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM xeon-centos76-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN \ + yum install -y -q openssl-libs pcre2 zlib libxslt libxml2 ; \ + rm -rf /var/cache/yum/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/Xeon/centos-7.6/nginx+rtmp/Dockerfile.m4 b/Xeon/centos-7.6/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..44a20198e --- /dev/null +++ b/Xeon/centos-7.6/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM xeon-centos76-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/Xeon/centos-7.6/nginx+rtmp/build.sh b/Xeon/centos-7.6/nginx+rtmp/build.sh new file mode 100755 index 000000000..c36cc5324 --- /dev/null +++ b/Xeon/centos-7.6/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-centos76-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/centos-7.6/nginx+rtmp/nginx.conf b/Xeon/centos-7.6/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/Xeon/centos-7.6/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/Xeon/centos-7.6/nginx+rtmp/nginx.conf.m4 b/Xeon/centos-7.6/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/Xeon/centos-7.6/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/Xeon/centos-7.6/nginx+rtmp/shell.sh b/Xeon/centos-7.6/nginx+rtmp/shell.sh new file mode 100755 index 000000000..5872a81eb --- /dev/null +++ b/Xeon/centos-7.6/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-centos76-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/ubuntu-16.04/CMakeLists.txt b/Xeon/ubuntu-16.04/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/Xeon/ubuntu-16.04/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/Xeon/ubuntu-16.04/dldt+ffmpeg/.dockerignore b/Xeon/ubuntu-16.04/dldt+ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/ubuntu-16.04/dldt+ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/ubuntu-16.04/dldt+ffmpeg/CMakeLists.txt b/Xeon/ubuntu-16.04/dldt+ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..d01261231 --- /dev/null +++ b/Xeon/ubuntu-16.04/dldt+ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_dldt_ffmpeg_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/Xeon/ubuntu-16.04/dldt+ffmpeg/Dockerfile b/Xeon/ubuntu-16.04/dldt+ffmpeg/Dockerfile new file mode 100644 index 000000000..2e12b0b79 --- /dev/null +++ b/Xeon/ubuntu-16.04/dldt+ffmpeg/Dockerfile @@ -0,0 +1,239 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib/x86_64-linux-gnu -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib/x86_64-linux-gnu"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib/x86_64-linux-gnu" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --disable-xlib --disable-sdl2 --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:16.04 +LABEL Description="This is the base image for FFMPEG & DLDT Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma1 libssl1.0.0 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/ubuntu-16.04/dldt+ffmpeg/Dockerfile.m4 b/Xeon/ubuntu-16.04/dldt+ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..9b11eed5d --- /dev/null +++ b/Xeon/ubuntu-16.04/dldt+ffmpeg/Dockerfile.m4 @@ -0,0 +1,31 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(dldt-ie.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:16.04 +LABEL Description="This is the base image for FFMPEG & DLDT Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/ubuntu-16.04/dldt+ffmpeg/build.sh b/Xeon/ubuntu-16.04/dldt+ffmpeg/build.sh new file mode 100755 index 000000000..bfc775abc --- /dev/null +++ b/Xeon/ubuntu-16.04/dldt+ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1604-dldt-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/ubuntu-16.04/dldt+ffmpeg/shell.sh b/Xeon/ubuntu-16.04/dldt+ffmpeg/shell.sh new file mode 100755 index 000000000..743ed7787 --- /dev/null +++ b/Xeon/ubuntu-16.04/dldt+ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1604-dldt-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/ubuntu-16.04/dldt+gst/.dockerignore b/Xeon/ubuntu-16.04/dldt+gst/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/ubuntu-16.04/dldt+gst/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/ubuntu-16.04/dldt+gst/CMakeLists.txt b/Xeon/ubuntu-16.04/dldt+gst/CMakeLists.txt new file mode 100644 index 000000000..d720771e1 --- /dev/null +++ b/Xeon/ubuntu-16.04/dldt+gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_dldt_gst_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/ubuntu-16.04/dldt+gst/Dockerfile b/Xeon/ubuntu-16.04/dldt+gst/Dockerfile new file mode 100644 index 000000000..cdf4bc933 --- /dev/null +++ b/Xeon/ubuntu-16.04/dldt+gst/Dockerfile @@ -0,0 +1,284 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib/x86_64-linux-gnu -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib/x86_64-linux-gnu"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib/x86_64-linux-gnu" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:16.04 +LABEL Description="This is the base image for GSTREAMER & DLDT Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma1 libssl1.0.0 libglib2.0 libpng12-0 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/ubuntu-16.04/dldt+gst/Dockerfile.m4 b/Xeon/ubuntu-16.04/dldt+gst/Dockerfile.m4 new file mode 100644 index 000000000..12105c101 --- /dev/null +++ b/Xeon/ubuntu-16.04/dldt+gst/Dockerfile.m4 @@ -0,0 +1,35 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(cleanup.m4)dnl + +FROM ubuntu:16.04 +LABEL Description="This is the base image for GSTREAMER & DLDT Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/ubuntu-16.04/dldt+gst/build.sh b/Xeon/ubuntu-16.04/dldt+gst/build.sh new file mode 100755 index 000000000..37ec28fa6 --- /dev/null +++ b/Xeon/ubuntu-16.04/dldt+gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1604-dldt-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/ubuntu-16.04/dldt+gst/shell.sh b/Xeon/ubuntu-16.04/dldt+gst/shell.sh new file mode 100755 index 000000000..fc9e4ed8a --- /dev/null +++ b/Xeon/ubuntu-16.04/dldt+gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1604-dldt-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/ubuntu-16.04/ffmpeg+gst+dev/.dockerignore b/Xeon/ubuntu-16.04/ffmpeg+gst+dev/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/ubuntu-16.04/ffmpeg+gst+dev/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/ubuntu-16.04/ffmpeg+gst+dev/CMakeLists.txt b/Xeon/ubuntu-16.04/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..bd546461f --- /dev/null +++ b/Xeon/ubuntu-16.04/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeon_ffmpeg_gst_devel_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile b/Xeon/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..33f22f215 --- /dev/null +++ b/Xeon/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,304 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib/x86_64-linux-gnu -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib/x86_64-linux-gnu"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib/x86_64-linux-gnu" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libass-dev libfreetype6-dev libsdl2-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev texinfo zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM ubuntu:16.04 +LABEL Description="This is the base image for developing FFMPEG and GStreamer applications based on Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxv1 libxcb-shm0 libxcb-shape0 libxcb-xfixes0 libsdl2-2.0-0 libasound2 libnuma1 libass5 libssl1.0.0 libglib2.0 libpng12-0 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 b/Xeon/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..743d0f8b7 --- /dev/null +++ b/Xeon/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,37 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:16.04 +LABEL Description="This is the base image for developing FFMPEG and GStreamer applications based on Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/ubuntu-16.04/ffmpeg+gst+dev/build.sh b/Xeon/ubuntu-16.04/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..2dc0e5ed2 --- /dev/null +++ b/Xeon/ubuntu-16.04/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1604-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/ubuntu-16.04/ffmpeg+gst+dev/shell.sh b/Xeon/ubuntu-16.04/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..2c4e36200 --- /dev/null +++ b/Xeon/ubuntu-16.04/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1604-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/ubuntu-16.04/ffmpeg/.dockerignore b/Xeon/ubuntu-16.04/ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/ubuntu-16.04/ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/ubuntu-16.04/ffmpeg/CMakeLists.txt b/Xeon/ubuntu-16.04/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..5c77e9a2a --- /dev/null +++ b/Xeon/ubuntu-16.04/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_ffmpeg_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/Xeon/ubuntu-16.04/ffmpeg/Dockerfile b/Xeon/ubuntu-16.04/ffmpeg/Dockerfile new file mode 100644 index 000000000..9d5165421 --- /dev/null +++ b/Xeon/ubuntu-16.04/ffmpeg/Dockerfile @@ -0,0 +1,204 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --disable-xlib --disable-sdl2 --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:16.04 +LABEL Description="This is the base image for FFMPEG Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma1 libssl1.0.0 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/ubuntu-16.04/ffmpeg/Dockerfile.m4 b/Xeon/ubuntu-16.04/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..658d0901d --- /dev/null +++ b/Xeon/ubuntu-16.04/ffmpeg/Dockerfile.m4 @@ -0,0 +1,30 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:16.04 +LABEL Description="This is the base image for FFMPEG Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/ubuntu-16.04/ffmpeg/build.sh b/Xeon/ubuntu-16.04/ffmpeg/build.sh new file mode 100755 index 000000000..0d558d17d --- /dev/null +++ b/Xeon/ubuntu-16.04/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1604-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/ubuntu-16.04/ffmpeg/shell.sh b/Xeon/ubuntu-16.04/ffmpeg/shell.sh new file mode 100755 index 000000000..1f5db8293 --- /dev/null +++ b/Xeon/ubuntu-16.04/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1604-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/ubuntu-16.04/gst/.dockerignore b/Xeon/ubuntu-16.04/gst/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/ubuntu-16.04/gst/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/ubuntu-16.04/gst/CMakeLists.txt b/Xeon/ubuntu-16.04/gst/CMakeLists.txt new file mode 100644 index 000000000..969e74a6a --- /dev/null +++ b/Xeon/ubuntu-16.04/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_gst_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/ubuntu-16.04/gst/Dockerfile b/Xeon/ubuntu-16.04/gst/Dockerfile new file mode 100644 index 000000000..8edb796c4 --- /dev/null +++ b/Xeon/ubuntu-16.04/gst/Dockerfile @@ -0,0 +1,249 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:16.04 +LABEL Description="This is the base image for GStreamer Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma1 libssl1.0.0 libglib2.0 libpng12-0 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/ubuntu-16.04/gst/Dockerfile.m4 b/Xeon/ubuntu-16.04/gst/Dockerfile.m4 new file mode 100644 index 000000000..a914d4b54 --- /dev/null +++ b/Xeon/ubuntu-16.04/gst/Dockerfile.m4 @@ -0,0 +1,34 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(cleanup.m4)dnl + +FROM ubuntu:16.04 +LABEL Description="This is the base image for GStreamer Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/ubuntu-16.04/gst/build.sh b/Xeon/ubuntu-16.04/gst/build.sh new file mode 100755 index 000000000..48881b214 --- /dev/null +++ b/Xeon/ubuntu-16.04/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1604-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/ubuntu-16.04/gst/shell.sh b/Xeon/ubuntu-16.04/gst/shell.sh new file mode 100755 index 000000000..2ebf45735 --- /dev/null +++ b/Xeon/ubuntu-16.04/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1604-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/ubuntu-16.04/nginx+rtmp/.dockerignore b/Xeon/ubuntu-16.04/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/ubuntu-16.04/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/ubuntu-16.04/nginx+rtmp/CMakeLists.txt b/Xeon/ubuntu-16.04/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..4be783230 --- /dev/null +++ b/Xeon/ubuntu-16.04/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeon_nginx_rtmp_ubuntu1604") +set(dep_image "xeon_ffmpeg_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/Xeon/ubuntu-16.04/nginx+rtmp/Dockerfile b/Xeon/ubuntu-16.04/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..cc58d510c --- /dev/null +++ b/Xeon/ubuntu-16.04/nginx+rtmp/Dockerfile @@ -0,0 +1,69 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libssl-dev libpcre3-dev zlib1g-dev libxslt1-dev + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/x86_64-linux-gnu/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=www-data --group=www-data --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM xeon-ubuntu1604-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxml2 libssl1.0.0 libpcre3 zlib1g libxslt1.1 ; \ + rm -rf /var/lib/apt/lists/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/Xeon/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 b/Xeon/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..0eb4bebf9 --- /dev/null +++ b/Xeon/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM xeon-ubuntu1604-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/Xeon/ubuntu-16.04/nginx+rtmp/build.sh b/Xeon/ubuntu-16.04/nginx+rtmp/build.sh new file mode 100755 index 000000000..e0885ec53 --- /dev/null +++ b/Xeon/ubuntu-16.04/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1604-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/ubuntu-16.04/nginx+rtmp/nginx.conf b/Xeon/ubuntu-16.04/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/Xeon/ubuntu-16.04/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/Xeon/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 b/Xeon/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/Xeon/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/Xeon/ubuntu-16.04/nginx+rtmp/shell.sh b/Xeon/ubuntu-16.04/nginx+rtmp/shell.sh new file mode 100755 index 000000000..51f4afdd8 --- /dev/null +++ b/Xeon/ubuntu-16.04/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1604-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/ubuntu-18.04/CMakeLists.txt b/Xeon/ubuntu-18.04/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/Xeon/ubuntu-18.04/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/Xeon/ubuntu-18.04/dldt+ffmpeg/.dockerignore b/Xeon/ubuntu-18.04/dldt+ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/ubuntu-18.04/dldt+ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/ubuntu-18.04/dldt+ffmpeg/CMakeLists.txt b/Xeon/ubuntu-18.04/dldt+ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..12ac82013 --- /dev/null +++ b/Xeon/ubuntu-18.04/dldt+ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_dldt_ffmpeg_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/Xeon/ubuntu-18.04/dldt+ffmpeg/Dockerfile b/Xeon/ubuntu-18.04/dldt+ffmpeg/Dockerfile new file mode 100644 index 000000000..365b080ce --- /dev/null +++ b/Xeon/ubuntu-18.04/dldt+ffmpeg/Dockerfile @@ -0,0 +1,240 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib/x86_64-linux-gnu -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib/x86_64-linux-gnu"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib/x86_64-linux-gnu" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --disable-xlib --disable-sdl2 --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:18.04 +LABEL Description="This is the image for DLDT and FFMPEG on Ubuntu 18.04" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma1 libssl1.1 libpciaccess0 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/ubuntu-18.04/dldt+ffmpeg/Dockerfile.m4 b/Xeon/ubuntu-18.04/dldt+ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..57634e589 --- /dev/null +++ b/Xeon/ubuntu-18.04/dldt+ffmpeg/Dockerfile.m4 @@ -0,0 +1,31 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(dldt-ie.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:18.04 +LABEL Description="This is the image for DLDT and FFMPEG on Ubuntu 18.04" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/ubuntu-18.04/dldt+ffmpeg/build.sh b/Xeon/ubuntu-18.04/dldt+ffmpeg/build.sh new file mode 100755 index 000000000..af46d9424 --- /dev/null +++ b/Xeon/ubuntu-18.04/dldt+ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1804-dldt-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/ubuntu-18.04/dldt+ffmpeg/shell.sh b/Xeon/ubuntu-18.04/dldt+ffmpeg/shell.sh new file mode 100755 index 000000000..132bdeeb8 --- /dev/null +++ b/Xeon/ubuntu-18.04/dldt+ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1804-dldt-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/ubuntu-18.04/dldt+gst/.dockerignore b/Xeon/ubuntu-18.04/dldt+gst/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/ubuntu-18.04/dldt+gst/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/ubuntu-18.04/dldt+gst/CMakeLists.txt b/Xeon/ubuntu-18.04/dldt+gst/CMakeLists.txt new file mode 100644 index 000000000..010bdb4ac --- /dev/null +++ b/Xeon/ubuntu-18.04/dldt+gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_dldt_gst_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/ubuntu-18.04/dldt+gst/Dockerfile b/Xeon/ubuntu-18.04/dldt+gst/Dockerfile new file mode 100644 index 000000000..57f285048 --- /dev/null +++ b/Xeon/ubuntu-18.04/dldt+gst/Dockerfile @@ -0,0 +1,286 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib/x86_64-linux-gnu -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib/x86_64-linux-gnu"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib/x86_64-linux-gnu" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:18.04 +LABEL Description="This is the image for DLDT and GST on Ubuntu 18.04" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma1 libssl1.1 libglib2.0 libpng16-16 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/ubuntu-18.04/dldt+gst/Dockerfile.m4 b/Xeon/ubuntu-18.04/dldt+gst/Dockerfile.m4 new file mode 100644 index 000000000..c4d93e4dc --- /dev/null +++ b/Xeon/ubuntu-18.04/dldt+gst/Dockerfile.m4 @@ -0,0 +1,35 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(cleanup.m4)dnl + +FROM ubuntu:18.04 +LABEL Description="This is the image for DLDT and GST on Ubuntu 18.04" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/ubuntu-18.04/dldt+gst/build.sh b/Xeon/ubuntu-18.04/dldt+gst/build.sh new file mode 100755 index 000000000..3f3141f0b --- /dev/null +++ b/Xeon/ubuntu-18.04/dldt+gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1804-dldt-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/ubuntu-18.04/dldt+gst/shell.sh b/Xeon/ubuntu-18.04/dldt+gst/shell.sh new file mode 100755 index 000000000..563ef4040 --- /dev/null +++ b/Xeon/ubuntu-18.04/dldt+gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1804-dldt-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/ubuntu-18.04/ffmpeg+gst+dev/.dockerignore b/Xeon/ubuntu-18.04/ffmpeg+gst+dev/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/ubuntu-18.04/ffmpeg+gst+dev/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/ubuntu-18.04/ffmpeg+gst+dev/CMakeLists.txt b/Xeon/ubuntu-18.04/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..5291eed62 --- /dev/null +++ b/Xeon/ubuntu-18.04/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeon_ffmpeg_gst_devel_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile b/Xeon/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..42513fa32 --- /dev/null +++ b/Xeon/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,306 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib/x86_64-linux-gnu -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=OFF -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib/x86_64-linux-gnu"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib/x86_64-linux-gnu" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libass-dev libfreetype6-dev libsdl2-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev texinfo zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM ubuntu:18.04 +LABEL Description="This is the image for FFMPEG & GSTREAMER application development on Ubuntu 18.04" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxv1 libxcb-shm0 libxcb-shape0 libxcb-xfixes0 libsdl2-2.0-0 libasound2 libnuma1 libass9 libssl1.1 libpciaccess0 libglib2.0 libpng16-16 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 b/Xeon/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..57a2c0148 --- /dev/null +++ b/Xeon/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,37 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:18.04 +LABEL Description="This is the image for FFMPEG & GSTREAMER application development on Ubuntu 18.04" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/ubuntu-18.04/ffmpeg+gst+dev/build.sh b/Xeon/ubuntu-18.04/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..1dfc5e426 --- /dev/null +++ b/Xeon/ubuntu-18.04/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1804-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/ubuntu-18.04/ffmpeg+gst+dev/shell.sh b/Xeon/ubuntu-18.04/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..cbb3e5299 --- /dev/null +++ b/Xeon/ubuntu-18.04/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1804-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/ubuntu-18.04/ffmpeg/.dockerignore b/Xeon/ubuntu-18.04/ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/ubuntu-18.04/ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/ubuntu-18.04/ffmpeg/CMakeLists.txt b/Xeon/ubuntu-18.04/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..ceea0a20c --- /dev/null +++ b/Xeon/ubuntu-18.04/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_ffmpeg_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/Xeon/ubuntu-18.04/ffmpeg/Dockerfile b/Xeon/ubuntu-18.04/ffmpeg/Dockerfile new file mode 100644 index 000000000..160e22b16 --- /dev/null +++ b/Xeon/ubuntu-18.04/ffmpeg/Dockerfile @@ -0,0 +1,205 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --disable-xlib --disable-sdl2 --enable-openssl --enable-nonfree --disable-vaapi --disable-hwaccels --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:18.04 +LABEL Description="This is the base image for FFMPEG Ubuntu 18.04" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma1 libssl1.1 libpciaccess0 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/ubuntu-18.04/ffmpeg/Dockerfile.m4 b/Xeon/ubuntu-18.04/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..4c62b6531 --- /dev/null +++ b/Xeon/ubuntu-18.04/ffmpeg/Dockerfile.m4 @@ -0,0 +1,30 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:18.04 +LABEL Description="This is the base image for FFMPEG Ubuntu 18.04" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/ubuntu-18.04/ffmpeg/build.sh b/Xeon/ubuntu-18.04/ffmpeg/build.sh new file mode 100755 index 000000000..2290ad283 --- /dev/null +++ b/Xeon/ubuntu-18.04/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1804-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/ubuntu-18.04/ffmpeg/shell.sh b/Xeon/ubuntu-18.04/ffmpeg/shell.sh new file mode 100755 index 000000000..b2d37ffcc --- /dev/null +++ b/Xeon/ubuntu-18.04/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1804-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/ubuntu-18.04/gst/.dockerignore b/Xeon/ubuntu-18.04/gst/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/ubuntu-18.04/gst/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/ubuntu-18.04/gst/CMakeLists.txt b/Xeon/ubuntu-18.04/gst/CMakeLists.txt new file mode 100644 index 000000000..547c1cdf0 --- /dev/null +++ b/Xeon/ubuntu-18.04/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeon_gst_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/Xeon/ubuntu-18.04/gst/Dockerfile b/Xeon/ubuntu-18.04/gst/Dockerfile new file mode 100644 index 000000000..2f9ca9192 --- /dev/null +++ b/Xeon/ubuntu-18.04/gst/Dockerfile @@ -0,0 +1,251 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:18.04 +LABEL Description="This is the base image for GStreamer Ubuntu 18.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma1 libssl1.1 libglib2.0 libpng16-16 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / + diff --git a/Xeon/ubuntu-18.04/gst/Dockerfile.m4 b/Xeon/ubuntu-18.04/gst/Dockerfile.m4 new file mode 100644 index 000000000..809e220c1 --- /dev/null +++ b/Xeon/ubuntu-18.04/gst/Dockerfile.m4 @@ -0,0 +1,34 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(cleanup.m4)dnl + +FROM ubuntu:18.04 +LABEL Description="This is the base image for GStreamer Ubuntu 18.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/Xeon/ubuntu-18.04/gst/build.sh b/Xeon/ubuntu-18.04/gst/build.sh new file mode 100755 index 000000000..37cc5b659 --- /dev/null +++ b/Xeon/ubuntu-18.04/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1804-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/ubuntu-18.04/gst/shell.sh b/Xeon/ubuntu-18.04/gst/shell.sh new file mode 100755 index 000000000..5317fc1b4 --- /dev/null +++ b/Xeon/ubuntu-18.04/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1804-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/Xeon/ubuntu-18.04/nginx+rtmp/.dockerignore b/Xeon/ubuntu-18.04/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/Xeon/ubuntu-18.04/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/Xeon/ubuntu-18.04/nginx+rtmp/CMakeLists.txt b/Xeon/ubuntu-18.04/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..6b40fd39a --- /dev/null +++ b/Xeon/ubuntu-18.04/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeon_nginx_rtmp_ubuntu1804") +set(dep_image "xeon_ffmpeg_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/Xeon/ubuntu-18.04/nginx+rtmp/Dockerfile b/Xeon/ubuntu-18.04/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..3f905b335 --- /dev/null +++ b/Xeon/ubuntu-18.04/nginx+rtmp/Dockerfile @@ -0,0 +1,70 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libssl-dev libpcre3-dev zlib1g-dev libxslt1-dev + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/x86_64-linux-gnu/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=www-data --group=www-data --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM xeon-ubuntu1804-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxml2 libssl1.0.0 libpcre3 zlib1g libxslt1.1 ; \ + rm -rf /var/lib/apt/lists/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/Xeon/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 b/Xeon/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..2b35a9abc --- /dev/null +++ b/Xeon/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM xeon-ubuntu1804-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/Xeon/ubuntu-18.04/nginx+rtmp/build.sh b/Xeon/ubuntu-18.04/nginx+rtmp/build.sh new file mode 100755 index 000000000..94663410f --- /dev/null +++ b/Xeon/ubuntu-18.04/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1804-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/Xeon/ubuntu-18.04/nginx+rtmp/nginx.conf b/Xeon/ubuntu-18.04/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/Xeon/ubuntu-18.04/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/Xeon/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 b/Xeon/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/Xeon/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/Xeon/ubuntu-18.04/nginx+rtmp/shell.sh b/Xeon/ubuntu-18.04/nginx+rtmp/shell.sh new file mode 100755 index 000000000..0634549df --- /dev/null +++ b/Xeon/ubuntu-18.04/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeon-ubuntu1804-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/CMakeLists.txt b/XeonE3/CMakeLists.txt new file mode 100644 index 000000000..ce2898405 --- /dev/null +++ b/XeonE3/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/platform.cmake) diff --git a/XeonE3/README.md b/XeonE3/README.md new file mode 100644 index 000000000..dd60eeb7e --- /dev/null +++ b/XeonE3/README.md @@ -0,0 +1,26 @@ + +This folder contains docker files to build CPU and GPU software stack for Intel(R) Xeon(R) -SP or -D scalable processors with processor graphics. + +### Setup host platform: + +The host platform includes updating kernel and installing the docker.ce service (see [../README.md](../README.md).) + +### Update kernel: + +Kernel version 4.18 or later is recommended for feature and performance. The following is the procedure to update to a custom kernel: + +| Ubuntu | CentOS | +|:--------|:-------| +|(1) sudo apt-get install -y bison flex libssl-dev libelf-dev |(1) sudo yum install -y bison flex openssl-devel elfutils-libelf-devel | + +
+ +(2) wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.18.16.tar.xz | tar xJ +(3) cd linux-4.18.16 +(4) make olddefconfig +(5) make -j8 +(6) sudo make modules_install +(7) sudo make install +(8) sudo update-grub +(9) sudo shutdown -r now + diff --git a/XeonE3/centos-7.4/CMakeLists.txt b/XeonE3/centos-7.4/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/XeonE3/centos-7.4/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/XeonE3/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt b/XeonE3/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..7eb780b0c --- /dev/null +++ b/XeonE3/centos-7.4/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeone3_ffmpeg_gst_devel_centos74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/XeonE3/centos-7.4/ffmpeg+gst+dev/Dockerfile b/XeonE3/centos-7.4/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..2ea3ff5d3 --- /dev/null +++ b/XeonE3/centos-7.4/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,400 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=ON -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Install automake +ARG AUTOMAKE_VER=1.14 +ARG AUTOMAKE_REPO=https://ftp.gnu.org/pub/gnu/automake/automake-${AUTOMAKE_VER}.tar.xz + +RUN wget -O - ${AUTOMAKE_REPO} | tar xJ; \ + cd automake-${AUTOMAKE_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --disable-doc; \ + make -j8; \ + make install + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN yum install -y -q libXrandr-devel + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q libass-devel freetype-devel SDL2-devel libxcb-devel libvdpau-devel texinfo zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM centos:7.4.1708 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 libass numactl libvdpau glib2-2.56.1 libpciaccesslibxcb mesa-libGL libXrandr libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/XeonE3/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 b/XeonE3/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..bd471c014 --- /dev/null +++ b/XeonE3/centos-7.4/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,44 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(automake.m4) +include(gst-plugin-vaapi.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.4.1708 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/XeonE3/centos-7.4/ffmpeg+gst+dev/build.sh b/XeonE3/centos-7.4/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..8db3eb118 --- /dev/null +++ b/XeonE3/centos-7.4/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos74-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/centos-7.4/ffmpeg+gst+dev/shell.sh b/XeonE3/centos-7.4/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..0cdb2545d --- /dev/null +++ b/XeonE3/centos-7.4/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos74-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/centos-7.4/ffmpeg/.dockerignore b/XeonE3/centos-7.4/ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/XeonE3/centos-7.4/ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/XeonE3/centos-7.4/ffmpeg/CMakeLists.txt b/XeonE3/centos-7.4/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..bd2467561 --- /dev/null +++ b/XeonE3/centos-7.4/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeone3_ffmpeg_centos74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/XeonE3/centos-7.4/ffmpeg/Dockerfile b/XeonE3/centos-7.4/ffmpeg/Dockerfile new file mode 100644 index 000000000..5aecb325b --- /dev/null +++ b/XeonE3/centos-7.4/ffmpeg/Dockerfile @@ -0,0 +1,276 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + rm -rf /home/build/usr/samples; \ + rm -rf /home/build/usr/plugins; \ + make install; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q SDL2-devel libxcb-devel libvdpau-devel zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.4.1708 +LABEL Description="This is the base image for FFMPEG CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 numactl libvdpau libpciaccess; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD + diff --git a/XeonE3/centos-7.4/ffmpeg/Dockerfile.m4 b/XeonE3/centos-7.4/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..43153ddf2 --- /dev/null +++ b/XeonE3/centos-7.4/ffmpeg/Dockerfile.m4 @@ -0,0 +1,35 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.4.1708 +LABEL Description="This is the base image for FFMPEG CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/XeonE3/centos-7.4/ffmpeg/build.sh b/XeonE3/centos-7.4/ffmpeg/build.sh new file mode 100755 index 000000000..e62c48a50 --- /dev/null +++ b/XeonE3/centos-7.4/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos74-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/centos-7.4/ffmpeg/shell.sh b/XeonE3/centos-7.4/ffmpeg/shell.sh new file mode 100755 index 000000000..3bb69036b --- /dev/null +++ b/XeonE3/centos-7.4/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos74-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/centos-7.4/gst/CMakeLists.txt b/XeonE3/centos-7.4/gst/CMakeLists.txt new file mode 100644 index 000000000..c2699378f --- /dev/null +++ b/XeonE3/centos-7.4/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeone3_gst_centos74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/XeonE3/centos-7.4/gst/Dockerfile b/XeonE3/centos-7.4/gst/Dockerfile new file mode 100644 index 000000000..7f5b79e35 --- /dev/null +++ b/XeonE3/centos-7.4/gst/Dockerfile @@ -0,0 +1,333 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Install automake +ARG AUTOMAKE_VER=1.14 +ARG AUTOMAKE_REPO=https://ftp.gnu.org/pub/gnu/automake/automake-${AUTOMAKE_VER}.tar.xz + +RUN wget -O - ${AUTOMAKE_REPO} | tar xJ; \ + cd automake-${AUTOMAKE_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --disable-doc; \ + make -j8; \ + make install + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN yum install -y -q libXrandr-devel + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.4.1708 +LABEL Description="This is the base image for GStreamer CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl glib2-2.56.1 libpciaccesslibxcb mesa-libGL libXrandr libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/XeonE3/centos-7.4/gst/Dockerfile.m4 b/XeonE3/centos-7.4/gst/Dockerfile.m4 new file mode 100644 index 000000000..705776a34 --- /dev/null +++ b/XeonE3/centos-7.4/gst/Dockerfile.m4 @@ -0,0 +1,40 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(automake.m4) +include(gst-plugin-vaapi.m4) +include(cleanup.m4)dnl + +FROM centos:7.4.1708 +LABEL Description="This is the base image for GStreamer CentOS 7.4" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/XeonE3/centos-7.4/gst/build.sh b/XeonE3/centos-7.4/gst/build.sh new file mode 100755 index 000000000..24a7b692d --- /dev/null +++ b/XeonE3/centos-7.4/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos74-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/centos-7.4/gst/shell.sh b/XeonE3/centos-7.4/gst/shell.sh new file mode 100755 index 000000000..1b4109f61 --- /dev/null +++ b/XeonE3/centos-7.4/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos74-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/centos-7.4/nginx+rtmp/.dockerignore b/XeonE3/centos-7.4/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/XeonE3/centos-7.4/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/XeonE3/centos-7.4/nginx+rtmp/CMakeLists.txt b/XeonE3/centos-7.4/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..c40bc38bc --- /dev/null +++ b/XeonE3/centos-7.4/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeone3_nginx_rtmp_centos74") +set(dep_image "xeone3_ffmpeg_centos74") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/XeonE3/centos-7.4/nginx+rtmp/Dockerfile b/XeonE3/centos-7.4/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..84090f652 --- /dev/null +++ b/XeonE3/centos-7.4/nginx+rtmp/Dockerfile @@ -0,0 +1,70 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN yum install -y -q openssl-devel pcre2-devel zlib-devel libxslt-devel + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=nobody --group=nobody --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM xeone3-centos74-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN \ + yum install -y -q openssl-libs pcre2 zlib libxslt libxml2 ; \ + rm -rf /var/cache/yum/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/XeonE3/centos-7.4/nginx+rtmp/Dockerfile.m4 b/XeonE3/centos-7.4/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..177a5ac3d --- /dev/null +++ b/XeonE3/centos-7.4/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM centos:7.4.1708 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM xeone3-centos74-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/XeonE3/centos-7.4/nginx+rtmp/build.sh b/XeonE3/centos-7.4/nginx+rtmp/build.sh new file mode 100755 index 000000000..f659be65c --- /dev/null +++ b/XeonE3/centos-7.4/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos74-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/centos-7.4/nginx+rtmp/nginx.conf b/XeonE3/centos-7.4/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/XeonE3/centos-7.4/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/XeonE3/centos-7.4/nginx+rtmp/nginx.conf.m4 b/XeonE3/centos-7.4/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/XeonE3/centos-7.4/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/XeonE3/centos-7.4/nginx+rtmp/shell.sh b/XeonE3/centos-7.4/nginx+rtmp/shell.sh new file mode 100755 index 000000000..34e1c4aff --- /dev/null +++ b/XeonE3/centos-7.4/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos74-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/centos-7.5/CMakeLists.txt b/XeonE3/centos-7.5/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/XeonE3/centos-7.5/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/XeonE3/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt b/XeonE3/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..472f12ff8 --- /dev/null +++ b/XeonE3/centos-7.5/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeone3_ffmpeg_gst_devel_centos75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/XeonE3/centos-7.5/ffmpeg+gst+dev/Dockerfile b/XeonE3/centos-7.5/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..93fa05dd1 --- /dev/null +++ b/XeonE3/centos-7.5/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,400 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=ON -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Install automake +ARG AUTOMAKE_VER=1.14 +ARG AUTOMAKE_REPO=https://ftp.gnu.org/pub/gnu/automake/automake-${AUTOMAKE_VER}.tar.xz + +RUN wget -O - ${AUTOMAKE_REPO} | tar xJ; \ + cd automake-${AUTOMAKE_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --disable-doc; \ + make -j8; \ + make install + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN yum install -y -q libXrandr-devel + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q libass-devel freetype-devel SDL2-devel libxcb-devel libvdpau-devel texinfo zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM centos:7.5.1804 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 libass numactl libvdpau glib2-2.56.1 libpciaccesslibxcb mesa-libGL libXrandr libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/XeonE3/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 b/XeonE3/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..9ca5082f2 --- /dev/null +++ b/XeonE3/centos-7.5/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,44 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(automake.m4) +include(gst-plugin-vaapi.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.5.1804 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/XeonE3/centos-7.5/ffmpeg+gst+dev/build.sh b/XeonE3/centos-7.5/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..0864ebb65 --- /dev/null +++ b/XeonE3/centos-7.5/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos75-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/centos-7.5/ffmpeg+gst+dev/shell.sh b/XeonE3/centos-7.5/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..36c763426 --- /dev/null +++ b/XeonE3/centos-7.5/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos75-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/centos-7.5/ffmpeg/.dockerignore b/XeonE3/centos-7.5/ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/XeonE3/centos-7.5/ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/XeonE3/centos-7.5/ffmpeg/CMakeLists.txt b/XeonE3/centos-7.5/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..29d10bc28 --- /dev/null +++ b/XeonE3/centos-7.5/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeone3_ffmpeg_centos75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/XeonE3/centos-7.5/ffmpeg/Dockerfile b/XeonE3/centos-7.5/ffmpeg/Dockerfile new file mode 100644 index 000000000..1805df9e3 --- /dev/null +++ b/XeonE3/centos-7.5/ffmpeg/Dockerfile @@ -0,0 +1,276 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + rm -rf /home/build/usr/samples; \ + rm -rf /home/build/usr/plugins; \ + make install; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q SDL2-devel libxcb-devel libvdpau-devel zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.5.1804 +LABEL Description="This is the base image for FFMPEG CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 numactl libvdpau libpciaccess; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD + diff --git a/XeonE3/centos-7.5/ffmpeg/Dockerfile.m4 b/XeonE3/centos-7.5/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..55cace77d --- /dev/null +++ b/XeonE3/centos-7.5/ffmpeg/Dockerfile.m4 @@ -0,0 +1,35 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.5.1804 +LABEL Description="This is the base image for FFMPEG CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/XeonE3/centos-7.5/ffmpeg/build.sh b/XeonE3/centos-7.5/ffmpeg/build.sh new file mode 100755 index 000000000..0f7eff72e --- /dev/null +++ b/XeonE3/centos-7.5/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos75-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/centos-7.5/ffmpeg/shell.sh b/XeonE3/centos-7.5/ffmpeg/shell.sh new file mode 100755 index 000000000..3c4069fc1 --- /dev/null +++ b/XeonE3/centos-7.5/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos75-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/centos-7.5/gst/CMakeLists.txt b/XeonE3/centos-7.5/gst/CMakeLists.txt new file mode 100644 index 000000000..e59ef1694 --- /dev/null +++ b/XeonE3/centos-7.5/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeone3_gst_centos75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/XeonE3/centos-7.5/gst/Dockerfile b/XeonE3/centos-7.5/gst/Dockerfile new file mode 100644 index 000000000..779c3fa23 --- /dev/null +++ b/XeonE3/centos-7.5/gst/Dockerfile @@ -0,0 +1,333 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Install automake +ARG AUTOMAKE_VER=1.14 +ARG AUTOMAKE_REPO=https://ftp.gnu.org/pub/gnu/automake/automake-${AUTOMAKE_VER}.tar.xz + +RUN wget -O - ${AUTOMAKE_REPO} | tar xJ; \ + cd automake-${AUTOMAKE_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --disable-doc; \ + make -j8; \ + make install + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN yum install -y -q libXrandr-devel + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.5.1804 +LABEL Description="This is the base image for GStreamer CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl glib2-2.56.1 libpciaccesslibxcb mesa-libGL libXrandr libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/XeonE3/centos-7.5/gst/Dockerfile.m4 b/XeonE3/centos-7.5/gst/Dockerfile.m4 new file mode 100644 index 000000000..13c833a6a --- /dev/null +++ b/XeonE3/centos-7.5/gst/Dockerfile.m4 @@ -0,0 +1,40 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(automake.m4) +include(gst-plugin-vaapi.m4) +include(cleanup.m4)dnl + +FROM centos:7.5.1804 +LABEL Description="This is the base image for GStreamer CentOS 7.5" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/XeonE3/centos-7.5/gst/build.sh b/XeonE3/centos-7.5/gst/build.sh new file mode 100755 index 000000000..fb590cab5 --- /dev/null +++ b/XeonE3/centos-7.5/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos75-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/centos-7.5/gst/shell.sh b/XeonE3/centos-7.5/gst/shell.sh new file mode 100755 index 000000000..5db538311 --- /dev/null +++ b/XeonE3/centos-7.5/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos75-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/centos-7.5/nginx+rtmp/.dockerignore b/XeonE3/centos-7.5/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/XeonE3/centos-7.5/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/XeonE3/centos-7.5/nginx+rtmp/CMakeLists.txt b/XeonE3/centos-7.5/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..c0ffea532 --- /dev/null +++ b/XeonE3/centos-7.5/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeone3_nginx_rtmp_centos75") +set(dep_image "xeone3_ffmpeg_centos75") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/XeonE3/centos-7.5/nginx+rtmp/Dockerfile b/XeonE3/centos-7.5/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..7987ff70d --- /dev/null +++ b/XeonE3/centos-7.5/nginx+rtmp/Dockerfile @@ -0,0 +1,70 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN yum install -y -q openssl-devel pcre2-devel zlib-devel libxslt-devel + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=nobody --group=nobody --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM xeone3-centos75-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN \ + yum install -y -q openssl-libs pcre2 zlib libxslt libxml2 ; \ + rm -rf /var/cache/yum/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/XeonE3/centos-7.5/nginx+rtmp/Dockerfile.m4 b/XeonE3/centos-7.5/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..85e9b5f73 --- /dev/null +++ b/XeonE3/centos-7.5/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM centos:7.5.1804 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM xeone3-centos75-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/XeonE3/centos-7.5/nginx+rtmp/build.sh b/XeonE3/centos-7.5/nginx+rtmp/build.sh new file mode 100755 index 000000000..2578b5c01 --- /dev/null +++ b/XeonE3/centos-7.5/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos75-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/centos-7.5/nginx+rtmp/nginx.conf b/XeonE3/centos-7.5/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/XeonE3/centos-7.5/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/XeonE3/centos-7.5/nginx+rtmp/nginx.conf.m4 b/XeonE3/centos-7.5/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/XeonE3/centos-7.5/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/XeonE3/centos-7.5/nginx+rtmp/shell.sh b/XeonE3/centos-7.5/nginx+rtmp/shell.sh new file mode 100755 index 000000000..393b6db75 --- /dev/null +++ b/XeonE3/centos-7.5/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos75-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/centos-7.6/CMakeLists.txt b/XeonE3/centos-7.6/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/XeonE3/centos-7.6/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/XeonE3/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt b/XeonE3/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..76e8a64fb --- /dev/null +++ b/XeonE3/centos-7.6/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeone3_ffmpeg_gst_devel_centos76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/XeonE3/centos-7.6/ffmpeg+gst+dev/Dockerfile b/XeonE3/centos-7.6/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..9841fa65e --- /dev/null +++ b/XeonE3/centos-7.6/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,400 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib64 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=ON -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib64"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib64" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Install automake +ARG AUTOMAKE_VER=1.14 +ARG AUTOMAKE_REPO=https://ftp.gnu.org/pub/gnu/automake/automake-${AUTOMAKE_VER}.tar.xz + +RUN wget -O - ${AUTOMAKE_REPO} | tar xJ; \ + cd automake-${AUTOMAKE_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --disable-doc; \ + make -j8; \ + make install + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN yum install -y -q libXrandr-devel + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q libass-devel freetype-devel SDL2-devel libxcb-devel libvdpau-devel texinfo zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM centos:7.6.1810 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 libass numactl libvdpau glib2-2.56.1 libpciaccesslibxcb mesa-libGL libXrandr libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/XeonE3/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 b/XeonE3/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..8fc213948 --- /dev/null +++ b/XeonE3/centos-7.6/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,44 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(automake.m4) +include(gst-plugin-vaapi.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.6.1810 +LABEL Description="This is the image for FFMPEG and GSTREAMER application development on CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/XeonE3/centos-7.6/ffmpeg+gst+dev/build.sh b/XeonE3/centos-7.6/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..77b71ee0f --- /dev/null +++ b/XeonE3/centos-7.6/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos76-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/centos-7.6/ffmpeg+gst+dev/shell.sh b/XeonE3/centos-7.6/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..3bdee4a7a --- /dev/null +++ b/XeonE3/centos-7.6/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos76-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/centos-7.6/ffmpeg/.dockerignore b/XeonE3/centos-7.6/ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/XeonE3/centos-7.6/ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/XeonE3/centos-7.6/ffmpeg/CMakeLists.txt b/XeonE3/centos-7.6/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..4ce101d07 --- /dev/null +++ b/XeonE3/centos-7.6/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeone3_ffmpeg_centos76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/XeonE3/centos-7.6/ffmpeg/Dockerfile b/XeonE3/centos-7.6/ffmpeg/Dockerfile new file mode 100644 index 000000000..7bb9c01be --- /dev/null +++ b/XeonE3/centos-7.6/ffmpeg/Dockerfile @@ -0,0 +1,276 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + rm -rf /home/build/usr/samples; \ + rm -rf /home/build/usr/plugins; \ + make install; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN yum install -y -q SDL2-devel libxcb-devel libvdpau-devel zlib-devel openssl-devel +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.6.1810 +LABEL Description="This is the base image for FFMPEG CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q libxcb SDL2 numactl libvdpau libpciaccess; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD + diff --git a/XeonE3/centos-7.6/ffmpeg/Dockerfile.m4 b/XeonE3/centos-7.6/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..80e8a5d40 --- /dev/null +++ b/XeonE3/centos-7.6/ffmpeg/Dockerfile.m4 @@ -0,0 +1,35 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM centos:7.6.1810 +LABEL Description="This is the base image for FFMPEG CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/XeonE3/centos-7.6/ffmpeg/build.sh b/XeonE3/centos-7.6/ffmpeg/build.sh new file mode 100755 index 000000000..c62360a14 --- /dev/null +++ b/XeonE3/centos-7.6/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos76-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/centos-7.6/ffmpeg/shell.sh b/XeonE3/centos-7.6/ffmpeg/shell.sh new file mode 100755 index 000000000..ebbaf7496 --- /dev/null +++ b/XeonE3/centos-7.6/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos76-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/centos-7.6/gst/CMakeLists.txt b/XeonE3/centos-7.6/gst/CMakeLists.txt new file mode 100644 index 000000000..e18ce44c9 --- /dev/null +++ b/XeonE3/centos-7.6/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeone3_gst_centos76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/XeonE3/centos-7.6/gst/Dockerfile b/XeonE3/centos-7.6/gst/Dockerfile new file mode 100644 index 000000000..211c480af --- /dev/null +++ b/XeonE3/centos-7.6/gst/Dockerfile @@ -0,0 +1,333 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib64; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib64 ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN yum install -y -q numactl-devel + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + ( source /opt/rh/devtoolset-7/enable; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ) + + +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +RUN yum install -y -q libpciaccess-devel + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib64; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN yum install -y -q libX11-devel mesa-libGL-devel + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN yum install -y -q glib2-devel-2.56.1 +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN yum install -y -q zlib-devel openssl-devel + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib64 --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Install automake +ARG AUTOMAKE_VER=1.14 +ARG AUTOMAKE_REPO=https://ftp.gnu.org/pub/gnu/automake/automake-${AUTOMAKE_VER}.tar.xz + +RUN wget -O - ${AUTOMAKE_REPO} | tar xJ; \ + cd automake-${AUTOMAKE_VER}; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --disable-doc; \ + make -j8; \ + make install + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN yum install -y -q libXrandr-devel + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM centos:7.6.1810 +LABEL Description="This is the base image for GStreamer CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN yum install -y epel-release; \ + yum install -y -q numactl glib2-2.56.1 libpciaccesslibxcb mesa-libGL libXrandr libpng12 libXv; \ + yum remove -y -q epel-release; \ + rm -rf /var/cache/yum/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib64/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/XeonE3/centos-7.6/gst/Dockerfile.m4 b/XeonE3/centos-7.6/gst/Dockerfile.m4 new file mode 100644 index 000000000..5a02b81e8 --- /dev/null +++ b/XeonE3/centos-7.6/gst/Dockerfile.m4 @@ -0,0 +1,40 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gmmlib.m4) +include(libdrm.m4) +include(libva.m4) +include(media-driver.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(automake.m4) +include(gst-plugin-vaapi.m4) +include(cleanup.m4)dnl + +FROM centos:7.6.1810 +LABEL Description="This is the base image for GStreamer CentOS 7.6" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/XeonE3/centos-7.6/gst/build.sh b/XeonE3/centos-7.6/gst/build.sh new file mode 100755 index 000000000..781f690f6 --- /dev/null +++ b/XeonE3/centos-7.6/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos76-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/centos-7.6/gst/shell.sh b/XeonE3/centos-7.6/gst/shell.sh new file mode 100755 index 000000000..f2a9f7f1c --- /dev/null +++ b/XeonE3/centos-7.6/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos76-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/centos-7.6/nginx+rtmp/.dockerignore b/XeonE3/centos-7.6/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/XeonE3/centos-7.6/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/XeonE3/centos-7.6/nginx+rtmp/CMakeLists.txt b/XeonE3/centos-7.6/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..ca6473177 --- /dev/null +++ b/XeonE3/centos-7.6/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeone3_nginx_rtmp_centos76") +set(dep_image "xeone3_ffmpeg_centos76") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/XeonE3/centos-7.6/nginx+rtmp/Dockerfile b/XeonE3/centos-7.6/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..6adf439ee --- /dev/null +++ b/XeonE3/centos-7.6/nginx+rtmp/Dockerfile @@ -0,0 +1,70 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN yum install -y -q openssl-devel pcre2-devel zlib-devel libxslt-devel + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=nobody --group=nobody --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM xeone3-centos76-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN \ + yum install -y -q openssl-libs pcre2 zlib libxslt libxml2 ; \ + rm -rf /var/cache/yum/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/XeonE3/centos-7.6/nginx+rtmp/Dockerfile.m4 b/XeonE3/centos-7.6/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..a457b6781 --- /dev/null +++ b/XeonE3/centos-7.6/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM centos:7.6.1810 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM xeone3-centos76-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/XeonE3/centos-7.6/nginx+rtmp/build.sh b/XeonE3/centos-7.6/nginx+rtmp/build.sh new file mode 100755 index 000000000..d64017232 --- /dev/null +++ b/XeonE3/centos-7.6/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos76-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/centos-7.6/nginx+rtmp/nginx.conf b/XeonE3/centos-7.6/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/XeonE3/centos-7.6/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/XeonE3/centos-7.6/nginx+rtmp/nginx.conf.m4 b/XeonE3/centos-7.6/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/XeonE3/centos-7.6/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/XeonE3/centos-7.6/nginx+rtmp/shell.sh b/XeonE3/centos-7.6/nginx+rtmp/shell.sh new file mode 100755 index 000000000..1406c3396 --- /dev/null +++ b/XeonE3/centos-7.6/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-centos76-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/ubuntu-16.04/CMakeLists.txt b/XeonE3/ubuntu-16.04/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/XeonE3/ubuntu-16.04/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/CMakeLists.txt b/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..4e5aa74dc --- /dev/null +++ b/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeone3_ffmpeg_gst_devel_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile b/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..50d137b85 --- /dev/null +++ b/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,369 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libpciaccess-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib/x86_64-linux-gnu -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=ON -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib/x86_64-linux-gnu"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib/x86_64-linux-gnu" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libxrandr-dev + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libass-dev libfreetype6-dev libvdpau-dev libsdl2-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev texinfo zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM ubuntu:16.04 +LABEL Description="This is the base image for developing FFMPEG and GStreamer applications based on Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxv1 libxcb-shm0 libxcb-shape0 libxcb-xfixes0 libsdl2-2.0-0 libasound2 libvdpau1 libnuma1 libass5 libssl1.0.0 libglib2.0 libdrm-intel1 libx11-xcb1 libgl1-mesa-glx libxrandr2 libpng12-0 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 b/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..911f541e0 --- /dev/null +++ b/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,42 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(gst-plugin-vaapi.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:16.04 +LABEL Description="This is the base image for developing FFMPEG and GStreamer applications based on Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/build.sh b/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..76153026b --- /dev/null +++ b/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1604-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/shell.sh b/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..c72e5922c --- /dev/null +++ b/XeonE3/ubuntu-16.04/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1604-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/ubuntu-16.04/ffmpeg/.dockerignore b/XeonE3/ubuntu-16.04/ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/XeonE3/ubuntu-16.04/ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/XeonE3/ubuntu-16.04/ffmpeg/CMakeLists.txt b/XeonE3/ubuntu-16.04/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..543ae9d66 --- /dev/null +++ b/XeonE3/ubuntu-16.04/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeone3_ffmpeg_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/XeonE3/ubuntu-16.04/ffmpeg/Dockerfile b/XeonE3/ubuntu-16.04/ffmpeg/Dockerfile new file mode 100644 index 000000000..45c6a4846 --- /dev/null +++ b/XeonE3/ubuntu-16.04/ffmpeg/Dockerfile @@ -0,0 +1,255 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libpciaccess-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + rm -rf /home/build/usr/samples; \ + rm -rf /home/build/usr/plugins; \ + make install; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libvdpau-dev libsdl2-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:16.04 +LABEL Description="This is the base image for FFMPEG Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxv1 libxcb-shm0 libxcb-shape0 libxcb-xfixes0 libsdl2-2.0-0 libasound2 libvdpau1 libnuma1 libssl1.0.0 ; \ + rm -rf /var/lib/apt/lists/*; +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri +ENV LIBVA_DRIVER_NAME=iHD + diff --git a/XeonE3/ubuntu-16.04/ffmpeg/Dockerfile.m4 b/XeonE3/ubuntu-16.04/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..7a8c36682 --- /dev/null +++ b/XeonE3/ubuntu-16.04/ffmpeg/Dockerfile.m4 @@ -0,0 +1,33 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:16.04 +LABEL Description="This is the base image for FFMPEG Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/XeonE3/ubuntu-16.04/ffmpeg/build.sh b/XeonE3/ubuntu-16.04/ffmpeg/build.sh new file mode 100755 index 000000000..1bff79a89 --- /dev/null +++ b/XeonE3/ubuntu-16.04/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1604-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/ubuntu-16.04/ffmpeg/shell.sh b/XeonE3/ubuntu-16.04/ffmpeg/shell.sh new file mode 100755 index 000000000..1d6bb623d --- /dev/null +++ b/XeonE3/ubuntu-16.04/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1604-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/ubuntu-16.04/gst/CMakeLists.txt b/XeonE3/ubuntu-16.04/gst/CMakeLists.txt new file mode 100644 index 000000000..13d6f2811 --- /dev/null +++ b/XeonE3/ubuntu-16.04/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeone3_gst_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/XeonE3/ubuntu-16.04/gst/Dockerfile b/XeonE3/ubuntu-16.04/gst/Dockerfile new file mode 100644 index 000000000..145fc8c70 --- /dev/null +++ b/XeonE3/ubuntu-16.04/gst/Dockerfile @@ -0,0 +1,302 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libpciaccess-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libxrandr-dev + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:16.04 +LABEL Description="This is the base image for GStreamer Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma1 libssl1.0.0 libglib2.0 libdrm-intel1 libx11-xcb1 libgl1-mesa-glx libxrandr2 libpng12-0 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/XeonE3/ubuntu-16.04/gst/Dockerfile.m4 b/XeonE3/ubuntu-16.04/gst/Dockerfile.m4 new file mode 100644 index 000000000..14e37d6fc --- /dev/null +++ b/XeonE3/ubuntu-16.04/gst/Dockerfile.m4 @@ -0,0 +1,38 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gmmlib.m4) +include(libva.m4) +include(media-driver.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(gst-plugin-vaapi.m4) +include(cleanup.m4)dnl + +FROM ubuntu:16.04 +LABEL Description="This is the base image for GStreamer Ubuntu 16.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/XeonE3/ubuntu-16.04/gst/build.sh b/XeonE3/ubuntu-16.04/gst/build.sh new file mode 100755 index 000000000..ca768043a --- /dev/null +++ b/XeonE3/ubuntu-16.04/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1604-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/ubuntu-16.04/gst/shell.sh b/XeonE3/ubuntu-16.04/gst/shell.sh new file mode 100755 index 000000000..bab0a1ca4 --- /dev/null +++ b/XeonE3/ubuntu-16.04/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1604-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/ubuntu-16.04/nginx+rtmp/.dockerignore b/XeonE3/ubuntu-16.04/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/XeonE3/ubuntu-16.04/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/XeonE3/ubuntu-16.04/nginx+rtmp/CMakeLists.txt b/XeonE3/ubuntu-16.04/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..2342d3fa3 --- /dev/null +++ b/XeonE3/ubuntu-16.04/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeone3_nginx_rtmp_ubuntu1604") +set(dep_image "xeone3_ffmpeg_ubuntu1604") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/XeonE3/ubuntu-16.04/nginx+rtmp/Dockerfile b/XeonE3/ubuntu-16.04/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..a632f17e7 --- /dev/null +++ b/XeonE3/ubuntu-16.04/nginx+rtmp/Dockerfile @@ -0,0 +1,69 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libssl-dev libpcre3-dev zlib1g-dev libxslt1-dev + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/x86_64-linux-gnu/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=www-data --group=www-data --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM xeone3-ubuntu1604-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxml2 libssl1.0.0 libpcre3 zlib1g libxslt1.1 ; \ + rm -rf /var/lib/apt/lists/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/XeonE3/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 b/XeonE3/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..0b8733adc --- /dev/null +++ b/XeonE3/ubuntu-16.04/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM ubuntu:16.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM xeone3-ubuntu1604-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/XeonE3/ubuntu-16.04/nginx+rtmp/build.sh b/XeonE3/ubuntu-16.04/nginx+rtmp/build.sh new file mode 100755 index 000000000..cda391a41 --- /dev/null +++ b/XeonE3/ubuntu-16.04/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1604-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/ubuntu-16.04/nginx+rtmp/nginx.conf b/XeonE3/ubuntu-16.04/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/XeonE3/ubuntu-16.04/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/XeonE3/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 b/XeonE3/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/XeonE3/ubuntu-16.04/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/XeonE3/ubuntu-16.04/nginx+rtmp/shell.sh b/XeonE3/ubuntu-16.04/nginx+rtmp/shell.sh new file mode 100755 index 000000000..91e076d10 --- /dev/null +++ b/XeonE3/ubuntu-16.04/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1604-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/ubuntu-18.04/CMakeLists.txt b/XeonE3/ubuntu-18.04/CMakeLists.txt new file mode 100644 index 000000000..32fa7e218 --- /dev/null +++ b/XeonE3/ubuntu-18.04/CMakeLists.txt @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/script/os.cmake) diff --git a/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/CMakeLists.txt b/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/CMakeLists.txt new file mode 100644 index 000000000..86c9ea0ae --- /dev/null +++ b/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeone3_ffmpeg_gst_devel_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile b/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile new file mode 100644 index 000000000..c07b302e0 --- /dev/null +++ b/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile @@ -0,0 +1,371 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libpciaccess-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/lib/x86_64-linux-gnu -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=ON -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/lib/x86_64-linux-gnu"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/lib/x86_64-linux-gnu" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libxrandr-dev + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples ; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libass-dev libfreetype6-dev libvdpau-dev libsdl2-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev texinfo zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-libass --enable-libfreetype --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +FROM ubuntu:18.04 +LABEL Description="This is the image for FFMPEG & GSTREAMER application development on Ubuntu 18.04" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxv1 libxcb-shm0 libxcb-shape0 libxcb-xfixes0 libsdl2-2.0-0 libasound2 libvdpau1 libnuma1 libass9 libssl1.1 libpciaccess0 libglib2.0 libdrm-intel1 libx11-xcb1 libgl1-mesa-glx libxrandr2 libpng16-16 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 b/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 new file mode 100644 index 000000000..a1f5e9074 --- /dev/null +++ b/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/Dockerfile.m4 @@ -0,0 +1,42 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(dldt-ie.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(gst-plugin-vaapi.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:18.04 +LABEL Description="This is the image for FFMPEG & GSTREAMER application development on Ubuntu 18.04" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/build.sh b/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/build.sh new file mode 100755 index 000000000..d13a79529 --- /dev/null +++ b/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1804-ffmpeg-gst-dev" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/shell.sh b/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/shell.sh new file mode 100755 index 000000000..e101ebaf0 --- /dev/null +++ b/XeonE3/ubuntu-18.04/ffmpeg+gst+dev/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1804-ffmpeg-gst-dev" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/ubuntu-18.04/ffmpeg/.dockerignore b/XeonE3/ubuntu-18.04/ffmpeg/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/XeonE3/ubuntu-18.04/ffmpeg/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/XeonE3/ubuntu-18.04/ffmpeg/CMakeLists.txt b/XeonE3/ubuntu-18.04/ffmpeg/CMakeLists.txt new file mode 100644 index 000000000..73a1d52ab --- /dev/null +++ b/XeonE3/ubuntu-18.04/ffmpeg/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeone3_ffmpeg_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/ffmpeg-tests.cmake") diff --git a/XeonE3/ubuntu-18.04/ffmpeg/Dockerfile b/XeonE3/ubuntu-18.04/ffmpeg/Dockerfile new file mode 100644 index 000000000..fd5702ef5 --- /dev/null +++ b/XeonE3/ubuntu-18.04/ffmpeg/Dockerfile @@ -0,0 +1,256 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +#include(transform360.m4) +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libpciaccess-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + rm -rf /home/build/usr/samples; \ + rm -rf /home/build/usr/plugins; \ + make install; + +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libvdpau-dev libsdl2-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev zlib1g-dev libssl-dev +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --extra-libs="-lpthread -lm" --enable-shared --enable-gpl --enable-openssl --enable-nonfree --enable-libdrm --enable-libmfx --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvthevc ; \ + make -j8; \ + make install DESTDIR="/home/build" + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:18.04 +LABEL Description="This is the base image for FFMPEG Ubuntu 18.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxv1 libxcb-shm0 libxcb-shape0 libxcb-xfixes0 libsdl2-2.0-0 libasound2 libvdpau1 libnuma1 libssl1.1 libpciaccess0 ; \ + rm -rf /var/lib/apt/lists/*; +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri +ENV LIBVA_DRIVER_NAME=iHD + diff --git a/XeonE3/ubuntu-18.04/ffmpeg/Dockerfile.m4 b/XeonE3/ubuntu-18.04/ffmpeg/Dockerfile.m4 new file mode 100644 index 000000000..d7e6a16cd --- /dev/null +++ b/XeonE3/ubuntu-18.04/ffmpeg/Dockerfile.m4 @@ -0,0 +1,33 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +#include(transform360.m4) +include(gmmlib.m4) +include(libva.m4) +include(media-driver.m4) +include(media-sdk.m4) +include(ffmpeg.m4) +include(cleanup.m4)dnl + +FROM ubuntu:18.04 +LABEL Description="This is the base image for FFMPEG Ubuntu 18.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/XeonE3/ubuntu-18.04/ffmpeg/build.sh b/XeonE3/ubuntu-18.04/ffmpeg/build.sh new file mode 100755 index 000000000..2be456c33 --- /dev/null +++ b/XeonE3/ubuntu-18.04/ffmpeg/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1804-ffmpeg" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/ubuntu-18.04/ffmpeg/shell.sh b/XeonE3/ubuntu-18.04/ffmpeg/shell.sh new file mode 100755 index 000000000..a77002546 --- /dev/null +++ b/XeonE3/ubuntu-18.04/ffmpeg/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1804-ffmpeg" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/ubuntu-18.04/gst/CMakeLists.txt b/XeonE3/ubuntu-18.04/gst/CMakeLists.txt new file mode 100644 index 000000000..88b526c04 --- /dev/null +++ b/XeonE3/ubuntu-18.04/gst/CMakeLists.txt @@ -0,0 +1,3 @@ +set(image "xeone3_gst_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/gst-tests.cmake") diff --git a/XeonE3/ubuntu-18.04/gst/Dockerfile b/XeonE3/ubuntu-18.04/gst/Dockerfile new file mode 100644 index 000000000..658562f78 --- /dev/null +++ b/XeonE3/ubuntu-18.04/gst/Dockerfile @@ -0,0 +1,304 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install + +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + + +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev + +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + + +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + + +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libpciaccess-dev libx11-dev xorg-dev libgl1-mesa-dev + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-gst-debug --disable-debug --disable-benchmarks --disable-check; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=/usr/lib/x86_64-linux-gnu --enable-shared --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + + + +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libxrandr-dev + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-examples --disable-debug; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + + +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; + +FROM ubuntu:18.04 +LABEL Description="This is the base image for GStreamer Ubuntu 18.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma1 libssl1.1 libglib2.0 libdrm-intel1 libx11-xcb1 libgl1-mesa-glx libxrandr2 libpng16-16 libxv1 ; \ + rm -rf /var/lib/apt/lists/*; + +# Install +COPY --from=build /home/build / +ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri +ENV LIBVA_DRIVER_NAME=iHD +ENV GST_VAAPI_ALL_DRIVERS=1 + diff --git a/XeonE3/ubuntu-18.04/gst/Dockerfile.m4 b/XeonE3/ubuntu-18.04/gst/Dockerfile.m4 new file mode 100644 index 000000000..0efe8b05c --- /dev/null +++ b/XeonE3/ubuntu-18.04/gst/Dockerfile.m4 @@ -0,0 +1,38 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl + +include(build-tools.m4) +include(libogg.m4) +include(libvorbis.m4) +include(libmp3lame.m4) +include(libfdk-aac.m4) +include(libopus.m4) +include(libvpx.m4) +include(libaom.m4) +include(libx264.m4) +include(libx265.m4) +include(svt-hevc.m4) +include(gmmlib.m4) +include(libva.m4) +include(media-driver.m4) +include(gst.m4) +include(gst-plugin-base.m4) +include(gst-plugin-good.m4) +include(gst-plugin-bad.m4) +include(gst-plugin-ugly.m4) +include(gst-plugin-libav.m4) +include(gst-plugin-vaapi.m4) +include(cleanup.m4)dnl + +FROM ubuntu:18.04 +LABEL Description="This is the base image for GStreamer Ubuntu 18.04 LTS" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) + +# Install +include(install.m4) diff --git a/XeonE3/ubuntu-18.04/gst/build.sh b/XeonE3/ubuntu-18.04/gst/build.sh new file mode 100755 index 000000000..dc8386152 --- /dev/null +++ b/XeonE3/ubuntu-18.04/gst/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1804-gst" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/ubuntu-18.04/gst/shell.sh b/XeonE3/ubuntu-18.04/gst/shell.sh new file mode 100755 index 000000000..424f09a34 --- /dev/null +++ b/XeonE3/ubuntu-18.04/gst/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1804-gst" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/XeonE3/ubuntu-18.04/nginx+rtmp/.dockerignore b/XeonE3/ubuntu-18.04/nginx+rtmp/.dockerignore new file mode 100644 index 000000000..1cb8a04d9 --- /dev/null +++ b/XeonE3/ubuntu-18.04/nginx+rtmp/.dockerignore @@ -0,0 +1,4 @@ +CMakeLists.txt +*.sh +*.m4 +test/* diff --git a/XeonE3/ubuntu-18.04/nginx+rtmp/CMakeLists.txt b/XeonE3/ubuntu-18.04/nginx+rtmp/CMakeLists.txt new file mode 100644 index 000000000..631b0e74e --- /dev/null +++ b/XeonE3/ubuntu-18.04/nginx+rtmp/CMakeLists.txt @@ -0,0 +1,4 @@ +set(image "xeone3_nginx_rtmp_ubuntu1804") +set(dep_image "xeone3_ffmpeg_ubuntu1804") +include("${CMAKE_SOURCE_DIR}/script/image.cmake") +include("${CMAKE_SOURCE_DIR}/script/nginx-tests.cmake") diff --git a/XeonE3/ubuntu-18.04/nginx+rtmp/Dockerfile b/XeonE3/ubuntu-18.04/nginx+rtmp/Dockerfile new file mode 100644 index 000000000..d00ac4e6b --- /dev/null +++ b/XeonE3/ubuntu-18.04/nginx+rtmp/Dockerfile @@ -0,0 +1,70 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home + +# COMMON BUILD TOOLS +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex + +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install + + +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + + +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +RUN apt-get update && apt-get install -y -q --no-install-recommends libssl-dev libpcre3-dev zlib1g-dev libxslt1-dev + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/x86_64-linux-gnu/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=www-data --group=www-data --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre --add-module=../nginx-rtmp-module ; \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + + +FROM xeone3-ubuntu1804-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libxml2 libssl1.0.0 libpcre3 zlib1g libxslt1.1 ; \ + rm -rf /var/lib/apt/lists/*; +# Install +COPY --from=build /home/build / +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 + diff --git a/XeonE3/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 b/XeonE3/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 new file mode 100644 index 000000000..a39645bd9 --- /dev/null +++ b/XeonE3/ubuntu-18.04/nginx+rtmp/Dockerfile.m4 @@ -0,0 +1,19 @@ + +FROM ubuntu:18.04 AS build +WORKDIR /home +define(`BUILD_LINKAGE',shared)dnl +define(`BUILD_TOOLS_NO_ASM')dnl + +include(build-tools.m4) +include(nginx-rtmp.m4) +include(nginx.m4)dnl + +FROM xeone3-ubuntu1804-ffmpeg:latest +LABEL Description="This is the base image for a NGINX+RTMP service" +LABEL Vendor="Intel Corporation" +WORKDIR /home + +# Prerequisites +include(install.pkgs.m4) +# Install +include(install.m4) diff --git a/XeonE3/ubuntu-18.04/nginx+rtmp/build.sh b/XeonE3/ubuntu-18.04/nginx+rtmp/build.sh new file mode 100755 index 000000000..b8d7db456 --- /dev/null +++ b/XeonE3/ubuntu-18.04/nginx+rtmp/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1804-nginx-rtmp" +VERSION="1.0" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/build.sh" diff --git a/XeonE3/ubuntu-18.04/nginx+rtmp/nginx.conf b/XeonE3/ubuntu-18.04/nginx+rtmp/nginx.conf new file mode 100644 index 000000000..6206566c4 --- /dev/null +++ b/XeonE3/ubuntu-18.04/nginx+rtmp/nginx.conf @@ -0,0 +1,94 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} + diff --git a/XeonE3/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 b/XeonE3/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 new file mode 100644 index 000000000..3121ab411 --- /dev/null +++ b/XeonE3/ubuntu-18.04/nginx+rtmp/nginx.conf.m4 @@ -0,0 +1 @@ +include(nginx-conf.m4) diff --git a/XeonE3/ubuntu-18.04/nginx+rtmp/shell.sh b/XeonE3/ubuntu-18.04/nginx+rtmp/shell.sh new file mode 100755 index 000000000..0c9b2ff22 --- /dev/null +++ b/XeonE3/ubuntu-18.04/nginx+rtmp/shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +IMAGE="xeone3-ubuntu1804-nginx-rtmp" +DIR=$(dirname $(readlink -f "$0")) + +. "${DIR}/../../../script/shell.sh" diff --git a/script/build.sh b/script/build.sh new file mode 100644 index 000000000..1bad39913 --- /dev/null +++ b/script/build.sh @@ -0,0 +1,24 @@ +#!/bin/bash -e + +if test -z "${DIR}"; then + echo "This script should not be called directly." + exit -1 +fi + +TEMPLATE="${DIR}/../../../template" + +for m4file in "${DIR}"/*.m4; do + if test -f "$m4file"; then + m4 "-I${TEMPLATE}" -DDOCKER_IMAGE=${IMAGE} "${m4file}" > "${m4file%\.m4}" + fi +done || echo + +if test "$1" = '-n'; then + exit 0; +fi + +if grep -q 'AS build' "${DIR}/Dockerfile"; then + sudo docker build --network=host --target build -t "${IMAGE}:build" "$DIR" $(env | grep -E '_(proxy|REPO|VER)=' | sed 's/^/--build-arg /') +fi + +sudo docker build --network=host -t "${IMAGE}:${VERSION}" -t "${IMAGE}:latest" "$DIR" $(env | grep -E '_(proxy|REPO|VER)=' | sed 's/^/--build-arg /') diff --git a/script/dldt-tests.cmake b/script/dldt-tests.cmake new file mode 100644 index 000000000..d84c85791 --- /dev/null +++ b/script/dldt-tests.cmake @@ -0,0 +1,5 @@ +file(GLOB tests "${CMAKE_CURRENT_SOURCE_DIR}/../../../test/dldt_*.sh") +foreach(test ${tests}) + get_filename_component(name ${test} NAME_WE) + add_test(test_${image}_${name} "${CMAKE_CURRENT_SOURCE_DIR}/shell.sh" "/mnt/${name}.sh" "${image}") +endforeach() diff --git a/script/ffmpeg-tests.cmake b/script/ffmpeg-tests.cmake new file mode 100644 index 000000000..136ad52e4 --- /dev/null +++ b/script/ffmpeg-tests.cmake @@ -0,0 +1,5 @@ +file(GLOB tests "${CMAKE_CURRENT_SOURCE_DIR}/../../../test/ffmpeg_*.sh") +foreach(test ${tests}) + get_filename_component(name ${test} NAME_WE) + add_test(test_${image}_${name} "${CMAKE_CURRENT_SOURCE_DIR}/shell.sh" "/mnt/${name}.sh" "${image}") +endforeach() diff --git a/script/gst-tests.cmake b/script/gst-tests.cmake new file mode 100644 index 000000000..086409adf --- /dev/null +++ b/script/gst-tests.cmake @@ -0,0 +1,5 @@ +file(GLOB tests "${CMAKE_CURRENT_SOURCE_DIR}/../../../test/gst_*.sh") +foreach(test ${tests}) + get_filename_component(name ${test} NAME_WE) + add_test(test_${image}_${name} "${CMAKE_CURRENT_SOURCE_DIR}/shell.sh" "/mnt/${name}.sh" "${image}") +endforeach() diff --git a/script/image.cmake b/script/image.cmake new file mode 100644 index 000000000..b8ab40500 --- /dev/null +++ b/script/image.cmake @@ -0,0 +1,6 @@ +add_custom_target(build_${image} ALL "${CMAKE_CURRENT_SOURCE_DIR}/build.sh") +if(dep_image) + add_dependencies(build_${image} build_${dep_image}) +endif() +add_custom_target(shell_${image} "${CMAKE_CURRENT_SOURCE_DIR}/shell.sh") + diff --git a/script/mss-tests.cmake b/script/mss-tests.cmake new file mode 100644 index 000000000..6409d1451 --- /dev/null +++ b/script/mss-tests.cmake @@ -0,0 +1,5 @@ +file(GLOB tests "${CMAKE_CURRENT_SOURCE_DIR}/../../../test/mss_*.sh") +foreach(test ${tests}) + get_filename_component(name ${test} NAME_WE) + add_test(test_${image}_${name} "${CMAKE_CURRENT_SOURCE_DIR}/shell.sh" "/mnt/${name}.sh" "${image}") +endforeach() diff --git a/script/nginx-tests.cmake b/script/nginx-tests.cmake new file mode 100644 index 000000000..3bb732df5 --- /dev/null +++ b/script/nginx-tests.cmake @@ -0,0 +1,5 @@ +file(GLOB tests "${CMAKE_CURRENT_SOURCE_DIR}/../../../test/nginx_*.sh") +foreach(test ${tests}) + get_filename_component(name ${test} NAME_WE) + add_test(test_${image}_${name} "${CMAKE_CURRENT_SOURCE_DIR}/shell.sh" "/mnt/${name}.sh" "${image}") +endforeach() diff --git a/script/os.cmake b/script/os.cmake new file mode 100644 index 000000000..b266119e8 --- /dev/null +++ b/script/os.cmake @@ -0,0 +1,12 @@ +if(NOT DEFINED image_dirs) + file(GLOB image_dirs "*") +endif() + +foreach(dir ${image_dirs}) + if(EXISTS ${dir}/CMakeLists.txt) + add_subdirectory(${dir}) + endif() + if(EXISTS ${dir}/build.sh) + execute_process(COMMAND ${dir}/build.sh -n OUTPUT_QUIET ERROR_QUIET) + endif() +endforeach() diff --git a/script/platform.cmake b/script/platform.cmake new file mode 100644 index 000000000..13f23d84a --- /dev/null +++ b/script/platform.cmake @@ -0,0 +1,6 @@ +file(GLOB dirs "*") +foreach(dir ${dirs}) + if(EXISTS ${dir}/CMakeLists.txt) + add_subdirectory(${dir}) + endif() +endforeach() diff --git a/script/shell.sh b/script/shell.sh new file mode 100644 index 000000000..4b194068f --- /dev/null +++ b/script/shell.sh @@ -0,0 +1,9 @@ +#!/bin/bash -e + +if test -z "${DIR}"; then + echo "This script should not be called directly." + exit -1 +fi + +sudo docker run --device=/dev/dri:/dev/dri --network=host -v "$DIR/../../../test:/mnt:ro" $(env | grep -E '_(proxy|REPO|VER)=' | sed 's/^/-e /') $(grep '^ARG .*=' "${DIR}/Dockerfile" | sed 's/^ARG /-e /') -it "${IMAGE}" ${*-/bin/bash} + diff --git a/template/automake.m4 b/template/automake.m4 new file mode 100644 index 000000000..f2638110d --- /dev/null +++ b/template/automake.m4 @@ -0,0 +1,10 @@ +# Install automake +ARG AUTOMAKE_VER=1.14 +ARG AUTOMAKE_REPO=https://ftp.gnu.org/pub/gnu/automake/automake-${AUTOMAKE_VER}.tar.xz + +RUN wget -O - ${AUTOMAKE_REPO} | tar xJ; \ + cd automake-${AUTOMAKE_VER}; \ + ./configure --prefix=/usr --libdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) --disable-doc; \ + make -j8; \ + make install + diff --git a/template/build-tools.m4 b/template/build-tools.m4 new file mode 100644 index 000000000..cdadcff05 --- /dev/null +++ b/template/build-tools.m4 @@ -0,0 +1,12 @@ +# COMMON BUILD TOOLS +ifelse(index(DOCKER_IMAGE,ubuntu),-1,dnl +RUN yum install -y -q bzip2 make autoconf libtool git wget ca-certificates pkg-config gcc gcc-c++ bison flex patch epel-release; +,dnl +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends build-essential autoconf automake make git wget pciutils cpio libtool lsb-release ca-certificates pkg-config bison flex +)dnl + +include(cmake.m4) +ifdef(`BUILD_TOOLS_NO_ASM',,`dnl +include(nasm.m4) +include(yasm.m4)dnl +')dnl diff --git a/template/cleanup.m4 b/template/cleanup.m4 new file mode 100644 index 000000000..dc6799aef --- /dev/null +++ b/template/cleanup.m4 @@ -0,0 +1,8 @@ +ifelse(index(DOCKER_IMAGE,-dev),-1, +# Clean up after build +RUN rm -rf /home/build/usr/include; \ + rm -rf /home/build/usr/share/doc; \ + rm -rf /home/build/usr/share/gtk-doc; \ + rm -rf /home/build/usr/share/man; \ + find /home/build -name "*.a" -exec rm -f {} \; +)dnl diff --git a/template/cmake.m4 b/template/cmake.m4 new file mode 100644 index 000000000..d4091536c --- /dev/null +++ b/template/cmake.m4 @@ -0,0 +1,8 @@ +# Install cmake +ARG CMAKE_VER=3.13.1 +ARG CMAKE_REPO=https://cmake.org/files +RUN wget -O - ${CMAKE_REPO}/v${CMAKE_VER%.*}/cmake-${CMAKE_VER}.tar.gz | tar xz; \ + cd cmake-${CMAKE_VER}; \ + ./bootstrap --prefix="/usr"; \ + make -j8; \ + make install diff --git a/template/dldt-ie.m4 b/template/dldt-ie.m4 new file mode 100644 index 000000000..dfbc3d9dc --- /dev/null +++ b/template/dldt-ie.m4 @@ -0,0 +1,34 @@ +# Build DLDT-Inference Engine +ARG DLDT_VER=2018_R4 +ARG DLDT_REPO=https://github.com/opencv/dldt.git +RUN git clone -b ${DLDT_VER} ${DLDT_REPO}; \ + cd dldt; \ + git submodule init; \ + git submodule update --recursive; \ + cd inference-engine; \ + mkdir build; \ + cd build; \ + cmake -DBUILD_SHARED_LIBS=ifelse(index(BUILD_LINKAGE,static),-1,ON,OFF) -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_PATH=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=ifelse(index(DOCKER_IMAGE,xeon-),-1,ON,OFF) -DENABLE_SAMPLE_CORE=OFF ..; \ + make -j16; \ + rm -rf ../bin/intel64/Release/lib/libgtest*; \ + rm -rf ../bin/intel64/Release/lib/libgmock*; \ + rm -rf ../bin/intel64/Release/lib/libmock*; \ + rm -rf ../bin/intel64/Release/lib/libtest*; \ + for p in /usr /home/build/usr; do \ + mkdir -p $p/include/dldt; \ + cp -r ../include/* $p/include/dldt; \ + libdir="$p/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu)"; \ + cp -r ../bin/intel64/Release/lib/* "$libdir"; \ + mkdir -p "$libdir/pkgconfig"; \ + pc="$libdir/pkgconfig/dldt.pc"; \ + echo "prefix=/usr" > "$pc"; \ + echo "libdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu)" >> "$pc"; \ + echo "includedir=/usr/include/dldt" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Name: DLDT" >> "$pc"; \ + echo "Description: Intel Deep Learning Deployment Toolkit" >> "$pc"; \ + echo "Version: 4.0" >> "$pc"; \ + echo "" >> "$pc"; \ + echo "Libs: -L\${libdir} -linference_engine" >> "$pc"; \ + echo "Cflags: -I\${includedir}" >> "$pc"; \ + done; diff --git a/template/ffmpeg.m4 b/template/ffmpeg.m4 new file mode 100644 index 000000000..de539ab69 --- /dev/null +++ b/template/ffmpeg.m4 @@ -0,0 +1,33 @@ +# Fetch FFmpeg source +ARG FFMPEG_VER=n4.1 +ARG FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg/archive/${FFMPEG_VER}.tar.gz +ARG FFMPEG_FLV_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/The-RTMP-protocol-extensions-for-H.265-HEVC.patch +ARG FFMPEG_1TN_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11625/raw +ARG FFMPEG_THREAD_PATCH_REPO=https://patchwork.ffmpeg.org/patch/11035/raw +define(`FFMPEG_SUBTITLE',ifelse(index(DOCKER_IMAGE,-dev),-1,OFF,ON))dnl +define(`FFMPEG_X11',ifelse(index(DOCKER_IMAGE,-dev),-1,ifelse(index(DOCKER_IMAGE,xeon-),-1,ON,OFF),ON))dnl + +ifelse(index(DOCKER_IMAGE,ubuntu),-1,, +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends ifelse(FFMPEG_SUBTITLE,ON,libass-dev libfreetype6-dev )ifelse(index(DOCKER_IMAGE,xeon-),-1,libvdpau-dev )ifelse(FFMPEG_X11,ON,libsdl2-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev )ifelse(index(DOCKER_IMAGE,-dev),-1,,texinfo )zlib1g-dev libssl-dev +)dnl +ifelse(index(DOCKER_IMAGE,centos),-1,, +RUN yum install -y -q ifelse(FFMPEG_SUBTITLE,ON,libass-devel freetype-devel )ifelse(FFMPEG_X11,ON,SDL2-devel libxcb-devel )ifelse(index(DOCKER_IMAGE,xeon-),-1,libvdpau-devel )ifelse(index(DOCKER_IMAGE,-dev),-1,,texinfo )zlib-devel openssl-devel +)dnl +RUN wget -O - ${FFMPEG_REPO} | tar xz && mv FFmpeg-${FFMPEG_VER} FFmpeg; \ + cd FFmpeg; \ + wget -O - ${FFMPEG_FLV_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_1TN_PATCH_REPO} | patch -p1; \ + wget -O - ${FFMPEG_THREAD_PATCH_REPO} | patch -p1; + +defn(`FFMPEG_SOURCE_SVT_HEVC',`FFMPEG_SOURCE_TRANSFORM360')dnl +# Compile FFmpeg +RUN cd /home/FFmpeg; \ + ./configure --prefix="/usr" --libdir=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu) --extra-libs="-lpthread -lm" --enable-defn(`BUILD_LINKAGE') --enable-gpl ifelse(FFMPEG_SUBTITLE,ON,--enable-libass --enable-libfreetype) ifelse(FFMPEG_X11,OFF,--disable-xlib --disable-sdl2) --enable-openssl --enable-nonfree ifelse(index(DOCKER_IMAGE,xeon-),-1,--enable-libdrm --enable-libmfx,--disable-vaapi --disable-hwaccels) ifelse(index(DOCKER_IMAGE,-dev),-1,--disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages) defn(`FFMPEG_CONFIG_FDKAAC',`FFMPEG_CONFIG_MP3LAME',`FFMPEG_CONFIG_OPUS',`FFMPEG_CONFIG_VORBIS',`FFMPEG_CONFIG_VPX',`FFMPEG_CONFIG_X264',`FFMPEG_CONFIG_X265',`FFMPEG_CONFIG_AOM',`FFMPEG_CONFIG_SVT_HEVC',`FFMPEG_CONFIG_TRANSFORM360'); \ + make -j8; \ + make install DESTDIR="/home/build" + +define(`INSTALL_PKGS_FFMPEG',dnl +ifelse(index(DOCKER_IMAGE,ubuntu1604),-1,,ifelse(FFMPEG_X11,ON,libxv1 libxcb-shm0 libxcb-shape0 libxcb-xfixes0 libsdl2-2.0-0 libasound2) ifelse(index(DOCKER_IMAGE,xeon-),-1,libvdpau1) libnuma1 ifelse(FFMPEG_SUBTITLE,ON,libass5) libssl1.0.0 ) dnl +ifelse(index(DOCKER_IMAGE,ubuntu1804),-1,,ifelse(FFMPEG_X11,ON,libxv1 libxcb-shm0 libxcb-shape0 libxcb-xfixes0 libsdl2-2.0-0 libasound2) ifelse(index(DOCKER_IMAGE,xeon-),-1,libvdpau1) libnuma1 ifelse(FFMPEG_SUBTITLE,ON,libass9) libssl1.1 libpciaccess0 ) dnl +ifelse(index(DOCKER_IMAGE,centos),-1,,ifelse(FFMPEG_X11,ON,libxcb SDL2) ifelse(FFMPEG_SUBTITLE,ON,libass) numactl ifelse(index(DOCKER_IMAGE,xeon-),-1,libvdpau) ) dnl +)dnl diff --git a/template/gmmlib.m4 b/template/gmmlib.m4 new file mode 100644 index 000000000..30417b669 --- /dev/null +++ b/template/gmmlib.m4 @@ -0,0 +1,6 @@ +# Fetch gmmlib +ARG GMMLIB_VER=intel-gmmlib-18.4.1 +ARG GMMLIB_REPO=https://github.com/intel/gmmlib/archive/${GMMLIB_VER}.tar.gz + +RUN wget -O - ${GMMLIB_REPO} | tar xz && mv gmmlib-${GMMLIB_VER} gmmlib; + diff --git a/template/gst-plugin-bad.m4 b/template/gst-plugin-bad.m4 new file mode 100644 index 000000000..15922c814 --- /dev/null +++ b/template/gst-plugin-bad.m4 @@ -0,0 +1,10 @@ +# Build the gstremaer plugin bad set +ARG GST_PLUGIN_BAD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BAD_REPO} | tar xJ; \ + cd gst-plugins-bad-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) --libexecdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE') --disable-examples ifelse(index(DOCKER_IMAGE,-dev),-1,--disable-debug); \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install diff --git a/template/gst-plugin-base.m4 b/template/gst-plugin-base.m4 new file mode 100644 index 000000000..8714bd556 --- /dev/null +++ b/template/gst-plugin-base.m4 @@ -0,0 +1,12 @@ +# Build the gstremaer plugin base +ARG GST_PLUGIN_BASE_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_BASE_REPO} | tar xJ; \ + cd gst-plugins-base-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) --libexecdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE') --disable-examples ifelse(index(DOCKER_IMAGE,-dev),-1,--disable-debug); \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +define(`INSTALL_PKGS_GST_PLUGIN_BASE',ifelse(index(DOCKER_IMAGE,ubuntu1604),-1,,libpng12-0 libxv1 )ifelse(index(DOCKER_IMAGE,ubuntu1804),-1,,libpng16-16 libxv1 )ifelse(index(DOCKER_IMAGE,centos),-1,,libpng12 libXv))dnl diff --git a/template/gst-plugin-good.m4 b/template/gst-plugin-good.m4 new file mode 100644 index 000000000..320378431 --- /dev/null +++ b/template/gst-plugin-good.m4 @@ -0,0 +1,10 @@ +# Build the gstremaer plugin good set +ARG GST_PLUGIN_GOOD_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_GOOD_REPO} | tar xJ; \ + cd gst-plugins-good-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) --libexecdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE') --disable-examples ifelse(index(DOCKER_IMAGE,-dev),-1,--disable-debug); \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install diff --git a/template/gst-plugin-libav.m4 b/template/gst-plugin-libav.m4 new file mode 100644 index 000000000..bf5e9ed3a --- /dev/null +++ b/template/gst-plugin-libav.m4 @@ -0,0 +1,18 @@ +# Build gst-libav +ARG GST_PLUGIN_LIBAV_REPO=https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${GST_VER}.tar.xz + +ifelse(index(DOCKER_IMAGE,ubuntu),-1,, +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends zlib1g-dev libssl-dev +)dnl +ifelse(index(DOCKER_IMAGE,centos),-1,, +RUN yum install -y -q zlib-devel openssl-devel +)dnl + +RUN wget -O - ${GST_PLUGIN_LIBAV_REPO} | tar xJ; \ + cd gst-libav-${GST_VER}; \ + ./configure --prefix="/usr" --libdir=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE') --enable-gpl; \ + make -j8; \ + make install DESTDIR="/home/build" + +define(`INSTALL_PKGS_FFMPEG',ifelse(index(DOCKER_IMAGE,ubuntu1604),-1,,libnuma1 libssl1.0.0 )ifelse(index(DOCKER_IMAGE,ubuntu1804),-1,,libnuma1 libssl1.1 )ifelse(index(DOCKER_IMAGE,centos),-1,,numactl ))dnl + diff --git a/template/gst-plugin-ugly.m4 b/template/gst-plugin-ugly.m4 new file mode 100644 index 000000000..c0b064f64 --- /dev/null +++ b/template/gst-plugin-ugly.m4 @@ -0,0 +1,10 @@ +# Build the gstremaer plugin ugly set +ARG GST_PLUGIN_UGLY_REPO=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${GST_VER}.tar.xz + +RUN wget -O - ${GST_PLUGIN_UGLY_REPO} | tar xJ; \ + cd gst-plugins-ugly-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) --libexecdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE') --disable-examples ifelse(index(DOCKER_IMAGE,-dev),-1,--disable-debug); \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install diff --git a/template/gst-plugin-vaapi.m4 b/template/gst-plugin-vaapi.m4 new file mode 100644 index 000000000..17f1caed6 --- /dev/null +++ b/template/gst-plugin-vaapi.m4 @@ -0,0 +1,21 @@ +# Build gstremaer plugin vaapi +ARG GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi//gstreamer-vaapi-${GST_VER}.tar.xz + +ifelse(index(DOCKER_IMAGE,ubuntu),-1,dnl +RUN yum install -y -q libXrandr-devel +,dnl +RUN apt-get update && apt-get install -y -q --no-install-recommends libxrandr-dev +)dnl + +RUN wget -O - ${GST_PLUGIN_VAAPI_REPO} | tar xJ; \ + cd gstreamer-vaapi-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) --libexecdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE') --disable-examples ifelse(index(DOCKER_IMAGE,-dev),-1,--disable-debug); \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +define(`INSTALL_PKGS_GST_PLUGIN_VAAPI',ifelse(index(DOCKER_IMAGE,ubuntu),-1,libxcb mesa-libGL libXrandr ,libdrm-intel1 libx11-xcb1 libgl1-mesa-glx libxrandr2 ))dnl +define(`INSTALL_GST_PLUGIN_VAAPI',dnl +ENV GST_VAAPI_ALL_DRIVERS=1 +)dnl diff --git a/template/gst.m4 b/template/gst.m4 new file mode 100644 index 000000000..2c4286f0c --- /dev/null +++ b/template/gst.m4 @@ -0,0 +1,22 @@ +# Build the gstremaer core +ARG GST_VER=1.14.4 +ARG GST_REPO=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${GST_VER}.tar.xz + +ifelse(index(DOCKER_IMAGE,ubuntu1604),-1,, +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +)dnl +ifelse(index(DOCKER_IMAGE,ubuntu1804),-1,, +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libglib2.0-dev +)dnl +ifelse(index(DOCKER_IMAGE,centos),-1,, +RUN yum install -y -q glib2-devel-2.56.1 +)dnl +RUN wget -O - ${GST_REPO} | tar xJ; \ + cd gstreamer-${GST_VER}; \ + ./autogen.sh; \ + ./configure --prefix=/usr --libdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) --libexecdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE') --disable-examples ifelse(index(DOCKER_IMAGE,-dev),-1,--disable-gst-debug --disable-debug --disable-benchmarks --disable-check); \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install +define(`INSTALL_PKGS_GST',ifelse(index(DOCKER_IMAGE,ubuntu),-1,glib2-2.56.1,libglib2.0) )dnl diff --git a/template/install.m4 b/template/install.m4 new file mode 100644 index 000000000..8262e3cf6 --- /dev/null +++ b/template/install.m4 @@ -0,0 +1,2 @@ +COPY --from=build /home/build / +defn(`INSTALL_NGINX',`INSTALL_MEDIA_DRIVER',`INSTALL_GST_PLUGIN_VAAPI')dnl diff --git a/template/install.pkgs.m4 b/template/install.pkgs.m4 new file mode 100644 index 000000000..66fba6396 --- /dev/null +++ b/template/install.pkgs.m4 @@ -0,0 +1,17 @@ +ifelse(index(DOCKER_IMAGE,centos),-1,, +RUN ifdef(`INSTALL_PKGS_FFMPEG',yum install -y epel-release;) \ + yum install -y -q defn(`INSTALL_PKGS_FFMPEG',`INSTALL_PKGS_TRANSFORM360',`INSTALL_PKGS_GST',`INSTALL_PKGS_NGINX',`INSTALL_PKGS_LIBDRM',`INSTALL_PKGS_GST_PLUGIN_VAAPI',`INSTALL_PKGS_GST_PLUGIN_BASE'); \ +ifdef(`INSTALL_PKGS_FFMPEG',`dnl + yum remove -y -q epel-release; \ +')dnl + rm -rf /var/cache/yum/*;dnl +)dnl +ifelse(index(DOCKER_IMAGE,ubuntu1604),-1,, +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends defn(`INSTALL_PKGS_FFMPEG',`INSTALL_PKGS_TRANSFORM360',`INSTALL_PKGS_GST',`INSTALL_PKGS_NGINX',`INSTALL_PKGS_GST_PLUGIN_VAAPI',`INSTALL_PKGS_GST_PLUGIN_BASE'); \ + rm -rf /var/lib/apt/lists/*;dnl +)dnl +ifelse(index(DOCKER_IMAGE,ubuntu1804),-1,, +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends defn(`INSTALL_PKGS_FFMPEG',`INSTALL_PKGS_TRANSFORM360',`INSTALL_PKGS_GST',`INSTALL_PKGS_NGINX',`INSTALL_PKGS_GST_PLUGIN_VAAPI',`INSTALL_PKGS_GST_PLUGIN_BASE'); \ + rm -rf /var/lib/apt/lists/*;dnl +)dnl diff --git a/template/libaom.m4 b/template/libaom.m4 new file mode 100644 index 000000000..136f7c828 --- /dev/null +++ b/template/libaom.m4 @@ -0,0 +1,13 @@ +# Build AOM +ARG AOM_VER=tags/v1.0.0 +ARG AOM_REPO=https://aomedia.googlesource.com/aom + +define(`FFMPEG_CONFIG_AOM',--enable-libaom )dnl +RUN git clone ${AOM_REPO}; \ + mkdir aom/aom_build; \ + cd aom/aom_build; \ + git checkout ${AOM_VER}; \ + cmake -DBUILD_SHARED_LIBS=ifelse(BUILD_LINKAGE,shared,ON,OFF) -DENABLE_NASM=ON -DENABLE_TESTS=OFF -DENABLE_DOCS=OFF -DCMAKE_INSTALL_PREFIX="/usr" -DLIB_INSTALL_DIR=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu) ..; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install diff --git a/template/libdrm.m4 b/template/libdrm.m4 new file mode 100644 index 000000000..bf2a07bee --- /dev/null +++ b/template/libdrm.m4 @@ -0,0 +1,19 @@ +# Build libdrm +ARG LIBDRM_VER=2.4.96 +ARG LIBDRM_REPO=https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM_VER}.tar.gz + +ifelse(index(DOCKER_IMAGE,ubuntu),-1,,dnl +RUN apt-get update && apt-get install -y -q --no-install-recommends libpciaccess-dev +)dnl +ifelse(index(DOCKER_IMAGE,centos),-1,,dnl +RUN yum install -y -q libpciaccess-devel +)dnl + +RUN wget -O - ${LIBDRM_REPO} | tar xz; \ + cd libdrm-${LIBDRM_VER}; \ + ./configure --prefix=/usr --libdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu); \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + +define(`INSTALL_PKGS_LIBDRM',libpciaccess)dnl diff --git a/template/libfdk-aac.m4 b/template/libfdk-aac.m4 new file mode 100644 index 000000000..ad9077d07 --- /dev/null +++ b/template/libfdk-aac.m4 @@ -0,0 +1,13 @@ +# Build fdk-aac +ARG FDK_AAC_VER=v0.1.6 +ARG FDK_AAC_REPO=https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_VER}.tar.gz + +define(`FFMPEG_CONFIG_FDKAAC',--enable-libfdk-aac )dnl +RUN wget -O - ${FDK_AAC_REPO} | tar xz && mv fdk-aac-${FDK_AAC_VER#v} fdk-aac; \ + cd fdk-aac; \ + autoreconf -fiv; \ + ./configure --prefix="/usr" --libdir=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE'); \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + diff --git a/template/libmp3lame.m4 b/template/libmp3lame.m4 new file mode 100644 index 000000000..f3361243e --- /dev/null +++ b/template/libmp3lame.m4 @@ -0,0 +1,11 @@ +# Build mp3lame +ARG MP3LAME_VER=3.100 +ARG MP3LAME_REPO=https://sourceforge.net/projects/lame/files/lame/${MP3LAME_VER}/lame-${MP3LAME_VER}.tar.gz + +define(`FFMPEG_CONFIG_MP3LAME',--enable-libmp3lame )dnl +RUN wget -O - ${MP3LAME_REPO} | tar xz; \ + cd lame-${MP3LAME_VER}; \ + ./configure --prefix="/usr" --libdir=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE') --enable-nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install diff --git a/template/libogg.m4 b/template/libogg.m4 new file mode 100644 index 000000000..ec4acf28b --- /dev/null +++ b/template/libogg.m4 @@ -0,0 +1,10 @@ +# Build ogg +ARG OGG_VER=1.3.3 +ARG OGG_REPO=https://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz + +RUN wget -O - ${OGG_REPO} | tar xJ; \ + cd libogg-${OGG_VER}; \ + ./configure --prefix="/usr" --libdir=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE'); \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install diff --git a/template/libopus.m4 b/template/libopus.m4 new file mode 100644 index 000000000..a1eff969d --- /dev/null +++ b/template/libopus.m4 @@ -0,0 +1,11 @@ +# Build opus +ARG OPUS_VER=1.2.1 +ARG OPUS_REPO=https://archive.mozilla.org/pub/opus/opus-${OPUS_VER}.tar.gz + +define(`FFMPEG_CONFIG_OPUS',--enable-libopus )dnl +RUN wget -O - ${OPUS_REPO} | tar xz; \ + cd opus-${OPUS_VER}; \ + ./configure --prefix="/usr" --libdir=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE'); \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install diff --git a/template/libva.m4 b/template/libva.m4 new file mode 100644 index 000000000..cc6e306b5 --- /dev/null +++ b/template/libva.m4 @@ -0,0 +1,18 @@ +# Build libva +ARG LIBVA_VER=2.3.0 +ARG LIBVA_REPO=https://github.com/intel/libva/archive/${LIBVA_VER}.tar.gz + +ifelse(index(DOCKER_IMAGE,ubuntu),-1,,dnl +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libx11-dev xorg-dev libgl1-mesa-dev +)dnl +ifelse(index(DOCKER_IMAGE,centos),-1,,dnl +RUN yum install -y -q libX11-devel mesa-libGL-devel +)dnl + +RUN wget -O - ${LIBVA_REPO} | tar xz; \ + cd libva-${LIBVA_VER}; \ + ./autogen.sh --prefix=/usr --libdir=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu); \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install; + diff --git a/template/libvorbis.m4 b/template/libvorbis.m4 new file mode 100644 index 000000000..9de9a85b9 --- /dev/null +++ b/template/libvorbis.m4 @@ -0,0 +1,11 @@ +# Build vorbis +ARG VORBIS_VER=1.3.6 +ARG VORBIS_REPO=https://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz + +define(`FFMPEG_CONFIG_VORBIS',--enable-libvorbis )dnl +RUN wget -O - ${VORBIS_REPO} | tar xJ; \ + cd libvorbis-${VORBIS_VER}; \ + ./configure --prefix="/usr" --libdir=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE'); \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install diff --git a/template/libvpx.m4 b/template/libvpx.m4 new file mode 100644 index 000000000..e0bc1b96c --- /dev/null +++ b/template/libvpx.m4 @@ -0,0 +1,13 @@ +# Build vpx +ARG VPX_VER=tags/v1.7.0 +ARG VPX_REPO=https://chromium.googlesource.com/webm/libvpx.git + +define(`FFMPEG_CONFIG_VPX',--enable-libvpx )dnl +RUN git clone ${VPX_REPO}; \ + cd libvpx; \ + git checkout ${VPX_VER}; \ + ./configure --prefix="/usr" --libdir=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE') --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + diff --git a/template/libx264.m4 b/template/libx264.m4 new file mode 100644 index 000000000..b140d92ef --- /dev/null +++ b/template/libx264.m4 @@ -0,0 +1,13 @@ +# Build x264 +ARG X264_VER=stable +ARG X264_REPO=https://github.com/mirror/x264 + +define(`FFMPEG_CONFIG_X264',--enable-libx264 )dnl +RUN git clone ${X264_REPO}; \ + cd x264; \ + git checkout ${X264_VER}; \ + ./configure --prefix="/usr" --libdir=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu) --enable-defn(`BUILD_LINKAGE'); \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + diff --git a/template/libx265.m4 b/template/libx265.m4 new file mode 100644 index 000000000..41dcee235 --- /dev/null +++ b/template/libx265.m4 @@ -0,0 +1,18 @@ +# Build x265 +ARG X265_VER=2.9 +ARG X265_REPO=https://github.com/videolan/x265/archive/${X265_VER}.tar.gz + +ifelse(index(DOCKER_IMAGE,ubuntu),-1,, +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libnuma-dev +)dnl +ifelse(index(DOCKER_IMAGE,centos),-1,, +RUN yum install -y -q numactl-devel +)dnl + +define(`FFMPEG_CONFIG_X265',--enable-libx265 )dnl +RUN wget -O - ${X265_REPO} | tar xz && mv x265-${X265_VER} x265; \ + cd x265/build/linux; \ + cmake -DBUILD_SHARED_LIBS=ifelse(BUILD_LINKAGE,shared,ON,OFF) -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu) ../../source; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install diff --git a/template/media-driver.m4 b/template/media-driver.m4 new file mode 100644 index 000000000..058ced7a1 --- /dev/null +++ b/template/media-driver.m4 @@ -0,0 +1,23 @@ +# Build media driver +ARG MEDIA_DRIVER_VER=intel-media-16.9.1 +ARG MEDIA_DRIVER_REPO=https://github.com/VCDP/media-driver/archive/${MEDIA_DRIVER_VER}.tar.gz + +ifelse(index(DOCKER_IMAGE,ubuntu),-1,,dnl +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libdrm-dev libpciaccess-dev libx11-dev xorg-dev libgl1-mesa-dev +)dnl +ifelse(index(DOCKER_IMAGE,centos),-1,,dnl +RUN yum install -y -q libX11-devel mesa-libGL-devel +)dnl + +RUN wget -O - ${MEDIA_DRIVER_REPO} | tar xz && mv media-driver-${MEDIA_DRIVER_VER} media-driver; \ + mkdir -p media-driver/build; \ + cd media-driver/build; \ + cmake -DBUILD_TYPE=release -DBUILD_ALONG_WITH_CMRTLIB=1 -DMEDIA_VERSION="2.0.0" -DBS_DIR_GMMLIB=/home/gmmlib/Source/GmmLib -DBS_DIR_COMMON=/home/gmmlib/Source/Common -DBS_DIR_INC=/home/gmmlib/Source/inc -DBS_DIR_MEDIA=/home/media-driver -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install + +define(`INSTALL_MEDIA_DRIVER',dnl +ENV LIBVA_DRIVERS_PATH=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu)/dri +ENV LIBVA_DRIVER_NAME=iHD +)dnl diff --git a/template/media-sdk.m4 b/template/media-sdk.m4 new file mode 100644 index 000000000..7ceb41c4b --- /dev/null +++ b/template/media-sdk.m4 @@ -0,0 +1,15 @@ +# Build Intel(R) Media SDK +ARG MSDK_VER=MSS-2018-R2.1 +ARG MSDK_REPO=https://github.com/Intel-Media-SDK/MediaSDK/archive/${MSDK_VER}.tar.gz + +RUN wget -O - ${MSDK_REPO} | tar xz && mv MediaSDK-${MSDK_VER} MediaSDK; \ + mkdir -p MediaSDK/build; \ + cd MediaSDK/build; \ + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_INCLUDEDIR=include/mfx -DBUILD_SAMPLES=OFF -DENABLE_OPENCL=OFF -Wno-dev ..; \ + make -j8; \ + make install DESTDIR=/home/build; \ +ifelse(index(DOCKER_IMAGE,-dev),-1,dnl + rm -rf /home/build/usr/samples; \ + rm -rf /home/build/usr/plugins; \ +)dnl + make install; diff --git a/template/nasm.m4 b/template/nasm.m4 new file mode 100644 index 000000000..f24fccebd --- /dev/null +++ b/template/nasm.m4 @@ -0,0 +1,9 @@ +# Build NASM +ARG NASM_VER=2.13.03 +ARG NASM_REPO=https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VER}/nasm-${NASM_VER}.tar.bz2 +RUN wget -O - ${NASM_REPO} | tar xj; \ + cd nasm-${NASM_VER}; \ + ./autogen.sh; \ + ./configure --prefix="/usr" --libdir=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu); \ + make -j8; \ + make install diff --git a/template/nginx-conf.m4 b/template/nginx-conf.m4 new file mode 100644 index 000000000..f3892a11a --- /dev/null +++ b/template/nginx-conf.m4 @@ -0,0 +1,93 @@ + +worker_processes 5; +worker_rlimit_nofile 8192; +daemon off; + +events { + worker_connections 4096; +} + +rtmp { + server { + listen 1935; + chunk_size 4000; + + application stream { + live on; + } + + application hls { + live on; + hls on; + hls_path /var/www/hls; + hls_nested on; + hls_fragment 3; + hls_playlist_length 60; + } + + application dash { + live on; + dash on; + dash_path /var/www/dash; + dash_fragment 3; + dash_playlist_length 60; + dash_nested on; + } + } +} + +http { + include mime.types; + default_type application/octet-stream; + + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + aio on; + proxy_cache_path /var/www/cache levels=1:2 keys_zone=one:10m use_temp_path=off; + + server { + listen 80; + + # proxy cache settings + proxy_cache one; + proxy_no_cache $http_pragma $http_authorization; + proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; + proxy_cache_valid 200 302 10m; + proxy_cache_valid 303 1m; + + location / { + root /var/www/html; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + } + + location /hls { + alias /var/www/hls; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + } + + location /dash { + alias /var/www/dash; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length'; + types { + application/dash+xml mpd; + } + } + + location /stat { + rtmp_stat all; + rtmp_stat_stylesheet stat.xsl; + } + } +} diff --git a/template/nginx-qat.m4 b/template/nginx-qat.m4 new file mode 100644 index 000000000..b99056444 --- /dev/null +++ b/template/nginx-qat.m4 @@ -0,0 +1,32 @@ +# Build NGINX Asynchronous Mode +ARG NGINX_QAT_VER=v0.3.6 +ARG NGINX_QAT_REPO=https://github.com/intel/asynch_mode_nginx/archive/${NGINX_QAT_VER}.tar.gz + +ifelse(index(DOCKER_IMAGE,ubuntu),-1,,dnl +RUN apt-get update && apt-get install -y -q --no-install-recommends libssl-dev libpcre3-dev zlib1g-dev libxslt1-dev +)ifelse(index(DOCKER_IMAGE,centos),-1,,dnl +RUN yum install -y -q openssl-devel pcre2-devel zlib-devel libxslt-devel +)dnl + +RUN wget -O - ${NGINX_QAT_REPO} | tar xz && mv async_mode_nginx-${NGINX_QAT_VER} asynch_mode_nginx; \ + cd asynch_mode_nginx; \ + ./configure --add-dynamic-module=modules/nginx_qatzip_module --add-dynamic-module=modules/nginx_qat_module --with-cc-opt="-DNGX_SECURE_MEM -I/opt/openssl/include -Wno-error=deprecated-declarations" --with-ld-opt="-L/opt/openssl/lib -L/opt/qat/lib -lqatzip -lz" --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu)/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=ifelse(index(DOCKER_IMAGE,ubuntu),-1,nobody,www-data) --group=ifelse(index(DOCKER_IMAGE,ubuntu),-1,nobody,www-data) --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-pcre defn(`NGINX_RTMP_MODULE'); \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY *.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; + +define(`INSTALL_PKGS_NGINX',ifelse(index(DOCKER_IMAGE,ubuntu),-1,openssl-libs pcre2 zlib libxslt ,libxml2 libssl1.0.0 libpcre3 zlib1g libxslt1.1 ))dnl +define(`INSTALL_NGINX',dnl +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 +EXPOSE 443 +)dnl diff --git a/template/nginx-rtmp.m4 b/template/nginx-rtmp.m4 new file mode 100644 index 000000000..4fb97ffe7 --- /dev/null +++ b/template/nginx-rtmp.m4 @@ -0,0 +1,14 @@ +# Build nginx-rtmp +ARG NGINX_RTMP_VER=v1.2.1 +ARG NGINX_RTMP_REPO=https://github.com/arut/nginx-rtmp-module/archive/${NGINX_RTMP_VER}.tar.gz +ARG NGINX_RTMP_PATCH_REPO=https://raw.githubusercontent.com/VCDP/CDN/master/Add-hevc-support-for-rtmp-dash-and-hls.patch +ARG NGINX_RTMP_STAT_REPO=https://raw.githubusercontent.com/arut/nginx-rtmp-module/${NGINX_RTMP_VER}/stat.xsl + +define(`NGINX_RTMP_MODULE',--add-module=../nginx-rtmp-module )dnl +RUN wget -O - ${NGINX_RTMP_REPO} | tar xz && mv nginx-rtmp-module-${NGINX_RTMP_VER#v} nginx-rtmp-module +# cd nginx-rtmp-module; +# wget -O - ${NGINX_RTMP_PATCH_REPO} | patch -p1; + +RUN mkdir -p /home/build/var/www/html; \ + wget -O /home/build/var/www/html/stat.xsl ${NGINX_RTMP_STAT_REPO}; + diff --git a/template/nginx.m4 b/template/nginx.m4 new file mode 100644 index 000000000..375f8b562 --- /dev/null +++ b/template/nginx.m4 @@ -0,0 +1,33 @@ +# Build nginx & nginx-rtmp +ARG NGINX_VER=1.14.2 +ARG NGINX_REPO=https://nginx.org/download/nginx-${NGINX_VER}.tar.gz + +ifelse(index(DOCKER_IMAGE,ubuntu),-1,,dnl +RUN apt-get update && apt-get install -y -q --no-install-recommends libssl-dev libpcre3-dev zlib1g-dev libxslt1-dev +)ifelse(index(DOCKER_IMAGE,centos),-1,,dnl +RUN yum install -y -q openssl-devel pcre2-devel zlib-devel libxslt-devel +)dnl + +RUN wget -O - ${NGINX_REPO} | tar xz; \ + cd nginx-${NGINX_VER}; \ + ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --modules-path=/usr/ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu)/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/www/log/error.log --pid-path=/var/www/nginx.pid --lock-path=/var/www/nginx.lock --http-log-path=/var/www/log/access.log --http-client-body-temp-path=/var/www/tmp/client_body --http-proxy-temp-path=/var/www/tmp/proxy --http-fastcgi-temp-path=/var/www/tmp/fastcgi --http-uwsgi-temp-path=/var/www/tmp/uwsgi --http-scgi-temp-path=/var/www/tmp/scgi --user=ifelse(index(DOCKER_IMAGE,ubuntu),-1,nobody,www-data) --group=ifelse(index(DOCKER_IMAGE,ubuntu),-1,nobody,www-data) --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre defn(`NGINX_RTMP_MODULE'); \ + make -j8; \ + make install DESTDIR=/home/build; + +# NGINX Setup +COPY nginx.conf /home/build/etc/nginx +RUN mkdir -p /home/build/var/www/tmp/client_body; \ + mkdir -p /home/build/var/www/tmp/proxy; \ + mkdir -p /home/build/var/www/tmp/fastcgi; \ + mkdir -p /home/build/var/www/tmp/uwsgi; \ + mkdir -p /home/build/var/www/tmp/scgi; \ + mkdir -p /home/build/var/www/cache; \ + mkdir -p /home/build/var/www/html; \ + touch /home/build/var/www/html/index.html; + +define(`INSTALL_PKGS_NGINX',ifelse(index(DOCKER_IMAGE,ubuntu),-1,openssl-libs pcre2 zlib libxslt libxml2 ,libxml2 libssl1.0.0 libpcre3 zlib1g libxslt1.1 ))dnl +define(`INSTALL_NGINX',dnl +CMD /usr/sbin/nginx +VOLUME /etc/nginx /var/www/html /var/www/tmp/client_body /var/www/tmp/proxy /var/www/tmp/fastcgi /var/www/tmp/uwsgi /var/www/tmp/scgi /var/www/cache /var/www/dash /var/www/hls +EXPOSE 80 1935 +)dnl diff --git a/template/qat-driver.m4 b/template/qat-driver.m4 new file mode 100644 index 000000000..38f9739c8 --- /dev/null +++ b/template/qat-driver.m4 @@ -0,0 +1,29 @@ +# Build Linux kernel +ARG QAT_KERNEL_SOURCE_REPO=https://cdn.kernel.org/pub/linux/kernel + +ifelse(index(DOCKER_IMAGE,ubuntu),-1,,dnl +RUN apt-get update && apt-get install -y -q --no-install-recommends libelf-dev bc libssl-dev libudev-dev +)ifelse(index(DOCKER_IMAGE,centos),-1,,dnl +RUN yum install -y -q elf-devel bc openssl-dev udev-devel +)dnl + +RUN kernel_version=$(cat /proc/version | cut -f3 -d' '); \ + wget -O - ${QAT_KERNEL_SOURCE_REPO}/v${kernel_version%%.*}.x/linux-${kernel_version}.tar.xz | tar xJ; \ + cd linux-${kernel_version}; \ + make olddefconfig; \ + sed -i 's/.* CONFIG_CRYPTO_SHA512 .*/CONFIG_CRYPTO_SHA512=y/' .config; \ + sed -i 's/.* CONFIG_UIO .*/CONFIG_UIO=y/' .config; \ + yes "" | make -j8; \ + yes "" | make -j8 modules; + +# Build the QAT Driver +ARG QAT_DRIVER_VER=1.7.l.4.3.0-00033 +ARG QAT_DRIVER_REPO=https://01.org/sites/default/files/downloads/intelr-quickassist-technology/qat${QAT_DRIVER_VER}.tar.gz + +RUN kernel_version=$(cat /proc/version | cut -f3 -d' '); \ + mkdir qat-driver; \ + cd qat-driver; \ + wget -O - ${QAT_DRIVER_REPO} | tar xz; \ + KERNEL_SOURCE_ROOT=/home/linux-${kernel_version} ./configure --prefix=/opt/qat; \ + sed -i 's/rdtscll(timestamp)//' quickassist/utilities/osal/src/linux/kernel_space/OsalServices.c; \ + make -j8; diff --git a/template/qat-engine.m4 b/template/qat-engine.m4 new file mode 100644 index 000000000..63e9ae2a7 --- /dev/null +++ b/template/qat-engine.m4 @@ -0,0 +1,12 @@ +# Build QAT Engine +ARG QAT_ENGINE_VER=v0.5.39 +ARG QAT_ENGINE_REPO=https://github.com/intel/QAT_Engine/archive/${QAT_ENGINE_VER}.tar.gz + +RUN wget -O - ${QAT_ENGINE_REPO} | tar xz && mv QAT_Engine-${QAT_ENGINE_VER} QAT_Engine; \ + cd QAT_Engine; \ + ./autogen.sh; \ + ./configure --with-qat_dir=/home/qat-driver --with-openssl_dir=/home/openssl --with-openssl_install_dir=/opt/openssl --enable-upstream_driver --enable-usdm --prefix=/opt/qat; \ + PERL5LIB=/home/openssl make -j8; \ + PERL5LIB=/home/openssl make install DESTDIR=/home/build; \ + PERL5LIB=/home/openssl make install + diff --git a/template/qat-openssl.m4 b/template/qat-openssl.m4 new file mode 100644 index 000000000..2e4595022 --- /dev/null +++ b/template/qat-openssl.m4 @@ -0,0 +1,15 @@ +# Build OpenSSL for QAT +ARG QAT_OPENSSL_VER=OpenSSL_1_1_1 +ARG QAT_OPENSSL_REPO=https://github.com/openssl/openssl/archive/${QAT_OPENSSL_VER}.tar.gz + +RUN wget -O - ${QAT_OPENSSL_REPO} | tar xz && mv openssl-${QAT_OPENSSL_VER} openssl; \ + cd openssl; \ + ./config --prefix=/opt/openssl --openssldir=/opt/openssl -Wl,-rpath,\${LIBRPATH}; \ + make -j8; \ + make install DESTDIR=/home/build; \ +ifelse(index(DOCKER_IMAGE,-dev),-1,,dnl + rm -rf /home/build/opt/openssl/share/doc; \ + rm -rf /home/build/opt/openssl/share/man; \ +)dnl + make install; + diff --git a/template/qat-zip.m4 b/template/qat-zip.m4 new file mode 100644 index 000000000..8c94e3915 --- /dev/null +++ b/template/qat-zip.m4 @@ -0,0 +1,13 @@ +# Build QATZip +ARG QATZIP_VER=v0.2.7 +ARG QATZIP_REPO=https://github.com/intel/QATzip/archive/${QATZIP_VER}.tar.gz + +RUN wget -O - ${QATZIP_REPO} | tar xz && mv QATzip-${QATZIP_VER} QATzip; \ + cd QATzip; \ + ./configure --with-ICP_ROOT=/home/qat-driver --prefix=/opt/qat; \ + make -j8; \ + mkdir -p /opt/qat/lib; \ + mkdir -p /opt/qat/bin; \ + mkdir -p /opt/qat/include; \ + make install; \ + cp /usr/include/qatzip.h /opt/qat/include; diff --git a/template/svt-hevc.m4 b/template/svt-hevc.m4 new file mode 100644 index 000000000..01bbfef56 --- /dev/null +++ b/template/svt-hevc.m4 @@ -0,0 +1,28 @@ +# Fetch SVT-HEVC +ARG SVT_HEVC_VER=36ea5fa +ARG SVT_HEVC_REPO=https://github.com/intel/SVT-HEVC + +ifelse(index(DOCKER_IMAGE,ubuntu),-1, +RUN yum install -y -q patch centos-release-scl; \ + yum install -y -q devtoolset-7 + +)dnl +RUN git clone ${SVT_HEVC_REPO}; \ + cd SVT-HEVC/Build/linux; \ + git checkout ${SVT_HEVC_VER}; \ + mkdir -p ../../Bin/Release; \ +ifelse(index(DOCKER_IMAGE,centos),-1,,`dnl + ( source /opt/rh/devtoolset-7/enable; \ +')dnl + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=ifelse(index(DOCKER_IMAGE,ubuntu),-1,lib64,lib/x86_64-linux-gnu) -DCMAKE_ASM_NASM_COMPILER=yasm ../..; \ + make -j8; \ + make install DESTDIR=/home/build; \ + make install ifelse(index(DOCKER_IMAGE,centos),-1,,`)') + +define(`FFMPEG_SOURCE_SVT_HEVC',dnl +# Patch FFmpeg source for SVT-HEVC +RUN cd /home/FFmpeg; \ + patch -p1 < ../SVT-HEVC/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch; + +)dnl +define(`FFMPEG_CONFIG_SVT_HEVC',--enable-libsvthevc )dnl diff --git a/template/transform360.m4 b/template/transform360.m4 new file mode 100644 index 000000000..0f6b467c6 --- /dev/null +++ b/template/transform360.m4 @@ -0,0 +1,38 @@ +# Fetch transform360 +ARG TRANSFORM360_VER=280ccf7 +ARG TRANSFORM360_REPO=https://github.com/facebook/transform360 + +ifelse(index(DOCKER_IMAGE,ubuntu1604),-1,, +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libopencv-dev +)dnl +ifelse(index(DOCKER_IMAGE,ubuntu1804),-1,, +RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime; \ + DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -q --no-install-recommends libopencv-dev +)dnl +ifelse(index(DOCKER_IMAGE,centos),-1,, +RUN yum install -y -q opencv-devel +)dnl +RUN git clone ${TRANSFORM360_REPO}; \ + cd transform360/Transform360; \ + git checkout ${TRANSFORM360_VER}; \ + sed -i "s/STATIC//" CMakeLists.txt; \ + sed -i "s/DESTINATION lib/DESTINATION \${LIB_INSTALL_DIR}/g" CMakeLists.txt; +define(`FFMPEG_SOURCE_TRANSFORM360',dnl +# Build transform360 +RUN cd /home/transform360/Transform360; \ + cmake -DBUILD_SHARED_LIBS=ifelse(BUILD_LINKAGE,shared,ON,OFF) -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu) .; \ + make -j8; \ + make install DESTDIR="/home/build"; \ + make install + +# Patch FFmpeg source for transform360 +RUN cd /home/FFmpeg/libavfilter; \ + cp /home/transform360/Transform360/vf_transform360.c .; \ + sed -i "s/transform360\/VideoFrameTransformHandler.h/Transform360\/Library\/VideoFrameTransformHandler.h/" vf_transform360.c; \ + sed -i "s/transform360\/VideoFrameTransformHelper.h/Transform360\/Library\/VideoFrameTransformHelper.h/" vf_transform360.c; \ + sed -i "s/.*multimedia filters.*/extern AVFilter ff_vf_transform360;/" allfilters.c; \ + sed -i "s/.*video filters.*/OBJS-\$(CONFIG_TRANSFORM360_FILTER) += vf_transform360.o/" Makefile; + +)dnl +define(`FFMPEG_CONFIG_TRANSFORM360',--extra-libs="-lTransform360 -lstdc++ ifelse(BUILD_LINKAGE,static,$(pkg-config --libs opencv))" )dnl +define(`INSTALL_PKGS_TRANSFORM360',ifelse(index(DOCKER_IMAGE,ubuntu1604),-1,ifelse(index(DOCKER_IMAGE,ubuntu1804),-1,opencv glib2 ,libopencv-imgproc3.2 ),libopencv-imgproc2.4v5 ))dnl diff --git a/template/yasm.m4 b/template/yasm.m4 new file mode 100644 index 000000000..19c57e8b5 --- /dev/null +++ b/template/yasm.m4 @@ -0,0 +1,9 @@ +# Build YASM +ARG YASM_VER=1.3.0 +ARG YASM_REPO=https://www.tortall.net/projects/yasm/releases/yasm-${YASM_VER}.tar.gz +RUN wget -O - ${YASM_REPO} | tar xz; \ + cd yasm-${YASM_VER}; \ + sed -i "s/) ytasm.*/)/" Makefile.in; \ + ./configure --prefix="/usr" --libdir=ifelse(index(DOCKER_IMAGE,ubuntu),-1,/usr/lib64,/usr/lib/x86_64-linux-gnu); \ + make -j8; \ + make install diff --git a/test/ffmpeg_1dns.sh b/test/ffmpeg_1dns.sh new file mode 100755 index 000000000..f55bbc080 --- /dev/null +++ b/test/ffmpeg_1dns.sh @@ -0,0 +1,5 @@ +#!/bin/bash -e + +dd if=/dev/urandom bs=115200 count=100 of=test.yuv # 3 second video +ffmpeg -f rawvideo -vcodec rawvideo -s 320x240 -r 30 -pix_fmt yuv420p -i test.yuv -c:v libx264 -y test.mp4 +ffmpeg -i test.mp4 -vf "scale=1280:720" -pix_fmt nv12 -f null /dev/null -vf "scale=720:480" -pix_fmt nv12 -f null /dev/null diff --git a/test/ffmpeg_flv_hevc.sh b/test/ffmpeg_flv_hevc.sh new file mode 100755 index 000000000..7a4eba5f1 --- /dev/null +++ b/test/ffmpeg_flv_hevc.sh @@ -0,0 +1,4 @@ +#!/bin/bash -e + +dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video +ffmpeg -f rawvideo -vcodec rawvideo -s 320x240 -r 30 -pix_fmt yuv420p -i test.yuv -c:v libsvt_hevc -f flv -y test.flv diff --git a/test/ffmpeg_qsv.sh b/test/ffmpeg_qsv.sh new file mode 100755 index 000000000..a3fdd9689 --- /dev/null +++ b/test/ffmpeg_qsv.sh @@ -0,0 +1,12 @@ +#!/bin/bash -e + +case "$1" in + xeon_*) + echo "Skipped for a CPU only platform" + ;; + *) + dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video + ffmpeg -y -init_hw_device qsv=hw -filter_hw_device hw -f rawvideo -pix_fmt yuv420p -s:v 320x240 -i test.yuv -vf hwupload=extra_hw_frames=64,format=qsv -c:v h264_qsv -b:v 5M test.mp4 + ffmpeg -hwaccel qsv -c:v h264_qsv -i test.mp4 -f null /dev/null + ;; +esac diff --git a/test/ffmpeg_svt_hevc.sh b/test/ffmpeg_svt_hevc.sh new file mode 100755 index 000000000..5a6f4e7d9 --- /dev/null +++ b/test/ffmpeg_svt_hevc.sh @@ -0,0 +1,4 @@ +#!/bin/bash -e + +dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video +ffmpeg -f rawvideo -vcodec rawvideo -s 320x240 -r 30 -pix_fmt yuv420p -i test.yuv -c:v libsvt_hevc -y test.mp4 diff --git a/test/ffmpeg_vaapi.sh b/test/ffmpeg_vaapi.sh new file mode 100755 index 000000000..c4e8a2c74 --- /dev/null +++ b/test/ffmpeg_vaapi.sh @@ -0,0 +1,12 @@ +#!/bin/bash -ve + +case "$1" in + xeon_*) + echo "Skipped for a CPU only platform" + ;; + *) + dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video + ffmpeg -y -vaapi_device /dev/dri/renderD128 -f rawvideo -video_size 320x240 -r 30 -i test.yuv -vf 'format=nv12, hwupload' -c:v h264_vaapi -y test.mp4 + ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -i test.mp4 -f null /dev/null + ;; +esac diff --git a/test/ffmpeg_vpx.sh b/test/ffmpeg_vpx.sh new file mode 100755 index 000000000..6f6ff2fdb --- /dev/null +++ b/test/ffmpeg_vpx.sh @@ -0,0 +1,5 @@ +#!/bin/bash -e + +dd if=/dev/urandom bs=115200 count=30 of=test.yuv # 1 second video +ffmpeg -f rawvideo -vcodec rawvideo -s 320x240 -r 30 -pix_fmt yuv420p -i test.yuv -c:v libvpx-vp9 -y test.webm +ffmpeg -i test.webm -vcodec libvpx-vp9 -f null /dev/null diff --git a/test/ffmpeg_x264.sh b/test/ffmpeg_x264.sh new file mode 100755 index 000000000..2bb89f3ae --- /dev/null +++ b/test/ffmpeg_x264.sh @@ -0,0 +1,5 @@ +#!/bin/bash -e + +dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video +ffmpeg -f rawvideo -vcodec rawvideo -s 320x240 -r 30 -pix_fmt yuv420p -i test.yuv -c:v libx264 -y test.mp4 +ffmpeg -i test.mp4 -vcodec libx264 -f null /dev/null diff --git a/test/ffmpeg_x265.sh b/test/ffmpeg_x265.sh new file mode 100755 index 000000000..10a4a59a6 --- /dev/null +++ b/test/ffmpeg_x265.sh @@ -0,0 +1,5 @@ +#!/bin/bash -e + +dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video +ffmpeg -f rawvideo -vcodec rawvideo -s 320x240 -r 30 -pix_fmt yuv420p -i test.yuv -c:v libx265 -y test.mp4 +ffmpeg -i test.mp4 -vcodec libx265 -f null /dev/null diff --git a/test/gst_fdkaac.sh b/test/gst_fdkaac.sh new file mode 100755 index 000000000..e2d12f5bb --- /dev/null +++ b/test/gst_fdkaac.sh @@ -0,0 +1,4 @@ +#!/bin/bash -e + +dd if=/dev/urandom bs=115200 count=300 of=test.pcm +gst-launch-1.0 filesrc location=test.pcm ! audio/x-raw,format=S16LE,channels=1,rate=8000 ! fdkaacenc ! filesink location=test.wav diff --git a/test/gst_lamemp3.sh b/test/gst_lamemp3.sh new file mode 100755 index 000000000..b75b11fd9 --- /dev/null +++ b/test/gst_lamemp3.sh @@ -0,0 +1,4 @@ +#!/bin/bash -e + +dd if=/dev/urandom bs=115200 count=300 of=test.pcm +gst-launch-1.0 filesrc location=test.pcm ! audio/x-raw,format=S16LE,channels=1,rate=8000 ! lamemp3enc ! filesink location=test.wav diff --git a/test/gst_opus.sh b/test/gst_opus.sh new file mode 100755 index 000000000..4018cc138 --- /dev/null +++ b/test/gst_opus.sh @@ -0,0 +1,4 @@ +#!/bin/bash -e + +dd if=/dev/urandom bs=115200 count=300 of=test.pcm +gst-launch-1.0 filesrc location=test.pcm ! audio/x-raw,format=S16LE,channels=1,rate=8000 ! opusenc ! filesink location=test.wav diff --git a/test/gst_vaapi.sh b/test/gst_vaapi.sh new file mode 100755 index 000000000..889688b83 --- /dev/null +++ b/test/gst_vaapi.sh @@ -0,0 +1,11 @@ +#!/bin/bash -e + +case "$1" in + xeon_*) + echo "Skipped for a CPU only platform" + ;; + *) + dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video + gst-launch-1.0 -v filesrc location=test.yuv ! videoparse format=i420 width=320 height=240 framerate=30 ! vaapih264enc ! mpegtsmux ! filesink location=test.ts + ;; +esac diff --git a/test/gst_vorbis.sh b/test/gst_vorbis.sh new file mode 100755 index 000000000..308b932d9 --- /dev/null +++ b/test/gst_vorbis.sh @@ -0,0 +1,4 @@ +#!/bin/bash -e + +dd if=/dev/urandom bs=115200 count=300 of=test.pcm +gst-launch-1.0 filesrc location=test.pcm ! audio/x-raw,format=S16LE,channels=1,rate=8000 ! audioconvert ! vorbisenc ! oggmux ! filesink location=test.ogg diff --git a/test/gst_x264.sh b/test/gst_x264.sh new file mode 100755 index 000000000..2562be3c6 --- /dev/null +++ b/test/gst_x264.sh @@ -0,0 +1,5 @@ +#!/bin/bash -e + +dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video +gst-launch-1.0 -v filesrc location=test.yuv ! videoparse format=i420 width=320 height=240 framerate=30 ! x264enc ! mpegtsmux ! filesink location=test.ts +gst-launch-1.0 -v filesrc location=test.ts ! decodebin ! filesink location=test.xx diff --git a/test/gst_x265.sh b/test/gst_x265.sh new file mode 100755 index 000000000..573fe8b6c --- /dev/null +++ b/test/gst_x265.sh @@ -0,0 +1,5 @@ +#!/bin/bash -e + +dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video +gst-launch-1.0 -v filesrc location=test.yuv ! videoparse format=i420 width=320 height=240 framerate=30 ! x265enc ! mpegtsmux ! filesink location=test.ts +gst-launch-1.0 -v filesrc location=test.ts ! decodebin ! filesink location=test.xx diff --git a/test/nginx_dash.sh b/test/nginx_dash.sh new file mode 100755 index 000000000..fa0c24c87 --- /dev/null +++ b/test/nginx_dash.sh @@ -0,0 +1,14 @@ +#!/bin/bash -ve + +nginx & + +case "$1" in + *ubuntu*) + apt-get update && apt-get install -y -q --no-install-recommends curl;; + *centos*) + yum install -y -q curl;; +esac + +dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video +ffmpeg -re -f rawvideo -vcodec rawvideo -s 320x240 -r 30 -pix_fmt yuv420p -i test.yuv -c:v libx264 -f flv rtmp://localhost/dash/test +curl -sSf http://127.0.0.1/dash/test/index.mpd diff --git a/test/nginx_dash_hevc.sh b/test/nginx_dash_hevc.sh new file mode 100755 index 000000000..a4b2392df --- /dev/null +++ b/test/nginx_dash_hevc.sh @@ -0,0 +1,14 @@ +#!/bin/bash -ve + +nginx & + +case "$1" in + *ubuntu*) + apt-get update && apt-get install -y -q --no-install-recommends curl;; + *centos*) + yum install -y -q curl;; +esac + +dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video +#ffmpeg -re -f rawvideo -vcodec rawvideo -s 320x240 -r 30 -pix_fmt yuv420p -i test.yuv -c:v libsvt_hevc -f flv rtmp://localhost/dash/test +#curl -sSf http://127.0.0.1/dash/test/index.mpd diff --git a/test/nginx_hls.sh b/test/nginx_hls.sh new file mode 100755 index 000000000..215c79ed0 --- /dev/null +++ b/test/nginx_hls.sh @@ -0,0 +1,14 @@ +#!/bin/bash -ve + +nginx & + +case "$1" in + *ubuntu*) + apt-get update && apt-get install -y -q --no-install-recommends curl;; + *centos*) + yum install -y -q curl;; +esac + +dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video +ffmpeg -re -f rawvideo -vcodec rawvideo -s 320x240 -r 30 -pix_fmt yuv420p -i test.yuv -c:v libx264 -f flv rtmp://localhost/hls/test +curl -sSf http://127.0.0.1/hls/test/index.m3u8 diff --git a/test/nginx_hls_hevc.sh b/test/nginx_hls_hevc.sh new file mode 100755 index 000000000..b700abe02 --- /dev/null +++ b/test/nginx_hls_hevc.sh @@ -0,0 +1,14 @@ +#!/bin/bash -ve + +nginx & + +case "$1" in + *ubuntu*) + apt-get update && apt-get install -y -q --no-install-recommends curl;; + *centos*) + yum install -y -q curl;; +esac + +dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video +#ffmpeg -re -f rawvideo -vcodec rawvideo -s 320x240 -r 30 -pix_fmt yuv420p -i test.yuv -c:v libsvt_hevc -f flv rtmp://localhost/hls/test +#curl -sSf http://127.0.0.1/hls/test/index.m3u8 diff --git a/test/nginx_html.sh b/test/nginx_html.sh new file mode 100755 index 000000000..adc3e6a91 --- /dev/null +++ b/test/nginx_html.sh @@ -0,0 +1,12 @@ +#!/bin/bash -e + +nginx & + +case "$1" in + *ubuntu*) + apt-get update && apt-get install -y -q --no-install-recommends curl;; + *centos*) + yum install -y -q curl;; +esac + +curl -sSf http://127.0.0.1 diff --git a/test/nginx_rtmp.sh b/test/nginx_rtmp.sh new file mode 100755 index 000000000..c5a8e9beb --- /dev/null +++ b/test/nginx_rtmp.sh @@ -0,0 +1,17 @@ +#!/bin/bash -ve + +nginx & + +case "$1" in + *ubuntu*) + apt-get update && apt-get install -y -q --no-install-recommends curl;; + *centos*) + yum install -y -q curl;; +esac + +curl -sSf http://127.0.0.1/stat +dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video +ffmpeg -i rtmp://127.0.0.1/stream/test -vcodec copy -acodec copy -f flv test.flv < /dev/null & +ffmpeg -f rawvideo -vcodec rawvideo -s 320x240 -r 30 -pix_fmt yuv420p -i test.yuv -c:v libx264 -f flv rtmp://127.0.0.1/stream/test +if test -f test.flv; then exit 0; else exit -1; fi + diff --git a/test/nginx_rtmp_hevc.sh b/test/nginx_rtmp_hevc.sh new file mode 100755 index 000000000..50aaa566e --- /dev/null +++ b/test/nginx_rtmp_hevc.sh @@ -0,0 +1,17 @@ +#!/bin/bash -ve + +nginx & + +case "$1" in + *ubuntu*) + apt-get update && apt-get install -y -q --no-install-recommends curl;; + *centos*) + yum install -y -q curl;; +esac + +curl -sSf http://127.0.0.1/stat +dd if=/dev/urandom bs=115200 count=300 of=test.yuv # 10 seconds video +#ffmpeg -i rtmp://127.0.0.1/stream/test -vcodec copy -acodec copy -f flv test.flv < /dev/null & +#ffmpeg -re -f rawvideo -vcodec rawvideo -s 320x240 -r 30 -pix_fmt yuv420p -i test.yuv -c:v libsvt_hevc -f flv rtmp://127.0.0.1/stream/test +#sleep 1 +#if test -f test.flv; then exit 0; else exit -1; fi