M13905_on_the_meta_data_statements by nuhman10

VIEWS: 9 PAGES: 8

									  INTERNATIONAL ORGANISATION FOR STANDARDISATION
   ORGANISATION INTERNATIONALE DE NORMALISATION
                ISO/IEC JTC1/SC29/WG11
        CODING OF MOVING PICTURES AND AUDIO
                                                        ISO/IEC JTC1/SC29/WG11
                                                                MPEG2006/M13905
                                                     October 2006, Hangzhou, China


Source: Siemens AG
Status: Proposal
Title: Improvements of SVC file format meta data statements
Author: Thomas Rathgen (Ilmenau Technical University), Peter Amon (Siemens
AG), Andreas Hutter (Siemens AG)


Introduction
This contribution proposes enhancements and refinements of the meta data support for
the SVC file format.

1 General Considerations
The SVC Meta Data Sample Entry should be optionally extendable by one statement (or
a groupOfStatements resp.) to describe the entire track. This might hold e.g. a mapping
from tierId to priority_id.

There should be one user statement type allowing of 32 bit length field to enable more
complex descriptions for an item.
Proposal: statement_type == 255

Meta data describing an Extractor should hold data about the referenced video data: an
Extractor might be described with a groupOfStatements containing an Extractor
statement followed by statements about the extracted data.

There should be no statements about SEI NAL units, since SEI messages might be used
to transport statements. SEI NAL units should not be counted in a sequenceOfStatements.

2 Meta Data Statements
We propose the following changes and additions:

     241. sequenceOfStatements: the contents of the statement are exactly a set of
          statements, which describe, in one-to-one correspondence, the contents of a
          sample, extractor or aggregator (note that the inlinesequenceOfStatements
          corresponds to one or more NAL units)



                                          1
242. inlineSequenceOfStatements: this structure can be used to describe a
     consecutive set of items (NAL units). This structure starts with a one-byte
     count of the number of items described, and then describes all these items
     together with a number of statements (like a groupOfStatements). Note that an
     inlineSequenceOfStatements represents as much items as specified by the
     value of count if used within a sequenceOfStatements. If individual statements
     about each item are also desired, a sequenceOfStatements may be included to
     describe these items individually. In this case an included
     sequenceOfStatements shall describe as much items as specified by the value
     of count.
243. sampleStatement: indicates that the item described is a meta data sample. This
     statement is used only for transport of meta data samples in a user
     unregistered SEI message (as described below). This statement shall not be
     present in a meta data track. This statement holds the contents of the meta data
     sample as payload (like a groupOfStatements).

128. NALuHeaderStatement: contains a copy of the NAL unit header of the
     described NAL.
     Syntax:
     class NALuHeaderStatementData(size) {
        bit(1) forbidden_zero_bit;
        bit(2) nal_ref_idc;
        bit(5) nal_unit_type = AggregatorNALUnitType = const(30);
        bit(2) reserved_zero_two_bits;
        bit(6) priority_id;
        bit(3) temporal_level;
        bit(3) dependency_id;
        bit(2) quality_level;
        bit(1) reserved_zero_one_bit;
        bit(1) layer_base_flag;
        bit(1) use_base_prediction_flag;
        bit(1) discardable_flag;
        bit(1) fragmented_flag;
        bit(1) last_fragment_flag;
        bit(2) fragment_order;
     }

     Semantics:
     Semantics is as defined in the SVC spec.
129. itemLengthStatement: … (see current text)
130. aggregatorStatement: indicates that the item described is an Aggregator. In
     one application the Aggregator is described by groupOfStatements, containing
     an      aggregatorStatement,      a     priorityRangeStatement     and     a
     sequenceOfStatements describing the NAL units aggregated. An
     aggregatorStatement contains no payload.
131. extractorStatement: indicates that the item described is an Extractor. In a
     common application the Extractor is described by groupOfStatements,
     containing an extractorStatement, and e.g. a NALuHeaderStatement
     describing the NAL unit referenced. An extractorStatement contains no
     payload.


                                       2
