Elecard StreamEye Command line tool

Elecard StreamEye Command line tool

October 30, 2018
Features 10 621 views

With StreamEye command line tool, the complex analysis operations become as fast and easy as a few lines of commands.

Using this tool you'll be able to: 

  • Analyze the whole array of video files automatically;
  • Address specific and complex challenges with a few lines of commands;
  • Retrieve submitted results as a text file in CSV format for easy viewing in Excel;
  • Customize a sequence of commands to perform your specific tasks;
  • Accelerate and automate your regular tasks;
  • Get access to most of StreamEye functionality and resources through StreamEye Console.

 

Table of contents


 

How to use StreamEye Command line tool:

To streamline automatic analysis of several files the following rules are introduced. They reassign input and output parameters for configuration files.

Get to the command prompt by clicking Start->Run and type 'cmd'. Then enter the command to start the application first and proceed with the command line options. In general, the syntax is as follows:

SEyeConsole.exe <config path> <options>

Note: you should not relocate the <product> console without all the other applications of the product contained in the installation pack, otherwise the console application will not start.


 

Notes on the Command line rules

1. Parameters with default value are not required and can be omitted.

2. Rules for input and output file names:

  • parameter /in:<file path> in the command line overwrites the value of the tag <input> in the configuration file;
  • parameter /out:<file path> in the command line overwrites the value of the tag <output> in the configuration file;
  • if <output> tag is missing (or not specified), output file names are formed from input file names plus suffix (if the latter is specified);
  • if output file for a tag/section is not specified, the output file name for the tag/section is formed from the name specified in the <output/> tag plus suffix depeding on the name of the tag/section, e.g. ".message.csv", ".header.csv", etc.

Back to table of contents


 

Sample Config.xml file:

<?xml version="1.0"?>
<stream version="1">
    <input HEVCDecoder="Elecard(default)/Reference" SkipIncomplete="true(default)/false" file="…"/>
    <output separator=".(default)/," delimiter=";(default)/," file="…"/>
    <reference type="IYUV(default)/[*Upsampler Type]" filter="None(default)/FieldGen/Median/Sobel" offset="0(default)" increment="1(default)" file="…"/>
    <range span="all(default)/start - stop" order="display(default)" indexmode="base/extended(default)"/>
    <userdefs framerate="25(default)" timeperiod="1(default)"/>
    <info>
        <stream distribution="on(default)/off" file="…"/>
        <picture distribution="on(default)/off" file="…">
            <condition … />
        </picture>
        <data type="decoded(default)/predicted/unfiltered/residual/reference/difference" file="…"/>
        <coefficients type="transform/dequantized" file="…"/>
        <message level="all(default)/message/warning/error" file="…"/>
        <header level="struct(default)/parameter" file="…">
            <condition parameter="name" comparison="full/substring(default)">
                <range value="min-max"/>
                <equal value="value"/>
                <less value="min"/>
                <more value="max"/>
                <not value="value"/>
            </condition>
        </header>
        <index distribution="on(default)/off" order="display(default)/stream" file="…"/>
        <metrics type="psnr(default)/[*Metric Type]" source="decoded(default)/predicted/unfiltered/residual/reference/difference" file="…"/>
        <difference type="compare/psnr/psnr clip/subtraction/temperature" source0="decoded(default)/predicted/unfiltered/residual/reference" source1="reference(default)/decoded/predicted/unfiltered/residual" format="IYUV(default)/YV12" file="…"/> 
        <buffer file="…"/>
        <block compact="false(default)/true" disable="block|subblock|prediction|transform" file="…"/>
        <dpb description="on(default)/off" file="…"/>
        <statistics mode="all(default)/stream/picture" type="all(default)/[*Statistic Type]" prediction="all(default)/sizes/mpe" component="all(default)/luma/chroma" by="all(default)/count/area" file="…"/> 
    </info>
</stream>

<stream>
    <input file="…"/>
    <output separator=";(default)/," delimiter=".(default)/," file="…"/>
    <info>
        <stream distribution="on(default)/off" file="…"/>
    </info>
