NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.
MCSDK VIDEO 2.1 PCIE Demo Guide
MCSDK Video
Version 2.x
PCIe Based Video Demonstration Guide
Last updated: 10/14/2015
Contents
- 1 Introduction
- 2 Build MCSDK Video Host Application to Execute on Linux PC
- 3 Prepare the EVM
- 4 Install and Run Video Demos
- 5 Demo Reconfiguration When needed
- 6 Multi-Channel Support for Concurrent Encoding/Decoding
- 7 Internals to PCIe Based MCSDK Video Demo
- 8 Rebuild DSP when Needed
- 9 Uninstall a Video Demo
- 10 Useful Resources and Links
Introduction[edit]
In MCSDK Video 2.x, multiple video demos are provided to uses PCIe as the data IO to achieve real-time video encoding/decoding on Linux PCs with PCIe multiple core DSP cards installed. This PCIe Based Video Demonstration Guide provides instructions on how to run these video demos using the pre-built DSP image included in the release package. The major steps of running video demos include:
- Build MCSDK Video Host Application to Execute on Linux PC
- Install and Run Video Demos
- Reconfigure Demos when Needed
Hardware Configuration for Display Demo Output[edit]
Real-time display of demo output for AVCIU encoding, JPEG2000 transcoding, JPEG2000 decoding, and HEVC transcoding requires high-end PCs. Please refer to MCSDK Video 2.x Linux Getting Started Guide for the list of hardware components used in demo validation.
Where to find the demos[edit]
Demo Name | Demo Location inside MCSDK Video Release Package |
AVCIU Encoding Demo | mcsdk_video_2_x_x_x\demos\pcie_avciuenc_demo |
JPEG2000 Transcoding Demo | mcsdk_video_2_x_x_x\demos\pcie_j2x_demo |
JPEG2000 Decoding Demo | mcsdk_video_2_x_x_x\demos\pcie_j2kdec_demo |
H264BPMP Decoder Demo | mcsdk_video_2_x_x_x\demos\pcie_h264bpmpdec_demo |
H264HP Decoder Demo | mcsdk_video_2_x_x_x\demos\pcie_h264hpdec_demo |
MPEG2 Decoder Demo | mcsdk_video_2_x_x_x\demos\pcie_mpeg2dec_demo |
MPEG4 Decoder Demo | mcsdk_video_2_x_x_x\demos\pcie_mpeg4dec_demo |
JPEG Decoder Demo | mcsdk_video_2_x_x_x\demos\pcie_jpegdec_demo |
H264HP Encoder Demo | mcsdk_video_2_x_x_x\demos\pcie_h264hpenc_demo |
MPEG2 Encoder Demo | mcsdk_video_2_x_x_x\demos\pcie_mpeg2enc_demo |
MPEG4 Encoder Demo | mcsdk_video_2_x_x_x\demos\pcie_mpeg4enc_demo |
JPEG Encoder Demo | mcsdk_video_2_x_x_x\demos\pcie_jpegenc_demo |
H264HP Encoding Demo with TFTP output (supported in MCSDK Video 2.1) | mcsdk_video_2_x_x_x\demos\pcie_h264hpenc_tftpout_demo |
H265 (HEVC) Encoder Demo (supported in MCSDK Video 2.2) | mcsdk_video_2_x_x_x\demos\pcie_h265enc_demo |
H265 (HEVC) Decoder Demo (supported in MCSDK Video 2.2) | mcsdk_video_2_x_x_x\demos\pcie_h265dec_demo |
H265 (HEVC) Transcoding Demo (supported in MCSDK Video 2.2) | mcsdk_video_2_x_x_x\demos\pcie_h265transcode_demo |
MPEG2 to H264HP Transcoding Demo (supported in MCSDK Video 2.2) | mcsdk_video_2_x_x_x\demos\pcie_mpeg2dec_h264hpenc_demo |
Multi-channel H264HP Encoding Demo (supported in MCSDK Video 2.2) | mcsdk_video_2_x_x_x\demos\pcie_h264hpenc_multichan_demo |
Getting Started from Desktop Linux SDK[edit]
PCIe based video demos are built on Desktop Linux SDK. Before running video demos, please visit Desktop Linux SDK Getting Started Guide to install, setup, and run Desktop Linux SDK out of box demos. Note that video demos requires using larger and pre-reserved contiguous memory allocation (520MB needs to be pre-reserved to run video demos, with 8 MB set asside for Consistent memory allocation) which is provided from Desktop Linux SDK Contiguous Memory Allocation. Running video demos also requires installing cmem autoload and setting permissions for pcie access as described at Desktop Linux SDK CMEM Autoload and Setup udev.
Build MCSDK Video Host Application to Execute on Linux PC[edit]
This section will walk you through how to make MCSDK Video host application binaries so that the video demos can be run on a Linux PC. The overall steps are:
- Set up Environment Variable
- Build Desktop Linux SDK Host Modules
- Build MCSDK Video Host Application Modules
Setting up Environment Variable[edit]
Modify <MCSDK Video Install Dir>/host/setEnv.sh to set the installation directory of Desktop Linux SDK and MCSDK Video. For example, if Desktop Linux SDK is installed at /home/alice/ti/desktop-linux-sdk_01_00_00_07 and MCSDK Video is installed at /home/alice/ti/mcsdk_video_2_1_0_8, modify setEnv.sh as shown below
#!/bin/sh export DESKTOP_LINUX_SDK_DIR=/home/alice/ti/desktop-linux-sdk_01_00_00_07 export MCSDK_VIDEO_DIR=/home/alice/ti/mcsdk_video_2_1_0_8
Then, run the following commands to set up the environment:
<syntaxhighlight lang="bash">
cd host
source setEnv.sh
</syntaxhighlight>
Building Desktop Linux SDK Host Modules[edit]
Runt the following commands to build Desktop Linux SDK:
<syntaxhighlight lang="bash">
cd host
./makeCleanSdk.sh
./makeSdk.sh
</syntaxhighlight>
Sample console display after running ./makeCleanSdk.sh:
make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv clean make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv' make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem clean make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem' make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module clean make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module' make -C /lib/modules/3.2.0-29-generic-pae/build M=/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/moduleclean make[2]: Entering directory `/usr/src/linux-headers-3.2.0-29-generic-pae' CLEAN /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module/.tmp_versions CLEAN /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module/Module.symvers make[2]: Leaving directory `/usr/src/linux-headers-3.2.0-29-generic-pae' make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host clean make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host' make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr clean make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr' make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/dnldmgr clean make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/dnldmgr' make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/dnldmgr' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/sync clean make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/sync' make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/sync' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/filetestdemo/host clean make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/filetestdemo/host' make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/filetestdemo/host' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/dsp_utils clean make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/dsp_utils' make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/dsp_utils'
Sample console display after running ./makeSdk.sh:
make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv' gcc -Werror -ggdb -I . -I inc -I ../ -I shared -I ../sync -D _FILE_OFFSET_BITS=64 -c src/pciedrv.c -o obj/pciedrv.o ar rcs lib/pciedrv.a obj/pciedrv.o make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem' gcc -Werror -I . -I inc -I .. -I ../config -I module -D _FILE_OFFSET_BITS=64 -c src/cmem_drv.c -o obj/cmem_drv.o ar rcs lib/cmem_drv.a obj/cmem_drv.o make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module' make -C /lib/modules/3.2.0-29-generic-pae/build M=/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module modules make[2]: Entering directory `/usr/src/linux-headers-3.2.0-29-generic-pae' CC [M] /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module/cmem.o LD [M] /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module/cmem_dev.o Building modules, stage 2. MODPOST 1 modules CC /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module/cmem_dev.mod.o LD [M] /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module/cmem_dev.ko make[2]: Leaving directory `/usr/src/linux-headers-3.2.0-29-generic-pae' make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host' gcc -ggdb -I .. -I ../inc -I ../.. -I ../../pciedrv -I ../../config -D MAILBOX_ON_HOST -c src/mailBox_host.c -o obj/mailBox_host.o gcc -ggdb -I .. -I ../inc -I ../.. -I ../../pciedrv -I ../../config -D MAILBOX_ON_HOST -c ../src/mailBox.c -o ../obj/mailBox.o ar rcs lib/mailBox.a obj/mailBox_host.o ../obj/mailBox.o make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr' gcc -ggdb -I . -I .. -I ../config -c src/bufmgr.c -o obj/bufmgr.o ar rcs lib/bufmgr.a obj/bufmgr.o make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/dnldmgr make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/dnldmgr' gcc -Werror -ggdb -I . -I inc -I .. -I ../pciedrv -I ../driver/module -c src/dnldmgr.c -o obj/dnldmgr.o ar rcs lib/dnldmgr.a obj/dnldmgr.o make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/dnldmgr' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/sync make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/sync' gcc -ggdb -I . -I .. -c src/syncLock.c -o obj/syncLock.o gcc -ggdb -I . -I .. -c src/syncBarr.c -o obj/syncBarr.o ar rcs lib/sync.a obj/syncLock.o obj/syncBarr.o make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/sync' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/filetestdemo/host make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/filetestdemo/host' gcc -ggdb -I ../../../sdk -I ../../../sdk/pciedrv -I ../../../sdk/cmem -I ../../../sdk/mailBox -I ../../../sdk/bufmgr -I inc -I ../inc -D MAILBOX_ON_HOST -D BUF_DEBUG -D DEMO_VERBOSE -c src/demo_filetest.c -o obj/demo_filetest.o gcc -ggdb obj/demo_filetest.o ../../../sdk/pciedrv/lib/pciedrv.a ../../../sdk/cmem/lib/cmem_drv.a ../../../sdk/mailBox/host/lib/mailBox.a ../../../sdk/bufmgr/lib/bufmgr.a ../../../sdk/dnldmgr/lib/dnldmgr.a -o bin/demo_filetest -lpciaccess -lpthread -lrt -lbfd make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/filetestdemo/host' make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/dsp_utils make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/dsp_utils' gcc -I ../../sdk -I ../../sdk/pciedrv -I ../../sdk/dnldmgr -I inc -I ../../sdk/cmem -c src/argparse.c -o obj/argparse.o gcc -I ../../sdk -I ../../sdk/pciedrv -I ../../sdk/dnldmgr -I inc -I ../../sdk/cmem -c src/dsp_utils.c -o obj/dsp_utils.o gcc obj/argparse.o obj/dsp_utils.o ../../sdk/dnldmgr/lib/dnldmgr.a ../../sdk/pciedrv/lib/pciedrv.a ../../sdk/cmem/lib/cmem_drv.a ../../sdk/sync/lib/sync.a -o bin/dsp_utils -lpciaccess -lpthread -lbfd make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/dsp_utils'
Building MCSDK Video Host Application Modules[edit]
Runt the following commands to build MCSDK Video host application:
<syntaxhighlight lang="bash">
cd host
./makeCleanVideoApp.sh
./makeVideoApp.sh
</syntaxhighlight>
After the compilation is completed, bin and obj folders will be created under <MCSDK Video Install Dir>/host. MCSDK Video host binary "demo_c667x" can be found from host/bin directory.
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/dataSrc/FileReader.c -o obj/dataSrc/FileReader.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/deviceIO/DeviceIO.c -o obj/deviceIO/DeviceIO.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/deviceIO/DeviceIOTx.c -o obj/deviceIO/DeviceIOTx.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/deviceIO/DeviceIORx.c -o obj/deviceIO/DeviceIORx.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/scheduler/Scheduler.c -o obj/scheduler/Scheduler.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/reorder/Reorder.c -o obj/reorder/Reorder.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/dataSnk/FileWriter.c -o obj/dataSnk/FileWriter.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/dataSnk/Display.c -o obj/dataSnk/Display.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/utils/utils.c -o obj/utils/utils.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/algs/j2kenc/j2eDynCfg.c -o obj/algs/j2kenc/j2eDynCfg.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/parseArgs.c -o obj/parseArgs.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/algs/alg.c -o obj/algs/alg.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/demoDrv.c -o obj/demoDrv.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/demoBufferPools.c -o obj/demoBufferPools.o gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/main.c -o obj/main.o gcc obj/dataSrc/FileReader.o obj/deviceIO/DeviceIO.o obj/deviceIO/DeviceIOTx.o obj/deviceIO/DeviceIORx.o obj/scheduler/Scheduler.o obj/reorder/Reorder.o obj/dataSnk/FileWriter.o obj/dataSnk/Display.o obj/utils/utils.o obj/algs/j2kenc/j2eDynCfg.o obj/parseArgs.o obj/algs/alg.o obj/demoDrv.o obj/demoBufferPools.o obj/main.o /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv/lib/pciedrv.a /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/lib/cmem_drv.a /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host/lib/mailBox.a /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr/lib/bufmgr.a -o bin/demo_c667x -lpciaccess -lpthread -lbfd -lrt -lglut -lGL -lGLEW
Prepare the EVM[edit]
If you are using ADVANTECH LIGHTNING DSPC-8681E and DSPC-8682E cards, please proceed to the next chapter.
If you are using single C6678 EVM with AMC to PCIe Adapter Card (i.e., TMDSEVM6678L with TMDXEVMPCI), please follow the instructions below to set up the hardware, and then proceed to the next chapter.
Step 1: IBL Flash
Follow instructions at MCSDK IBL to update the IBL EEPROM image from BIOS MCSDK version 2.1.2.5. For the IBL flash, only steps 1-9 are needed. In step 1 of IBL flash, please unzip I2crom_0x51_c6678_le.zip to obtain and use an updated i2crom_0x51_c6678_le.bin, in which the BAR region sizes have been tuned for the use case of video demos.
Step 2: Hardware Setup
Follow the guidelines at Hardware Setup for TMDSEVM6678 with TMDXEVMPCI to install and check the hardware.
Install and Run Video Demos[edit]
This section will walk you through how to install and run a video demo. The overall steps include
- Install a Video Demo
- One-time Setup and Initialization
- Run a Video Demo
Install a Video Demo[edit]
Before running the demo, ensure installation directory of Desktop Linux SDK and MCSDK Video is correctly set in <MCSDK Video Install Dir>/demos/pcie_xxx_demo/scripts/setDemoEnv.sh. For example, if Desktop Linux SDK is installed at /home/alice/ti/desktop-linux-sdk_01_00_00_07 and MCSDK Video is installed at /home/alice/ti/mcsdk_video_2_1_0_8, modify setDemoEnv.sh as shown below
#!/bin/sh export DESKTOP_LINUX_SDK_DIR=/home/alice/ti/desktop-linux-sdk_01_00_00_07 export MCSDK_VIDEO_DIR=/home/alice/ti/mcsdk_video_2_1_0_8 ...
Then, run the following commands to set up the environment variable if this has not been done before. <syntaxhighlight lang="bash"> cd demos/pcie_xxx_demo/scripts source setDemoEnv.sh </syntaxhighlight>
After that, run the following command to prepare the scripts which are needed for running the demo: <syntaxhighlight lang="bash"> cd demos/pcie_xxx_demo/scripts ./installDemo.sh </syntaxhighlight>
After this, all the scripts for running the demo will exist at the folder of demos/pcie_xxx_demo/scripts, as shown below for H264HP encoder demo.
xghdv501@QuadShannonDemoPC3:~/ti/mcsdk_video_2_1_0_8/demos/pcie_h264hpenc_demo/scripts$ ll total 56 drwxr-xr-x 3 xghdv501 xghdv501 4096 Apr 5 17:21 ./ drwxr-xr-x 4 xghdv501 xghdv501 4096 Feb 26 11:42 ../ drwxr-xr-x 2 xghdv501 xghdv501 4096 Apr 5 17:21 bootcfg/ -rw-r--r-- 1 xghdv501 xghdv501 8430 Apr 5 17:21 codecParams.cfg -rwxr-xr-x 1 xghdv501 xghdv501 193 Apr 5 17:21 demoSave2File.sh* -rwxr-xr-x 1 xghdv501 xghdv501 411 Apr 5 17:21 dnld_dsp.sh* -rwxr-xr-x 1 xghdv501 xghdv501 436 Apr 5 17:21 init_dsp.sh* -rwxr-xr-x 1 xghdv501 xghdv501 2902 Feb 25 23:12 installDemo.sh* -rw-r--r-- 1 xghdv501 xghdv501 85 Apr 5 17:21 multiClip.cfg -rwxr-xr-x 1 xghdv501 xghdv501 458 Apr 5 17:21 reset_dsp.sh* -rw-r--r-- 1 xghdv501 xghdv501 328 Feb 26 11:52 setDemoEnv.sh -rwxr-xr-x 1 xghdv501 xghdv501 124 Feb 25 23:12 uninstallDemo.sh*
One time Setup and Initialization[edit]
Every time after rebooting the PC, first do "source setDemoEnv.sh" if that has not been done after the rebooting. <syntaxhighlight lang="bash"> cd demos/pcie_xxx_demo/scripts source setDemoEnv.sh </syntaxhighlight>
Then, initialize the DSPs by running the following commands, with CPU frequency specified for DSP initialization. <syntaxhighlight lang="bash"> cd demos/pcie_xxx_demo/scripts ./init_dsp.sh <cpu_frequency> </syntaxhighlight>
The argument of the above command indicates the CPU frequency to be used for the demo. For example, execute the following command to do DSP initialization with 1.25GHz operation. <syntaxhighlight lang="bash"> ./init_dsp.sh 1250 </syntaxhighlight>
This init_dsp command automatically detects the number of TI PCI devices and prints the information out. For example, executing the command on Quad C6678 DSPC 8681 card will show the following TI PCI device information in the console display.
Number of devices: 4 Device: 0 : dspc8681 boot config file initcfg_1250.txt DSP boot config addr 0x86ff00 DSP boot config size in bytes 8 Boot config words: 0xbabeface, Boot config words: 0x19, Overriding image entry point with input 860000 Download image success ! Device: 1 : dspc8681 boot config file initcfg_1250.txt DSP boot config addr 0x86ff00 DSP boot config size in bytes 8 Boot config words: 0xbabeface, Boot config words: 0x19, Overriding image entry point with input 860000 Download image success ! Device: 2 : dspc8681 boot config file initcfg_1250.txt DSP boot config addr 0x86ff00 DSP boot config size in bytes 8 Boot config words: 0xbabeface, Boot config words: 0x19, Overriding image entry point with input 860000 Download image success ! Device: 3 : dspc8681 boot config file initcfg_1250.txt DSP boot config addr 0x86ff00 DSP boot config size in bytes 8 Boot config words: 0xbabeface, Boot config words: 0x19, Overriding image entry point with input 860000 Download image success !
Note that the above "init_dsp.sh" needs to executed just once after powering up the demo Linux PC with a PCIe TI Multicore DSP Card installed.
Preparing for Video Demos[edit]
Note that input clips are not provided for JPEG2000 transcoding and AVCIU encoding in the MCSDK Video package Before running these demo, make sure the input clip is available and its location is correctly updated in demos/pcie_xxx_demo/scripts/multiClip.cfg. For the other demos, the input clips are provided at demos/pcie_xxx_demo/testVecs/input with corresponding multiClip.cfg, and therefore can be run as is.
- Creating input clips for JPEG2000 transcoding and AVC Intra encoding demos
The input clips for JPEG2000 transcoding and AVC Intra encoding demos shall be 1920x1080 10-bit 4:2:2 YUV clips. To create such input clips, please follow the steps below:
- Download SGI files (e.g. using wget) from "ftp://vqeg.its.bldrdoc.gov/HDTV/SVT_MultiFormat/1080p50_CgrLevels_SINC_FILTER_SVTdec05_/"
- Rename downloaded files to start with index 00001, e.g. rename 07111.sgi to frame00001.sgi, 07112.sgi to frame00002.sgi, and so on
- Convert and concatenate the renamed raw files into a single YUV stream using ffmpeg (0.11 or later, ffmpeg) with the following command "ffmpeg -i frame%05d.sgi -pix_fmt yuv422p10le –y output.yuv"
Alternatively if you have compressed YUV 4:2:2, 10bpp streams (e.g. ProRes streams), please use the following command to decode "ffmpeg –i sample.XXX –pix_fmt yuv422p10le –y output.yuv".
- Number of DSPs needed for running the demos in real-time
In order to run the demos in real-time, the number of DSPs needed is different. The table below lists the number of DSPs required for running individual demos in real-time.
To achieve real-time performance, please specify the number of DSPs for the command of "./dnld_dsp.sh". Also please modify demoDisplay.sh to specify the DSP cores (-t option) used for the demo when needed. Using JPEG2000 Transcoding Demo as the example, the packaged demoDisplay.sh has "-t 0:31" for Quad C6678. When one Octal card is available, "-t 0:63" can be used to achieve 30fps JPEG2000 transcoding. When two Octal cards are available, "-t 0:127" can be used to achieve 60fps JPEG2000 transcoding.
Real-time Demo | Number of DSPs |
AVCIU Encoding Demo (10-bit) | 3 DSPs (24 DSP cores) for 60fps |
JPEG2000 Transcoding Demo (10-bit) | 16 DSPs (128 DSP cores) for 60fps 8 DSPs (64 DSP cores) for 30fps 4 DSPs (32 DSP cores) for 15fps |
JPEG2000 Decoding Demo (8-bit) | 3 DSPs (24 DSP cores) for 24fps |
HEVC transcoding Demo (supported in MCSDK Vide 2.2) | Codecs are in Alpha stage, channel density TBA |
Run Video Demos[edit]
For running a video demo, first reset DSP, then download sv04, and finally execute the demo:
- Run a demo with output saved to file (applicable to all the demos)
<syntaxhighlight lang="bash">
cd demos/pcie_xxx_demo/scripts
./reset_dsp.sh <cpu_frequency>
./dnld_dsp.sh <num_dsps>
./demoSave2File.sh
</syntaxhighlight>
Console display after running ./reset_dsp.sh 1250 for one DSPC-8681E:
Num of devices 4 Iterations waited for entry point to clear 1 Dsp 0: DSP Reset success ! Iterations waited for entry point to clear 1 Dsp 1: DSP Reset success ! Iterations waited for entry point to clear 1 Dsp 2: DSP Reset success ! Iterations waited for entry point to clear 1 Dsp 3: DSP Reset success ! Number of devices: 4 Device: 0 : dspc8681 boot config file initcfg_1250.txt DSP boot config addr 0x86ff00 DSP boot config size in bytes 8 Boot config words: 0xbabeface, Boot config words: 0x19, Overriding image entry point with input 860000 Download image success ! Device: 1 : dspc8681 boot config file initcfg_1250.txt DSP boot config addr 0x86ff00 DSP boot config size in bytes 8 Boot config words: 0xbabeface, Boot config words: 0x19, Overriding image entry point with input 860000 Download image success ! Device: 2 : dspc8681 boot config file initcfg_1250.txt DSP boot config addr 0x86ff00 DSP boot config size in bytes 8 Boot config words: 0xbabeface, Boot config words: 0x19, Overriding image entry point with input 860000 Download image success ! Device: 3 : dspc8681 boot config file initcfg_1250.txt DSP boot config addr 0x86ff00 DSP boot config size in bytes 8 Boot config words: 0xbabeface, Boot config words: 0x19, Overriding image entry point with input 860000 Download image success !
Console display after running ./dnld_dsp.sh 4 for one DSPC-8681E:
boot config file ./bootcfg/bootcfg_0.txt DSP boot config addr 0x800000 DSP boot config size in bytes 20 Boot config words: 0xbabeface, Boot config words: 0x0, Boot config words: 0x3, Boot config words: 0x12345678, Boot config words: 0x90abcdef, Overriding image entry point with input c000000 Download image success ! boot config file ./bootcfg/bootcfg_1.txt DSP boot config addr 0x800000 DSP boot config size in bytes 20 Boot config words: 0xbabeface, Boot config words: 0x1, Boot config words: 0x3, Boot config words: 0x12345678, Boot config words: 0x90abcdef, Overriding image entry point with input c000000 Download image success ! boot config file ./bootcfg/bootcfg_2.txt DSP boot config addr 0x800000 DSP boot config size in bytes 20 Boot config words: 0xbabeface, Boot config words: 0x2, Boot config words: 0x3, Boot config words: 0x12345678, Boot config words: 0x90abcdef, Overriding image entry point with input c000000 Download image success ! boot config file ./bootcfg/bootcfg_3.txt DSP boot config addr 0x800000 DSP boot config size in bytes 20 Boot config words: 0xbabeface, Boot config words: 0x3, Boot config words: 0x3, Boot config words: 0x12345678, Boot config words: 0x90abcdef, Overriding image entry point with input c000000 Download image success !
At the end of executing ./demoSave2File.sh, the output file is created under demos/pcie_xxx_demo/testVecs/output directory with Test Complete displayed in console:
Test Complete.
- Run a demo with output displayed (applicable to JPEG2000 decoding, JPEG2000 transcoding, AVCIU encoding, HEVC Transcoding, and MPEG2 to H264HP Transcoding)
<syntaxhighlight lang="bash">
cd demos/pcie_xxx_demo/scripts
./reset_dsp.sh <cpu_frequency>
./dnld_dsp.sh <num_dsps>
./demoDisplay.sh
</syntaxhighlight>
In demoDisplay.sh, <iter> (-i) specifies the number of iterations the input clip will be decoded/transcoded/encoded. The output will be displayed on the PC for the number of iterations specified.
Configure TFTP to run H264HP Encoding Demo with TFTP output[edit]
The pcie_h264hpenc_tftpout_demo demonstrates sending the encoded output to both PCIe and TFTP. Before running this demo, TFTP server needs to be installed and configured correctly. This demo has been verified with TFTP server installed and running on a Windows PC. Please follow instructions below for the TFTP setup.
- 1. Physical connection
Connect the EVM and the Windows PC which will run the TFTP server to a Ethernet switch with Ethernet cables.
- 2. TFTP server installation on PC
Download and install TFTP server v3.35 from TFTP Download Link.
- 3. Start TFTP Server on the PC
Click on the settings button and increase the timeout duration in the Settings window. A timeout of 20 seconds should be sufficient.
- 4. Enable ARP entry on the PC with TFTP server running
Enable ARP entry on the PC so that it can send packets to EVM. This is done by opening the command prompt and entering the command: arp –s <dsp_ip_addr> <dsp_mac_addr>. Note that dsp_ip_addr and dsp_mac_addr are the same as the localIpAddress and localMacAddress, respectively, both of which can be found in the configuration file tftp.cfg. In this tftp.cfg, serverIpAddress and serverMacAddress specify the IP and MAC address of the PC, which can be found be running the command ipconfig /all. Since both the DSP and the PC needs to be in the same subnet, specify DSP's IP address (i.e., localIpAddress) correspondingly after getting the PC's IP address (i.e., serverIpAddress). The DSP's MAC address (i.e., localMacAddress) can be any valid MAC address, such as the physical MAC address of the DSP or the one included in the provided tftp.cfg, as long as the same MAC address is not used anywhere else in the same subnet.
- 5. Output file to TFTP can be found under the Current Directory of the TFTP server after the test is completed.
Demo Reconfiguration When needed[edit]
Codec Re-configuration[edit]
After installing a demo, multiClip.cfg and codecParams.cfg can be found under demos/pcie_xxx_demo/scripts directory. They can be modified to reconfigure a test when the input clip and/or codec parameters are updated.
- Edit multiClip.cfg
Modify multiClip.cfg using the following format
<input_file1> <output_file1> <number_of_frames1> <input_file2> <output_file2> <number_of_frames2> ...
- Edit codecParams.cfg
Modify codecParams.cfg when codec static/dynamic parameters and inArgs (applicable to JPEG2K Encoder only) need to be updated. Use the following format, and Comment shows the parameter name as in the codec public header files.
<ParameterName> = <ParameterValue> # Comment
Demo Re-configuration[edit]
After installing a demo, demoxxx.sh can be found under demos/pcie_xxx_demo/scripts directory. In these scripts, Host application "demo_c667x" is called for running the demos.
The configuration parameters for the host application are as follows:
- <algorithm> (-a): supported algorithms
- <codec-params> (-c): configuration file for the codec(s), i.e., codecParams.cfg
- <clip-params> (-f): input/output clip configuration file, i.e., multiClip.cfg
- <network-params> (-n): network configuration file for using TFTP, i.e., tftp.cfg (needed only for pcie_h264enc_tftpout_demo)
- <team-mapping> (-t): list of node IDs comprising a algorithm processing team. The first node in list is assumed to be the master node
- <width> (-w): video width
- <height> (-h): video height
- <iter> (-i): number of iterations to run the demo
- <display-width> (optional): display width when the demo application sends the frames to the display
- <display-height> (optional): display height when the demo application sends the frames to the display
- <display-rate> (optional): display frame rate when the demo application sends the frames to the display
Multi-Channel Support for Concurrent Encoding/Decoding[edit]
In production release of MCSDK Video 2.1, multi-channel support is added to achieve concurrent codec processing on multiple chips. With each chip hosting one channel, DSPC-8681E and DSPC-8682E can support four and eight coding channels, respectively. In MCSDK Video 2.2, multi-channel support is enhanced to achieve concurrent codec processing on a single C6678 chip.
Follow the steps below to build and run multi-channel demos.
- Linux Desktop SDK Preparation
- Rebuild MCSDK Video Host Application Modules
- Prepare Scripts and Run Multi-Channel Demo
Linux Desktop SDK Preparation[edit]
With an increasing number of codec channels, multi-channel demos require larger and pre-reserved contiguous memory allocation. Please follow Desktop Linux SDK CMEM Allocation to allocate larger and pre-reserved contiguous memory. 656 MB is needed to run 4 channels while 848 MB is needed to run 8 channels. Then, follow Desktop Linux SDK CMEM Autoload and Set Permission to install CMEM autoload and set permissions for PCIe access.
Rebuild MCSDK Video Host[edit]
After allocating pre-reserved contiguous memory, installing CMEM autoload and setting permissions for PCIe access as above, please rebuild MCSDK Video host application modules: <syntaxhighlight lang="bash">
cd host
./makeCleanVideoApp.sh
./makeVideoApp.sh
</syntaxhighlight>
Prepare Scripts and Run Multi-Channel Demo[edit]
Since each codec instance has its own input/output, create multiple "multiClip*.cfg" files under "demos/pcie_xxx_demo/scripts" to specify the input/output for codec instances, such as multiClip0.cfg for chip 0, multiClip1.cfg for chip 1, multiClip2.cfg for chip 2, and multiClip3.cfg for chip 3. Examples of multiClip*.cfg:
multiClip0.cfg
../testVecs/input/airshow_p1920x1080.yuv ../testVecs/output/airshow_p1920x1080-0.264 5
multiClip1.cfg
../testVecs/input/airshow_p1920x1080.yuv ../testVecs/output/airshow_p1920x1080-1.264 5
Then, modify "demoSave2File.sh" under "demos/pcie_xxx_demo/scripts" to allow multiple codec instances. Using 4-channel H264HP encoder as the example:
CLIP_CONFIG0=multiClip0.cfg CLIP_CONFIG1=multiClip1.cfg CLIP_CONFIG2=multiClip2.cfg CLIP_CONFIG3=multiClip3.cfg CODEC_PARAMS=codecParams.cfg $MCSDK_VIDEO_HOSTBIN_DIR/demo_c667x -v -a H264HPENC -f $CLIP_CONFIG0 -c $CODEC_PARAMS -t "0 1 2 3" --width=1920 --height=1080 -a H264HPENC -f $CLIP_CONFIG1 -c $CODEC_PARAMS -t "8 9 10 11" --width=1920 --height=1080 -a H264HPENC -f $CLIP_CONFIG2 -c $CODEC_PARAMS -t "16 17 18 19" --width=1920 --height=1080 -a H264HPENC -f $CLIP_CONFIG3 -c $CODEC_PARAMS -t "24 25 26 27" --width=1920 --height=1080
After the scripts are ready, follow the procedure earlier to run the demo: <syntaxhighlight lang="bash">
cd demos/pcie_xxx_demo/scripts
./reset_dsp.sh <cpu_frequency>
./dnld_dsp.sh <num_dsps>
./demoSave2File.sh
</syntaxhighlight>
Internals to PCIe Based MCSDK Video Demo[edit]
For users who are interested in how the PCIe based MCSDK video demos are developed, please refer to the following link for the development guide:
- Development Guide for PCIe based MCSDK Video Demo: http://processors.wiki.ti.com/index.php/MCSDK_VIDEO_2.1_PCIe_Demo_Development_Guide
Congratulations! At this time, you already should have finished running the PCIe based out of box demos. The following section is for recompiling the DSP build (sv04.out) for the demo.
Rebuild DSP when Needed[edit]
When there is code change to DSP build(sv04.out for PCIe based demos), recompiling of sv04 can be done following instructions at Build MCSDK Video DSP Application. Scripts are also provided from the host directory to make DSP as well as all the builds used in the PCIe based demos. Please follow the instructions below to recompile DSP and/or all the builds.
Setting up Environment Variable[edit]
Modify <MCSDK Video Install Dir>/host/setEnv.sh to set the installation directory of Desktop Linux SDK and also MCSDK Video.
Ensure all the components required for compiling DSP builds are installed as specified in MCSDK Video 2.x Getting Started Guide for Linux. Then, modify <MCSDK Video Install Dir>/dsp/mkrel/setupenvMsys.sh to set the installation directory of required TI tools (TI_TOOL_DIR) and Active Perl (PERL_ROOT). Note that if the TI tools required by MCSDK Video are installed under different directories, please make corresponding changes in setupenvMsys.sh as needed to point to the correct path of the installed components/tools. Please refer to MCSDK Video 2.x Getting Started Guide for Linux: Set Up Env to Rebuild DSP for more details.
After that, run the following commands:
<syntaxhighlight lang="bash">
cd host
source setEnv.sh
</syntaxhighlight>
Recompiling DSP build[edit]
Runt the following commands to rebuild DSP build (sv04): <syntaxhighlight lang="bash"> cd host ./makeDsp.sh </syntaxhighlight>
Recompiling All the builds[edit]
Runt the following commands to recompile all the builds: SDK, Video host, and Video DSP: <syntaxhighlight lang="bash">
cd host
./makeAll.sh
</syntaxhighlight>
Uninstall a Video Demo[edit]
To uninstall a Video demo, run the following command to remove the scripts which are generated when running ./installDemo.sh:
<syntaxhighlight lang="bash">
cd demos/pcie_xxx_demo/scripts ./uninstallDemo.sh </syntaxhighlight>
Useful Resources and Links[edit]
Product Download and Updates[edit]
For product download and updates, please visit the links listed in the table below.
MCSDK Video Instructions[edit]
Please visit the links below to install MCSDK Video, run the video demos, and get the details on how the MCSDK Video demos are developed.
Technical Support[edit]
For technical discussions and issues, please visit the links listed in the table below.
Forum/Wiki Link | |
C66x Multicore forum | http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639.aspx |
Multimedia Software Codecs forum | http://e2e.ti.com/support/embedded/multimedia_software_codecs/default.aspx |
TI-RTOS forum | http://e2e.ti.com/support/embedded/f/355.aspx |
Code Composer Studio forum | http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/3131.aspx |
TI C/C++ Compiler forum | http://e2e.ti.com/support/development_tools/compiler/f/343/t/34317.aspx |
Embedded Processors wiki | http://processors.wiki.ti.com |
Note: When asking for help in the forum you should tag your posts in the Subject with “MCSDK VIDEO”, the part number (e.g. “C6678”) and additionally the component (e.g. “NWAL”).