132. overridePriorityStatement:
     Syntax:
     class overridePriorityStatementData(size) {
        bit(1) P_based_extraction;
        bit(1) reserved;
        bit(6) priority_id;
     }

     Semantics:
     Contains a value for priority_id which might replace the priority_id value in
     the NAL unit header of the corresponding NAL unit.
     If P_based_extraction is set then just the value of priority_id might be used
     for extraction (priority_id based extraction). P_based_extraction not set
     means additional values might be taken into account for extraction.
133. priorityRangeStatement:
     Syntax:
     class priorityRangeStatementData(size) {
        bit(2) reserved;
        bit(6) min_priority_id;
        bit(2) reserved;
        bit(6) max_priority_id;
     }

     Semantics:
     Contains the lowest and the highest priority_id values in the matching NAL
     units.
134. DTQRangeStatement:
     Syntax:
     class DTQRangeStatementData(size) {
        bit(3) min_dependecy_id;
        bit(3) min_temporal_level;
        bit(2) min_quality_level;
        bit(3) max_dependecy_id;
        bit(3) max_temporal_level;
        bit(2) max_quality_level;
     }

     Semantics:
     Contains the lowest and the highest DTQ values in the matching NAL units.
135. qualityLayerStatement: specifies the number of bytes that should be extracted
     for the i-th quality layer. This only applies for progressive refinement NAL
     units.
     Syntax:
     class qualityLayerStatementData(size) {
        unsigned int(6) num_quality_layers;
        unsigned int(2) length_size_minus_one;
        for (i=0; i< num_quality_layers; i++) {
           unsigned int(8*(length_size_minus_one+1))
                       delta_quality_layer_byte_offset[i];
        }
     }



                                     3
           Semantics:
           num_quality_layers - gives the number of entries following.
           length_size_minus_one        -    gives       the      size of               the
           delta_quality_layer_byte_offset values minus one. The value can            be of
           0, 1 or 3.
           delta_quality_layer_byte_offset[i]           - specifies the number of bytes that
           should be extracted for the i-th quality layer (as specified in SVC).


3 Transport of Meta Data Statements
It is explicitly allowed to ‘export’ a meta data sample or parts of a meta data sample into
an user unregistered SEI message, e.g. if signaling of some information for all NAL units
or for a particular NAL unit is required. This enables the meta data to be used outside the
file format.
Such SEI message may contain
      a) all meta data statements of a meta data sample (encapsulated in a Sample
         statement)
      b) a groupOfStatements or a sequenceOfStatements
      c) a single statement.
There could be one or more SEI NAL units containing such SEI messages per sample.
All SEI messages containing statements are to be transmitted before the first VCL NAL
unit of the layer picture they describe because the AVC spec. specifies that all SEI
messages must be transmitted before any NAL unit of the primary coded picture.
<<question to the JVT: is each layer picture a primary coded picture? What about FGS
pictures?>> This enables these SEI messages to be discarded easily, if the corresponding
VCL NAL units are discarded, e.g. in an adaptation operation. Alternatively, all SEI
messages might be transmitted before any other NAL unit of a sample.
SEI NAL units may contain one ore more statement SEI messages. If an SEI NAL unit
respectively the included SEI message does not contain a sample statement, then the
statements within the SEI message will act as statements in a sequence of statements
(sequenceOfStatements about the whole sample). The sequence of all the statements in
all of these SEI messages (in order) shall reflect the structure of NAL units in the media
data sample.
There shall be no statements about SEI messages; in particular SEI messages are not
counted in a sequence of NAL units.

Syntax:
user_data_unregistered_SEI_payload( payloadSize ) {
   unsigned int i=16;
   uuid_iso_iec_11578 = const <<to be defined 1>>;
   do {
      statement(size);
      i+=size;
   } while (i < payloadSize);
}




                                             4