</stream>

* Upsampler types that can be used in a configuration file: I444, I422, IYUV, NV12, NV21, P444, RGB24, RGB32, UYVY (Y422, UYNV, HDYC), V210, V400, V444, Y42B, YUY2 (YUNV, V422, YUYV), YV12, YV16, YVYU, Y4M.

Back to table of contents


 

List of commands:

<input/>The tag is used to configure the input file
fileSets the input file path
<output/>The tag is used to configure the output file
separatorAllows selecting decimal comma or decimal dot to separate an integer part from a fractional one of a real number
delimiterAllows selecting comma or semicolon to specify boundaries in data stream
fileSets the output file path
<reference/>  The tag is used to configure the reference file
typeDefines the format of the raw data. YV12 (is set by default) / *Upsampler type are used now. More formats to be supported in the next updates)
filterEnables filtering in a frame (None (by default)/Field Generation/Median/Sobel)
offsetShifts the position from the first analyzed frame to the specified one in a reference stream. “0” is set by default
incrementCoefficient used for calculation of a successive frame number intended for further analysis. “1” is set by default
fileSets the path to the reference file
<range/>The tag is used to define the range of analyzed frames
spanDefines the range of frames (all (by default) /start - stop), 'start' - number of the first analyzed frame, 'stop' - number of the last analyzed frame
orderSpecifies the order of frames. Display is set by default
index modeStarts indexing mode (extended (by default) / base)
<info/> The tag is used to define the type/-s of information for output.
<stream/> The tag is used to output general information about the analyzed stream
distributionContains information on data distribution by type of coding units (on (by default) / off)
fileSets the path for the output stream information
<picture/> The tag is used to output picture information
distributionContains information on data distribution by type of coding units  (on(default)/off)
fileSets the path for the output picture information
<data/> The tag is used to save output decoder information on any decoding step
typeSpecifies the type of data for saving (decoded (by default) / predicted / unfiltered / residual / raw data / difference)
formatDefines the format for saving data (IYUV (by default))
fileSets the output file path where the data will be saved
<message/> The tag is used to output messages that appear during analysis
levelDefines the level of the saved messages (all(default)/message/warning/error)
fileSets the output file path where the messages will be saved
<header/> The tag is used to define the output headers information
levelDefines the type of header output information (struct (by default) / parameter), 'struct' - full information on the header will be saved, 'parameter' - only information on the specified parameter(s) from the headers will be saved
fileSets the path to the output file with the headers information
<condition/> The tag is used to specify the required header parameters. If this section does not exist, all headers will be dumped
parameterSpecifies the header parameter name
comparisonSpecifies the type of comparison check for the parameter name (full / substring (by default))
<range/> The tag is used to specify the range of parameter values to be searched
valueDefines the range for searching parameter values in the format “min-max&rdquo”
<equal/> The tag is used to set the search parameter value equal to the specified value
valueSets the parameter value for comparison
<less/>The tag is used to set the search parameter value less than the specified value
valueSets the parameter value for comparison
<more/> The tag is used to set the search parameter value exceeding the specified value
valueSets the parameter value for comparison
<not/>The tag is used to set the search parameter value NOT equal to the specified value
valueSets the parameter value for comparison
<index/>The tag is used to output information about frames (offset, frame type, frame size, average quantizer, etc.)
distributionContains information on data distribution by type of coding units (on (by default) / off)
orderShows the order or sequence of index data that are saved (stream/display)
fileSets the output file path where information on frames will be saved
<metrics/> The tag is used to output information on quality metrics
typeSpecifies the metric type: PSNR (by default) | ssim | delta | msad | mse | VQM | NQI | APSNR | VMAF phone
sourceDefines the type of the source for metrics calculation (decoded (by default) / predicted / unfiltered)
fileSets the output file path where information on metrics will be saved
<difference/>The tag is used to output information on difference metrics
typeDefines the type of difference (compare/subtraction/temperature). This is the required parameter for this tag. Its default value should be set. If the value is not set, this tag will be skipped
source0Specifies the source type for difference calculation (decoded (by default) / predicted / unfiltered / residual/ reference)
source1Specifies the source type for difference calculation (reference (by default) / decoded / predicted / unfiltered / residual)
fileSets the output file path where information on difference will be saved
<buffer/>The tag is used to save Decoder video buffer parameters
fileSets the path to the output file with the buffer information
<block/>The tag is used to define information about each encoding block
compactData presentation type (false (by default)/true), false – each parameter of one block is presented in one line; true – combines a block data and presents as a column
disableExcludes data from the report (block and\or subblock and\or prediction and\or transform)
fileSets the output file path where information on difference will be saved
<dpb/>The tag is used to save information about decoded picture buffer for each frame; description on (by default) / off is used to display or not the additional information about the frame
descriptionEnables/disables adding of frame description from the DPB panel
fileSets the output file path where information on difference will be saved
<statistics/>The tag is used to get statistics about streams and frames (see more details in the Statistics Panel section of User Guide)
modeAllows selecting a mode (stream / pictures) for getting statistics
typeShows statistics for the whole stream by structure or prediction
predictionCounts prediction types depending on the file format and components
componentAllows selecting components for counting predictions
byAllows selecting the way of displaying statistics (by count / by area)
fileSets the output file path where information on difference will be saved

