OS image contents
The rest of the buildfile lists the OS image contents; that is, all executables, shared libraries, and data files included in the OS image.
The rest of the buildfilein Building Embedded Systems.
[data=c] attribute setting, which is placed on its own line so
it applies to all subsequent files. This setting ensures that the data segment of an executable is copied when it's invoked:
# Executables
[data=c]
In the remainder of this topic, we mention the different types of OS image content and provide the lines that add the
necessary files.
Support for common multimedia operations
- the essential services of pps and calibration of mtouch, which manages touch functionality
- all libraries and binaries needed to support the Android Auto application
- the libcurl.so library, which enables playback over HTTP
###########################################################################
## PPS & other
###########################################################################
pps
/lib/libmtouch-calib.so.1=libmtouch-calib.so.1
###########################################################################
## AndroidAuto support
###########################################################################
/usr/lib/libprotobuf-lite.so.1=libprotobuf-lite.so.1
[type=link] /usr/lib/libprotobuf-lite.so=/usr/lib/libprotobuf-lite.so.1
/usr/lib/libaoa.so.1=libaoa.so.1
[type=link] /usr/lib/libaoa.so=/usr/lib/libaoa.so.1
/usr/lib/libautoreceiver_qnx.so.1=libautoreceiver_qnx.so.1
[type=link] /usr/lib/libautoreceiver_qnx.so=/usr/lib/libautoreceiver_qnx.so.1
/usr/bin/androidauto=androidauto
###########################################################################
## curl support
###########################################################################
/usr/lib/libcurl_support.so.1=libcurl_support.so.1
[type=link] /usr/lib/libcurl_support.so=/usr/lib/libcurl_support.so.1
# uncomment to include libcurl
/usr/lib/libcurl.so.2=libcurl.so.2
[type=link] /usr/lib/libcurl.so=/usr/lib/libcurl.so.2
Multimedia framework support
Next, we add the shared objects that support the services used by the multimedia framework (MMF). This framework is used by the OpenMAX AL media engine and the mm-renderer service for playback, but it's not accessed directly by client applications. The shared objects implement codecs, file containers, streamers, media data writers, individual media features, and audio formats.
###########################################################################
## MMF
###########################################################################
# Encode Codec
/lib/dll/mmedia/oc_fdkaac_encoder.so=mmedia/oc_fdkaac_encoder.so
/lib/dll/mmedia/wave_encoder.so=mmedia/wave_encoder.so
# Encode Container
/lib/dll/mmedia/ts_writer.so=mmedia/ts_writer.so
/lib/dll/mmedia/mp4_writer.so=mmedia/mp4_writer.so
/lib/dll/mmedia/rawfile_writer.so=mmedia/rawfile_writer.so
/lib/dll/mmedia/wavfile_writer.so=mmedia/wavfile_writer.so
# Input Support
/lib/dll/mmedia/audio_streamer.so=mmedia/audio_streamer.so
/lib/dll/mmedia/fildes_streamer.so=mmedia/fildes_streamer.so
/lib/dll/mmedia/rtp_reader.so=mmedia/rtp_reader.so
/lib/dll/mmedia/rtsp_reader.so=mmedia/rtsp_reader.so
/lib/librimrtsp.so.1=librimrtsp.so.1
[type=link] /lib/librimrtsp.so=/lib/librimrtsp.so.1
# Output Support
/lib/dll/mmedia/audio_writer.so=mmedia/audio_writer.so
/lib/dll/mmedia/audio_eventer.so=mmedia/audio_eventer.so
/lib/dll/mmedia/rtp_writer.so=mmedia/rtp_writer.so
/lib/librimrtp.so.1=librimrtp.so.1
[type=link] /lib/librimrtp.so=/lib/librimrtp.so.1
/lib/dll/mmedia/screen_writer.so=mmedia/screen_writer.so
# Playback Codec
/lib/dll/mmedia/oc_fdkaac_decoder.so=mmedia/oc_fdkaac_decoder.so
/lib/dll/mmedia/xing_mpega_decoder.so=mmedia/xing_mpega_decoder.so
/lib/dll/mmedia/wav_decoder.so=mmedia/wav_decoder.so
# Playback Container
/lib/dll/mmedia/aac_parser.so=mmedia/aac_parser.so
/lib/dll/mmedia/avi_parser.so=mmedia/avi_parser.so
/lib/dll/mmedia/mkv_parser.so=mmedia/mkv_parser.so
/lib/dll/mmedia/mp2ts_parser.so=mmedia/mp2ts_parser.so
/lib/dll/mmedia/mp4_reader.so=mmedia/mp4_reader.so
/lib/dll/mmedia/mpega_parser.so=mmedia/mpega_parser.so
/lib/dll/mmedia/wav_parser.so=mmedia/wav_parser.so
# FDK AAC support libraries
/usr/lib/libopencore_fdk_aac.so.1=libopencore_fdk_aac.so.1
[type=link] /usr/lib/libopencore_fdk_aac.so=/usr/lib/libopencore_fdk_aac.so.1
# MMF Core
/lib/dll/mmedia/queue_filter.so=mmedia/queue_filter.so
/lib/dll/mmedia/external_clock.so=mmedia/external_clock.so
/lib/dll/mmedia/stream_reader.so=mmedia/stream_reader.so
/lib/dll/mmedia/pcm_converter.so=mmedia/pcm_converter.so
/usr/lib/liblogging.so.1=liblogging.so.1
[type=link] /usr/lib/liblogging.so=/usr/lib/liblogging.so.1
/usr/lib/libmmedia.so.1=libmmedia.so.1
[type=link] /usr/lib/libmmedia.so=/usr/lib/libmmedia.so.1
/usr/lib/libmmfilter.so.1=libmmfilter.so.1
[type=link] /usr/lib/libmmfilter.so=/usr/lib/libmmfilter.so.1
/usr/lib/libmmresarb.so.1=libmmresarb.so.1
[type=link] /usr/lib/libmmresarb.so=libmmresarb.so.1
/lib/librimrtsp.so.1=librimrtsp.so.1
[type=link] /lib/librimrtsp.so=/lib/librimrtsp.so.1
This adds the librimrtsp.so.1 file to the image, at the target path of /lib/librimrtsp.so.1, and creates a link that refers to the numbered library version and has the same name but ending simply in .so.
Media playback support
- the interface library and encoder, decoder, and playback utilities for the OpenMAX AL media engine
- executables for the multimedia streaming server (mm-stream) and its client utility (mm-stream-client), and the libraries implementing all mm-stream plugins
- the libjsoncpp.so library file, which allows the C++ code base of mm-stream to parse JSON configuration files
- all executables and libraries needed to run and use mm-renderer, which are:
- all plugins that read inputs and play and/or record media to outputs
- the mm-renderer executable
- the client, core, and MMF libraries
- the default configuration file (/etc/mm/mm-renderer.conf)
- client-side test utilities based on mm-renderer
- the resarb executable and supporting library file, which are used by MMF to arbitrate access to the encoder/decoder instances and to decode/encode memory
###########################################################################
## OpenMAX AL
###########################################################################
/usr/lib/libOpenMAXAL.so.1=libOpenMAXAL.so.1
[type=link] /usr/lib/libOpenMAXAL.so=/usr/lib/libOpenMAXAL.so.1
###########################################################################
## OpenMAX AL command-line utilities
###########################################################################
/usr/bin/audio-decode=audio-decode
/usr/bin/audio-encode=audio-encode
/usr/bin/video-decode=video-decode
/usr/bin/video-encode=video-encode
/usr/bin/omxalplay=omxalplay
/usr/bin/omxal-showmetadata=omxal-showmetadata
###########################################################################
## mm-stream support.
###########################################################################
/usr/lib/libmmstream.so.1=libmmstream.so.1
[type=link] /usr/lib/libmmstream.so=/usr/lib/libmmstream.so.1
/usr/lib/mm-stream-input-audio.so=mm-stream-input-audio.so
/usr/lib/mm-stream-input-camera.so=mm-stream-input-camera.so
/usr/lib/mm-stream-input-file.so=mm-stream-input-file.so
/usr/lib/mm-stream-input-screen.so=mm-stream-input-screen.so
/usr/lib/mm-stream-output-rtp.so=mm-stream-output-rtp.so
/usr/lib/mm-stream-processor-openmaxal.so=mm-stream-processor-openmaxal.so
/usr/lib/mm-stream-server-rtp.so=mm-stream-server-rtp.so
/usr/lib/mm-stream-server-rtsp.so=mm-stream-server-rtsp.so
/usr/lib/mm-stream-server-rtsp.so=mm-stream-server-rtsp.so
/usr/bin/mm-stream=mm-stream
/usr/bin/mm-stream-client=mm-stream-client
###########################################################################
## libjsoncpp
###########################################################################
/usr/lib/libjsoncpp.so.1.8.4=libjsoncpp.so.1.8.4
[type=link] /usr/lib/libjsoncpp.so.19=/usr/lib/libjsoncpp.so.1.8.4
[type=link] /usr/lib/libjsoncpp.so=/usr/lib/libjsoncpp.so.1.8.4
###########################################################################
## mm-renderer
###########################################################################
/lib/dll/mmr-mmf-routing.so=mmr-mmf-routing.so
/lib/dll/mmr-mmfrip-routing.so=mmr-mmfrip-routing.so
/lib/dll/mmr-track-engine.so=mmr-track-engine.so
/usr/lib/libmmrndclient.so.1=libmmrndclient.so.1
[type=link] /usr/lib/libmmrndclient.so=/usr/lib/libmmrndclient.so.1
/usr/lib/libmmrndcore.so.1=libmmrndcore.so.1
[type=link] /usr/lib/libmmrndcore.so=/usr/lib/libmmrndcore.so.1
/usr/lib/libmmro-mmf.so.1=libmmro-mmf.so.1
[type=link] /usr/lib/libmmro-mmf.so=/usr/lib/libmmro-mmf.so.1
/usr/sbin/mm-renderer=mm-renderer
/etc/mm/mm-renderer.conf=../../etc/mm/mm-renderer.conf
/usr/bin/mmrplay=mmrplay
/usr/bin/mmcli=mmcli
/lib/dll/mmrenderer_cli.so=mmrenderer_cli.so
###########################################################################
## resarb
###########################################################################
/bin/resarb=resarb
/usr/lib/libresarb.so.1=libresarb.so.1
[type=link] /usr/lib/libresarb.so=/usr/lib/libresarb.so.1
Video encoding on specific platforms
For some hardware platforms, this release supports video encoding but not decoding or playback. You can add the necessary video encoder and supporting libraries to your image.
Renesas R-Car V3H Videobox miniPLUS
Adding the section below enables H.264 video encoding on the Renesas R-Car V3H Videobox miniPLUS.
/lib/dll/mmedia/rcarv3_video_encoder.so=rcarv3_video_encoder.so
# NOTE: These are here to work around the fact that the customer gets these libraries
# from Renesas, not QNX Software Center:
libRIVPENCLIB.so
libRIVPENCUDFDRV.so
libRIVPENCUDF.so
Video playback on specific platforms
There are video encoder and decoder libraries, and sometimes other supporting libraries, for enabling playback on various hardware platforms. You can add any of the sections below that apply to your target platforms to your own buildfile.
Intel x86 64-bit
/lib/dll/mmedia/yami_video_decoder.so=yami_video_decoder.so
/lib/dll/mmedia/yami_video_encoder.so=yami_video_encoder.so
/usr/lib/libyami.so.1=libyami.so.1
[type=link] /usr/lib/libyami.so=/usr/lib/libyami.so.1
NXP iMX8QM-MEK
/lib/dll/mmedia/imx8_video_decoder.so=imx8_video_decoder.so
/lib/dll/mmedia/omxil_video_encoder-imx8.so=omxil_video_encoder-imx8.so
/lib/dll/omxil/omxil_comp_imx8_dec.so=omxil_comp_imx8_dec.so
/lib/dll/omxil/omxil_comp_imx8_enc.so=omxil_comp_imx8_enc.so
# NOTE: This here to work around the fact that the customer gets this library
# from NXP, not QNX Software Center:
libvpu-cli-mx8.so.1
# NOTE: These are here to work around the fact that the customer gets this firmware
# from NXP, not QNX Software Center:
/lib/firmware/iMX8/vpu_fw_imx8_dec.bin
/lib/firmware/iMX8/vpu_fw_imx8_enc.bin
# NOTE: These are here to work around the fact that the customer gets these binaries
# from NXP, not QNX Software Center:
export VCU_DEC_FW_PATH=/lib/firmware/iMX8/vpu_fw_imx8_dec.bin
export VCU_ENC_FW_PATH=/lib/firmware/iMX8/vpu_fw_imx8_enc.bin
/usr/sbin/vpu-decoder-mx8=vpu-decoder-mx8
/usr/sbin/vpu-encoder-mx8=vpu-encoder-mx8