In case dynamically assigned statements are transmitted (type range 1..127, 255), the
assignment shall be placed within a user unregistered SEI message which is to be
transmitted before every meta data SEI message.
Syntax:
user_data_unregistered_SEI_payload( payloadSize ) {
   unsigned int i;
   uuid_iso_iec_11578 = const <<to be defined 2>>;
   unsigned int(8) entry_count;
   for (i=1; i<entry_count; i++) {
      unsigned int(8) statement_type;
      string statement_namespace;
   }
}

Semantics:
See SVC meta data sample entry semantics.


4 Examples of use
4.1 Example 1
The media sample to be described:
    SEI NU
    base layer NU 1
    aggregator NU 2 containing {
       enhancement layer NU 2.1
       enhancement layer NU 2.2
    }
    another enhancement layer NU 3

This is one possible meta-data sample that might describe it:
{
    some statement about the whole sample
    sequenceOfStatements {
       // no statement about the SEI
       groupOfStatements {
          NU header 1 statement
          some other statement about NU 1
       }
       groupOfStatements {
          aggregator statement
          NU header statement for the aggregator
          some other statement about the whole aggregation
          sequenceOfStatements {
             NU header 2.1 statement
             groupOfStatements {
                NU header 2.2 statement
                some other statement about NU 2.2
             }
          }
       }
       emptyStatement about NU 3
    }


                                            5
4.2 Example 2
The media sample to be described:
    base layer NU 1
    enhancement layer     NU   2
    enhancement layer     NU   3
    enhancement layer     NU   4
    enhancement layer     NU   5

This is one possible meta-data sample that might describe it:
{
    sequenceOfStatements {
       overridePriority statement for NU 1;
       inlineSequenceOfStatements(count=3) {
          priorityRangeStatement for the next 3 NU
          some other statement about the next 3 NU
          sequenceOfStatements {
             overridePriority statement for NU 2
             overridePriority statement for NU 3
             overridePriority statement for NU 4
          }
       }
       overridePriority statement for NU 5
    }
}

4.3 Example 3
This example illustrates the preparation for meta data transport with SEI messages.

The media sample to be described:
    base layer NU 1
    base layer NU 2
    aggregator NU 3 containing {
       enhancement layer NU 3.1
       enhancement layer NU 3.2
    }
    another enhancement layer NU 4

This is one possible meta-data sample that might describe it:




                                            6
{
    some statement about the whole sample
    sequenceOfStatements {
       groupOfStatements {
          NU header 1 statement
          some other statement about NU 1
       }
       NU header 2 statement
       groupOfStatements {
          aggregator statement
          NU header statement for the aggregator
          some other statement about the whole aggregation
          sequenceOfStatements {
             NU header 3.1 statement
             groupOfStatements {
                NU header 3.2 statement
                some other statement about NU 3.2
             }
          }
       }
       emptyStatement about NU 4
    }
}

This shows encapsulating the statements within a single SEI message:
SEI NU {
    statementSEI {
       sampleStatement {
          some statement about the whole sample
          sequenceOfStatements {
              empty statement about the SEI
              groupOfStatements {
                 NU header 1 statement;
          ...
          }
          emptyStatement about NU 4
       }
    }
}
base layer NU 1
base layer NU 2
...

Alternatively statements describing a layer picture might be placed in separate SEI
messages:




                                           7
SEI NU {
    statementSEI {
       sampleStatement {
          some statement about the whole sample
       }
    }
}
SEI NU {
    statementSEI {
       groupOfStatements {
          NU header 1 statement
          some other statement about NU 1
       }
    }
    statementSEI {
       NU header 2 statement
    }
}
base layer NU 1
base layer NU 2
SEI NU {
    statementSEI {
       groupOfStatements{
          some other statement about all NU in the aggregation
          sequenceOfStatements {
             NU header 3.1 statement
             groupOfStatements {
                NU header 3.2 statement
                some other statement about NU 3.2
             }
          }
       }
    }
}
enhancement layer NU 3.1
enhancement layer NU 3.2
...




Acknowledgements
This work has been co-funded by IST European project PHOENIX under contract FP6-
2002-IST-1-001812.




                                       8

								
To top