Back to table of contents


 

Examples

These examples show how to perform some of the typical tasks from the command-line:

  1. Saving the general information on the stream and on each picture;
  2. Retrieving information on the number of IDR_W_RADL slices and offsets;
  3. Searching for all slices with the slice_type value equal to "2";
  4. Saving YUV data on the prediction step;
  5. Saving the block info data of the picture;
  6. Retrieving information on frame sizes and PSNR values for the first 10 frames.

 

1. Saving the general information on the stream and on each picture

config.xml:

<?xml version="1.0"?> 
<stream version="1"> 
      <input file="C:\Media\hevc\test_12_0_sei.h265"/> 
      <output file="C:\Media\hevc\out\"/> 
      <info> 
            <stream/> 
            <picture/> 
      </info> 
      </stream>

Output files:

test_12_0_sei.stream.csv:

name;value; 
stream type;HEVC/H.265;
profile;Main;
compatibility;Main; Main 10;
level / tier;Undefined / Main;
chroma format;4:2:0;
resolution;832 x 480;
frame rate;50.00;
bitrate;1 024 000 000;

 ...
test_12_0_sei.stream.csv:

Picture #0; 
name; value;
resolution; 416 x 240;
size (bytes);  
cu; 21 476;
prediction;520;
transform; 19 264;
qp; 
min / max;23 / 23;
pixels; 
count;99 840;
intra;99 840 (100.00%);
distribution (bits); 
total; 174 352 (100.00%);
split_cu_flag;297 (0.17%);
cu_skip_flag;0 (0.00%);
prediction;  
intra_prediction; 16 653 (9.55%);
... 
Picture #1: 
name;value;
resolution;416 x 240;
size (bytes);  
cu; 978;
prediction; 352;
transform; 511;
...   

Back to list of examples


 

2. Retrieving information on the number of IDR_W_RADL slices and offsets

config.xml:

<?xml version="1.0"?>
<stream version="1"> 
      <input file="C:\Media\hevc\test_12_0_sei.h265"/> 
      <output file="C:\Media\hevc\out\"/> 
      <info> 
            <header level="parameter"> 
                  <condition parameter="IDR_W_RADL" comparison="substring"/>
            </header>  
      </info> 
</stream> 

Output file: 

test_12_0_sei.header.csv:

offset;name;
0x000000AA;slice_segment_layer() { IDR_W_RADL }; 
0x00025F47;slice_segment_layer() { IDR_W_RADL };

Back to list of examples


 

3. Searching for all slices with the slice_type value equal to "2"

config.xml: 

