
Signed-off-by: James Ketrenos <james.p.ketrenos@intel.com>
Intel Media FFMPEG Transcode Container
This project hosts a container demonstrating the use of ffmpeg using GPU offload for transcode operations.
Using
Build the container:
docker build . -t intel-media-ffmpeg
Run the container:
docker run \
--rm \
--device=/dev/dri:/dev/dri \
-it \
intel-media-ffmpeg
Developing
The Dockerfile itself is constructed from re-usable snippets, located in the templates/ directory, and can be regenerated by running:
scripts/build-dockerfile
The above script uses environment substitution to stamp version information within the created Dockerfile. The files which declare the environment variables are in SOLUTION and MANIFEST.
After joining the template/* pieces together, the file Dockerfile.solution is then added to the Dockerfile with environment substitution.
SOLUTION
Solution specific definitions:
CONTAINER_IMAGE is used as the container tag name
OS_DISTRO is used as the base OS distribution. Possible values: ubuntu
OS_RELEASE is used as the OS version. Possible values: disco, eoan
MANIFEST
The version of MANIFEST is created by the set of Agama packages from the Agama repository and name-mangling them to be a VERSION declaration:
For example:
libgl1-mesa-glx_19.0.1-agama-109_amd64.deb
is changed to:
LIBGL1_MESA_GLX_VERSION=19.0.1-agama-109
The script you can use to recreate the OS_RELEASE defined in SOLUTION is:
NOTE: This only works on the Ubuntu releases.
AGAMA_VERSION=169
. SOLUTION
echo "AGAMA_VERSION=${AGAMA_VERSION}" > MANIFEST
wget -q -O - \
https://osgc.jf.intel.com/packages/agama/ubuntu/dists/${OS_RELEASE}/main/binary-amd64/Packages.bz2 |
bunzip2 |
sed -nE 's/^(Package|Version): (.*)/\2/p' |
paste -s -d' \n' |
while read package version rest; do
package=$(echo $package | sed -E -e s#-#_#g -e 's#(.*)#\U\1#g')_VERSION
echo $package=$version
done | grep ${AGAMA_VERSION}\$ >> MANIFEST
This allows the Dockerfile templates to then version pin Agama packages:
RUN apt-get install -y libgl1-mesa-glx=$LIBGL1_MESA_GLX_VERSION
The scripts/build-dockerfile
loads MANIFEST, which defines
LIBGL1_MESA_GLX_VERSION. That is then subsituted for the version in
the above Dockerfile snippet when being placed into the main Dockerfile.
Tagging
If the build succeeds, we want to be able to tag the git project as well as corresponding Docker images with the appropriate Agama tag:
. MANIFEST ; git tag -f agama-${AGAMA_VERSION}