Please note as of Wednesday, August 15th, 2018 this wiki has been set to read only. If you are a TI Employee and require Edit ability please contact x0211426 from the company directory.

Digital Video Test Bench (DVTB)

From Texas Instruments Wiki
Jump to: navigation, search


Overview

The Digital Video Test Bench (DVTB) is a generic test bench that can be used to test codec servers, drivers or any system level use case. It allows to configure the codecs and to select a variety of inputs (camera, line-in, file) and outputs (display, line-out, file). Scripting capabilities make it very flexible for exploring system level use cases and general testing. DVTB can also be extended to support application specific use cases by adding new handlers.

This test bench is available on Linux and DSP/BIOS DVSDK platforms.

Where can I get it?

The DVTB can be found in two different packages

This DVTB supports the codecs provided with the DVSDK. The source code is provided to rebuild it. A release and a debug version are generated. The debug version provides more detailed debug information.

  • Evaluation Codec Combo

The codec packages received throught the codec evaluation program include a DVTB that supports only the specific codec. A release and a debug version are provided. Source code is not provided.

How can I use it?

The DVTB can be used in command line mode or in scripting mode.

Commands, Classes and Parameters

All commands in DVTB have the following syntax:

<Command> <Class> [Options]


The following commands are supported:

  • func: Functionality - Execute data flows
  • setp: Set parameter
  • getp: Get parameter

The entity on which the commands operate is called <Class>. The classes can be grouped in peripheral classes and codec classes.

The peripheral classes are:

  • audio: Audio device specific parameters.
  • vpbe: Video Processing Back End (VPBE) specific parameters
  • vpfe: Video Processing Front End (VPFE) specific parameters
  • vdce: Video data conversion engine (VDCE) specific parameters

The Codec Engine class is:

  • engine: Codec Engine parameters

There are multiple codec classes included for different XDM versions across different platforms. The codec clasees for XDM 0.9 compliant codecs are:

  • viddec: Video Decoder XDM version 0.9 specific parameters
  • videnc: Video Encoder XDM version 0.9 specific parameters
  • auddec: Audio Decoder XDM version 0.9 specific parameters
  • audenc: Audio Encoder XDM version 0.9 specific parameters
  • sphdec: Speech Decoder XDM version 0.9 specific parameters
  • sphenc: Speech Encoder XDM version 0.9 specific parameters
  • imgdec: Image Decoder XDM version 0.9 specific parameters
  • imgenc: Image Encoder XDM version 0.9 specific parameters

For XDM 1.0 and 1.2 compliant codecs, the classes are:

  • viddec2: Video Decoder XDM version 1.2 specific parameters
  • videnc1: Video Encoder XDM version 1.0 specific parameters
  • auddec1: Audio Decoder XDM version 1.0 specific parameters
  • sphdec1: Speech Decoder XDM version 1.0 specific parameters
  • sphenc1: Speech Encoder XDM version 1.0 specific parameters
  • imgdec1: Image Decoder XDM version 1.0 specific parameters
  • imgenc1: Image Encoder XDM version 1.0 specific parameters

Each <class> has a set of specific parameters. These parameters must be provided in the <Option> field. The list of parameters is provided in the DVTB User's Guide located in dvtb_n_nn_nnn/docs

DVTB Command Line Mode

Start DVTB (release version)

root@156.117.95.135:/opt/dvsdk/dm6446# ./dvtb-r

Get the DVTB command prompt:

[DVTB-LOG]: dvevmStEngine.c: Codec Engine Runtime initialized

-----------------------------------------------------------------------------

===================***********************************=======================

        Digital Video Test Bench For DM6446 ( DVTB ) Ver 1.12.000

===================**********************************========================

-----------------------------------------------------------------------------

<DVTB> $

We can get the list of the classes supported in this release as follows:

<DVTB> $ getp
[DVTB-ERROR]: dvevmStGetParam.c: Usage: getp <auddec|sphenc|sphdec|videnc|viddec
|mp3basedec> <option>
FAIL: getp

This release supports the six classes above. The getp command applied to a class will provide the class parameters. The default configuration parameters of the videnc class are:

<DVTB> $ getp videnc
         codec                           =>  h264enc
         encodingPreset                  =>  0
         rateControlPreset               =>  1
         maxHeight                       =>  480
         maxWidth                        =>  720
         maxFrameRate                    =>  30000
         maxBitRate                      =>  4000000
         dataEndianness                  =>  1
         maxInterFrameInterval           =>  0
         inputChromaFormat               =>  4
         inputContentType                =>  0
         inputHeight                     =>  480
         inputWidth                      =>  720
         refFrameRate                    =>  30000
         targetFrameRate                 =>  30000
         targetBitRate                   =>  4000000
         intraFrameInterval              =>  30
         generateHeader                  =>  0
         captureWidth                    =>  0
         forceIFrame                     =>  0
         numFrames                       =>  30
PASS: getp

The followind commands change some of the parameters and encode an input yuv file, input.yuv with the MPEG4 Encoder. The output is stored in the file output.mpeg4

<DVTB> $ setp engine name encode
PASS: setp

<DVTB> $ setp videnc codec mpeg4enc
PASS: setp

<DVTB> $ setp videnc maxBitRate 2000000
PASS: setp

<DVTB> $ setp videnc targetBitRate 2000000
PASS: setp

<DVTB> $ func -s input.yuv -t output.mpeg4

DVTB Scripting Mode

Instead of using the command line, it is possible to write a script to control the DVTB. Sample dvtb scripts are provided in dvtb_n_nn_nnn/dvtb-scripts .

The following script has same functionality as the commands above:

setp engine name encode
setp videnc codec mpeg4enc
setp videnc maxBitRate 2000000
setp videnc targetBitRate 2000000
func -s input.yuv -t output.mpeg4

Run the script:

root@156.117.95.135:/opt/dvsdk/dm6446# ./dvtb -s dvtb_script.sh

What are the DVTB versions/features in DVSDK 1.40?

The following table provides a summary of the features of the DVTBs included in DVSDK 1.40 (Production release)


Platform DVTB Version xDM Support Extended Param Support
DM6446 v 1.13.000 xDM 0.9 - Video E/D; Audio E/D; Speech E/D No
DM355 v 1.24.000 xDM 1.2 - Video E/D; Image E/D Yes
DM6467 v 2.13.000 xDM 1.2 - Video E/D; xDM 0.9 - Audio E/D; Speech E/D No Except for H264 Encoder