<?xml version="1.0"?> 
<stream version="1"> 
      <input file="C:\Media\hevc\test_12_0_sei.h265"/> 
      <output file="C:\Media\hevc\test_12_0_sei"/> 
      <info> 
            <header> 
                  <condition parameter="slice_type">  
                        <equal value="2"/> 
                  </condition> 
            </header> 
      </info> 
</stream>

Output file:

test_12_0_sei.header.csv: 

offset;name;value;
0x0000009C;slice_segment_layer() { IDR_W_RADL }; 
 first_slice_segment_in_pic_flag;1;
 no_output_of_prior_pics_flag;0;
 slice_pic_parameter_set_id;0;
 slice_type;2;
 slice_sao_luma_flag;1;
 slice_sao_chroma_flag;1;
 slice_qp_delta;6;
 slice_loop_filter_across_slices_enabled_flag;1;
0x0000D21A; slice_segment_layer() { CRA_NUT };  
 first_slice_segment_in_pic_flag;1;
 no_output_of_prior_pics_flag;0;
 slice_pic_parameter_set_id;0;
 slice_type;2;
 slice_pic_order_cnt_lsb; 32;
 short_term_ref_pic_set_sps_flag;0;
 short_term_ref_pic_set(12);  
 if(stRpsIdx != 0);  
...    

Back to list of examples


4. Saving YUV data on the prediction step

config.xml: 

<?xml version="1.0"?> 
<stream version="1"> 
      <input file="C:\Media\hevc\test_12_0_sei.h265"/> 
      <output file="C:\Media\hevc\out\"/> 
      <info> 
            <data type="predicted"/> 
      </info> 
</stream>

Output file:

test_12_0_sei.data.416x240.yuv

Back to list of examples


5. Saving the block info data of the picture

config.xml: 

<?xml version="1.0"?> 
<stream version="1"> 
      <input file="C:\Media\hevc\test_12_0_sei.h265"/> 
      <output file="C:\Media\hevc\out\"/> 
      <info> 
            <block/> 
      </info> 
</stream>

Output file:

test_12_0_sei.block10.csv  

name; value;
lcu location;0x0;
lcu slice\tile idx;0\0;
lcu size total\prediction\transform;17\17\0;
cu type\location\dimension\depth;PART_2Nx2N\0x0\64x64\0;
cu size total\prediction\transform;17\17\0;
tu dimensions\qp;64x64\35;
pu inter dimension\merge_flag\mvp_l0_flag\mvp_l1_flag;64x64\0\0\0;
pu inter type\dimension;2 (Pred_BI)\64x64;
pu L0 mv\mvd;-1, 0, 1 / -1, 0;
pu L1 mv\mvd;-1, 1, 0 / -1, 1;
pu mv candidates;*[0]\mvL0(0,0)\[1]\mvL0(0,0)\*0]\mvL1(0,0)\1]\mvL1(0,0);
lcu location; 64x0;
lcu slice\tile idx;0\0;
... 

Back to list of examples


6. Retrieving information on frame sizes and PSNR values for the first 10 frames.

config.xml: 

<?xml version="1.0"?> 
<stream version="1"> 
      <input file="C:\Media\hevc\test_12_0_sei.h265"/> 
      <output file="C:\Media\hevc\out\"/>
      <reference file="C:\Media\raw\BasketballDrill_832x480_50.yuv"/> 
      <range span="0-10"/> 
      <info> 
            <metrics type="psnr"/>
            <index distribution="off" order="display"/>
      </info> 
</stream>

Output file:

test_12_0_sei.index.csv: 

stream;display;offset;poc;type;time;quant;psnr y;
0;0;0x00000000;0;I;00:00:00:000;32;36.065069;
1;8;0x000042B3;8;B;00:00:00:160;33;36.065069;
2;4;0x00005790;4;B;00:00:00:160;34;36.065069;
...       
10;12; 0x00008343;12;B;00:00:00:240;34;34.808986;

Back to list of examples

Back to table of contents

Resources

On the topic

Product:StreamEye
Category:Features

Feedback

More questions?

Chat nowAsk a question