Graphics tool library (GTL) for the reconfigurable multimedia coding (RMC) framework

Bibliothèque d'outils graphiques (GTL) pour le cadre de codage multimédia reconfigurable (RMC)

General Information

Status
Published
Current Stage
4098 - Project deleted
Start Date
29-Oct-2013
Ref Project

RELATIONS

Buy Standard

Draft
ISO/IEC 23002-4:2010/DAmd 3 - Graphics tool library (GTL) for the reconfigurable multimedia coding (RMC) framework
English language
97 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (sample)

DRAFT AMENDMENT ISO/IEC 23002-4:2010/DAM 3
ISO/IEC JTC 1 Secretariat: ANSI
Voting begins on Voting terminates on
2013-06-25 2013-09-25

INTERNATIONAL ORGANIZATION FOR STANDARDIZATION • МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ • ORGANISATION INTERNATIONALE DE NORMALISATION

INTERNATIONAL ELECTROTECHNICAL COMMISSION • МЕЖДУНАРОДНАЯ ЭЛЕКТРОТЕХНИЧЕСКАЯ КОММИСИЯ • COMMISSION ÉLECTROTECHNIQUE INTERNATIONALE

Information technology — MPEG video technologies —
Part 4:
Video tool library
AMENDMENT 3: Graphics tool library (GTL) for the reconfigurable
multimedia coding (RMC) framework
Technologies de l'information — Technologies vidéo MPEG —
Partie 4: Bibliothèque d'outils vidéo

AMENDEMENT 3: Bibliothèque d'outils graphiques (GTL) pour le cadre de codage multimédia reconfigurable

(RMC)
ICS 35.040

To expedite distribution, this document is circulated as received from the committee

secretariat. ISO Central Secretariat work of editing and text composition will be undertaken at

publication stage.

Pour accélérer la distribution, le présent document est distribué tel qu'il est parvenu du

secrétariat du comité. Le travail de rédaction et de composition de texte sera effectué au

Secrétariat central de l'ISO au stade de publication.

THIS DOCUMENT IS A DRAFT CIRCULATED FOR COMMENT AND APPROVAL. IT IS THEREFORE SUBJECT TO CHANGE AND MAY NOT BE

REFERRED TO AS AN INTERNATIONAL STANDARD UNTIL PUBLISHED AS SUCH.
ES,

IN ADDITION TO THEIR EVALUATION AS BEING ACCEPTABLE FOR INDUSTRIAL, TECHNOLOGICAL, COMMERCIAL AND USER PURPOS

DRAFT INTERNATIONAL STANDARDS MAY ON OCCASION HAVE TO BE CONSIDERED IN THE LIGHT OF THEIR POTENTIAL TO BECOME

STANDARDS TO WHICH REFERENCE MAY BE MADE IN NATIONAL REGULATIONS.

RECIPIENTS OF THIS DRAFT ARE INVITED TO SUBMIT, WITH THEIR COMMENTS, NOTIFICATION OF ANY RELEVANT PATENT RIGHTS OF WHICH

THEY ARE AWARE AND TO PROVIDE SUPPORTING DOCUMENTATION.
International Organization for Standardization, 2013
International Electrotechnical Commission, 2013
---------------------- Page: 1 ----------------------
ISO/IEC 23002-4:2010/DAM 3
COPYRIGHT PROTECTED DOCUMENT
© ISO/IEC 2013

All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized otherwise in any form or by any

means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior written permission.

Permission can be requested from either ISO at the address below or ISO’s member body in the country of the requester.

ISO copyright office
Case postale 56 • CH-1211 Geneva 20
Tel. + 41 22 749 01 11
Fax + 41 22 749 09 47
E-mail copyright@iso.org
Web www.iso.org
Published in Switzerland
ii © ISO/IEC 2013 — All rights reserved
---------------------- Page: 2 ----------------------
ISO/IEC 23002-4:2010/DAM 3
Foreword

ISO (the International Organization for Standardization) and IEC (the International Electrotechnical

Commission) form the specialized system for worldwide standardization. National bodies that are members of

ISO or IEC participate in the development of International Standards through technical committees

established by the respective organization to deal with particular fields of technical activity. ISO and IEC

technical committees collaborate in fields of mutual interest. Other international organizations, governmental

and non-governmental, in liaison with ISO and IEC, also take part in the work. In the field of information

technology, ISO and IEC have established a joint technical committee, ISO/IEC JTC 1.

International Standards are drafted in accordance with the rules given in the ISO/IEC Directives, Part 2.

The main task of the joint technical committee is to prepare International Standards. Draft International

Standards adopted by the joint technical committee are circulated to national bodies for voting. Publication as

an International Standard requires approval by at least 75 % of the national bodies casting a vote.

Attention is drawn to the possibility that some of the elements of this document may be the subject of patent

rights. ISO and IEC shall not be held responsible for identifying any or all such patent rights.

Amendment 3 to ISO/IEC 23002-4:2010 was prepared by Joint Technical Committee ISO/IEC JTC 1,

Information technology, Subcommittee SC 29, Coding of audio, picture, multimedia and hypermedia

information.
© ISO/IEC 2013 – All rights reserved iii
---------------------- Page: 3 ----------------------
DRAFT AMENDMENT ISO/IEC 23002-4:2010/DAM 3
Information technology — MPEG video technologies — Part 4:
Video Tool Library, AMENDMENT 3: Graphics tool library (GTL)
for the reconfigurable multimedia coding (RMC) framework
In 4.1 "FU Interfaces", before Table 1, add the following text:

 In several FU diagrams, the ports are named with a trailing “_i” for the input port type and with a

trailing “_o” for the output port type.

 Some FU diagrams contains as well the Finite State Machine diagram. The following conventions

apply: INPUT - the action of reading a token or a set of tokens from the input port, OUTPUT - the

action of writing the token or a set of tokens to an output port.

 "Parameter" is set at network configuration stage (cannot be changed during the process) and it is

characteristic for each FU
 Token RANGE: describes the mathematical interval for the token value
Examples:
Token RANGE: { 0, 1} – binary value
Token RANGE: [ 0 .. N ], - real values, closed interval
 All the FUs require the data to be in little-endian format.
In 4.2 "FU IDs", complete Table 2 with the following lines:
Note: update the FU table..
ID FU Name
Algo_Parser_SC3DMC
Algo_InverseQuantization1D
Algo_InverseQuantizationND
Algo_InversePrediction1D
Algo_InversePredictionND
Algo_ED_AD_StaticBit
Algo_ED_AD_AdaptiveBit
Algo_ED_VLD
Algo_IDCT
Algo_ConnectivityDecoding_SVA
Algo_DecodeConnectivity_TFAN
Algo_LookUpTable
Algo_InverseLookUpTable
Algo Matrix2Vector1D
Algo_Matrix2VectorND
Algo Interpolate3DVector
© ISO/IEC 2013 – All rights reserved 1
---------------------- Page: 4 ----------------------
ISO/IEC 23002-4:2010/DAM 3
Algo_ Normalize4DVector
Algo_ConjugateQuaternion
Algo_ScaleQuaternion
Algo_ED_AD
Algo_ED_AD_EG
Algo_ED_BitPrecision
Algo_Decode_Symbol
Algo_ArithmeticDecoder_Vector
Algo_Decode_P_Frame
Algo_ED_4bitsD
Algo_ED_FixedLength
Algo_ContextModeling_nType
Algo_ContextModeling_SVA_INDEXES
Algo_ContextModeling_SVA_VERTEX_ATTRIBUTE
Mgnt_Replicate_1_2
Mgnt_Replicate_1_4
Mgnt_Replicate_1_8
100
Mgnt_MUX_2_1
101
Mgnt_MUX_4_1
102
Mgnt_MUX_8_1
103
Mgnt_DEMUX_1_2
104
Mgnt_DEMUX_1_4
105
Mgnt_DEMUX_1_8
106
Mgnt_ExtractSegment
107
Algo_ContextModeling_TFAN
108
Algo_ExtractMask_SC3DMC
109
Algo_ExtractFaceDirection
110
Mgnt_ProviderValue
111 Mgnt_RepeatSegment
112 Mgnt_ExtractBytes
Add 4.4 "Array data order":
4.4 Array data order
 Row based:
The data is processed or sent in a sequential order, row by row
Example:
2 © ISO/IEC 2013 – All rights reserved
---------------------- Page: 5 ----------------------
ISO/IEC 23002-4:2010/DAM 3
 Column based
The data is processed or sent in a sequential order, column by column
Example:
Add 4.5 "Input ports":
4.5 Input ports ( reset_i, init_i, start_i)

An FU does not have an outside synchronization signal or synchronization mechanism. These ports are used

for the purpose of changing the values of the local variables to default or initialization values.

Add 4.6 "FU block diagram notations":
4.6 FU block diagram notations

The notation [EMBED] defines a part of the main FSM schematic that is described as a separate schematic

(for complexity reasons). The [EMBED] schematic is an integrated part of the main FSM schematic

The notation [MODULE] defines a part of the main FSM schematic that is defined as a separate FU. The

module schematic is integrated in the main schematic with the entire FU logic, except the “START” FSM state.

The INPUT/OUTPUT states do not read or write values from the ports, they refer to local variables relative to

the FU that embeds the other schematic.
© ISO/IEC 2013 – All rights reserved 3
---------------------- Page: 6 ----------------------
ISO/IEC 23002-4:2010/DAM 3
Add 5.2 "General Processing FUs":
5.2 General Processing FUs
5.2.1 Algo_InverseQuantization1D
FU Name Algo_InverseQuantization1D
Port Name Direction Token
(I/O) RANGE
dataIn_i I [0, 2 -1]
qp_i I [0, 2 -1]
quantMin_i I [0, 2 -1]
quantRange_i I [0, 2 -1]
segmentSize_i I [0, 2 -1]
quantizationMode_i I [0, 2 -1]
dataOut_o O [0, 2 -1]
Inverse Quantization Process:
START:
INPUT_SEGMENT_PARAM:
INPUT:
quantizationMode
segmentSize
SegmentSizeCounter = 0
IF quantizatioMode = 0
INPUT:
Description quantMin
quantRange
IF ( quantRange > 0.0 )
delta = ( ( 1 << qp ) - 1 ) / quantRange
ELSE
delta = 1.0
IF quantizationMode = 1
INPUT:
INPUT_DATA_IN:
INPUT:
dataIn
IF quantizatioMode = 0
PROCESS:
dataOut = quantMin + (dataIn / delta )
IF quantizatioMode = 1
PROCESS:
dataOut = dataIn / qp
OUTPUT
dataOut
SegmentSizeCounter ++
IF SegmentSizeCounter < segmentSize
GOTO INPUT_DATA_IN
ELSE
GOTO INPUT_SEGMENT_PARAM

The "Inverse Quantization" is an algorithm (step by step procedures) that allows a set of

data to be represented with a limited set of values that are associated with its nearest

representative.

For a number of “segmentSize” of input data (dataIn), it uses the same set of quantMin,

quantRange and quantValue to produce a set of output data (dataOut) of size
“segmentSize”
ISO Standards ISO/IEC 14496-16:2011
4 © ISO/IEC 2013 – All rights reserved
---------------------- Page: 7 ----------------------
ISO/IEC 23002-4:2010/DAM 3
using the FU
Profiles@levels
supported
5.2.2 Algo_InverseQuantizationND
FU Name Algo_InverseQuantizationND
InverseQuantizationND
Port Name Directio Token RANGE
[homogeneousQ]
[dimD]
(I/O)
dataOut_o
dataIn_i
dataIn_i I [0, 2 -1]
quantMin_i
quantRange_i qp_i I [0, 2 -1]
qp_i
quantMin_i I [0, 2 -1]
segmentSize_i 32
quantRange_i I [0, 2 -1]
quantizationMode_i
segmentSize_i I [0, 2 -1]
quantizationMode_i I [0, 2 -1]
dataOut_o O [0, 2 -1]
Inverse Quantization Process:
Description
START:
INPUT_SEGMENT_PARAM
INPUT:
quantizationMode
segmentSize
SegmentSizeCounter = 0
IF quantizatioMode = 0
INPUT:
quantMin [ dimQ ]
quantRange [ dimQ ]
WHILE dimQ_counter < dimQ
IF ( quantRange [ dimQ_counter ] > 0.0 )
delta [ dimQ_counter ] = ( ( 1 << qp ) - 1 ) / quantRange [ dimQ_counter ]
ELSE
delta [ dimQ_counter ] = 1.0;
dimQ_counter++
IF quantizationMode = 1
INPUT:
Qp [ dimQ ]
IF quantizationMode = 2
INPUT:
PROCESS:
Subdivision = (qp - 3) / 2
INPUT_DATA_IN:
INPUT:
dataIn [ dimQ ]
IF quantizatioMode = 0
© ISO/IEC 2013 – All rights reserved 5
---------------------- Page: 8 ----------------------
ISO/IEC 23002-4:2010/DAM 3
PROCESS:

dataOut = quantMin [ segmentSizeCounter%dimD ] + (dataIn / delta [segmentSizeCounter%dimD])

IF quantizatioMode = 1
PROCESS: EMBED Code 2 Normal
IF quantizatioMode = 2
PROCESS:
dataOut = dataIn / qp [ segmentSizeCounter % dimD ]
OUTPUT
dataOut
SegmentSizeCounter ++
IF SegmentSizeCounter < segmentSize
GOTO INPUT_DATA_IN
ELSE
GOTO INPUT_SEGMENT_PARAM
EMBED: Code 2 Normal
Mask = ( 1 << ( 2 * subdivision) ) - 1
tricode = data & mask;
// Find y coordinate by solving 2nd degree equation
factor = 1 << subdivision
y = factor - sqrt ( (factor ) - tricode )
tricode = tricode + ( y * ( y - (2 * factor) ) )
x = tricode / 2
upsideDown = tricode % 2
// Calculate coordinates for all vertices in triangle
v1x = x + upsideDown
v1y = y + upsideDown
v2x = x + 1
v2y = y
v3x = x
v3y = y + 1
// Calculate coordinates of barycenter
invMaxCoord = 1 / factor
normal [ 0 ] = (v1x + v2x + v3x) * invMaxCoord
normal [ 1 ] = (v1y + v2y + v3y) * invMaxCoord
normal [ 2 ] = 3 - normal [ 0 ] - normal [ 1 ]
// Flip component signs if necessary
octantCode = ( data >> 2 * subdivision ) & 0x7
if (octantCode & 0x4)
normal [ 0 ] = (-1) * normal [ 0 ]
if (octantCode & 0x2)
normal [ 1 ] = (-1) * normal [ 1 ]
if (octantCode & 0x1)
normal [ 2 ] = (-1) * normal [ 2 ]
2 2 2
invNorm:= 1 / sqrt ( (normal[ 0 ]) + (normal [ 1 ]) + (normal [ 2 ]) );
//Write the 3 output values
normal [ 0 ] = normal [ 0 ] * invNorm
normal [ 1 ] = normal [ 1 ] * invNorm
normal [ 2 ] = normal [ 2 ] * invNorm
dataOut = normal

The "Inverse Quantization" is an algorithm (step by step procedures) that allows a set of

data to be represented with a limited set of values that are associated with its nearest

representative.

For a number of “segmentSize” x “dimD” of input data (dataIn), it uses the same set of

quantMin, quantRange and quantValue of size “dimD” to produce a set of output data

(dataOut) of size segmentSize” x “dimD”.

For each set of size “dimD” of input data (dataIn) it uses the corresponding value of

quantMin, quantRange and quantValue.
6 © ISO/IEC 2013 – All rights reserved
---------------------- Page: 9 ----------------------
ISO/IEC 23002-4:2010/DAM 3
ISO Standards
ISO/IEC 14496-16:2011
using the FU
Profiles@levels
supported
Parameter
Name Description Type / Range
Type: Integer
Describes the number of tokens of type dataIn_i that are consumed at
dimD
each firing. This parameter is set at the network configuration level.
Range: [1 .. 2 ]
Describes the number of tokens of type quantRange_i, quantMin_i and
Type: Boolean
quantValue_i that are necessary for the inverse quantization process.

homogeneousQ This parameter is set at the network configuration level. The number of

tokens is equal to dimD if this parameter is 0 and the number of tokens Range: {0,1}

is equal to 1 if this parameter is 1
5.2.3 Algo_InversePrediction1D
FU Name Algo_InversePrediction1D
This FU allows five modes of inverse prediction. Not all the ports are used for
each prediction mode. This FU can handle one input token at a time.
Port Name Direction Token
(I/O) RANGE
dataIn_i I [0, 2 -1]
Description
difValue_i I [0, 2 -1]
predMode_i I [0, 2 -1]
fan_i I [0, 2 -1]
dim_i I [0, 2 -1]
n_i I [0, 2 -1]
max_i I [0, 2 -1]
dataOut_o O [0, 2 -1]
© ISO/IEC 2013 – All rights reserved 7
---------------------- Page: 10 ----------------------
ISO/IEC 23002-4:2010/DAM 3
Process Parallelogram Inverse Prediction Schematic (FSM):
Inverse Prediction Process:
Switch ( predMode )
Case 0: NP – No Prediction
Case 1: Diff – Differential Prediction
8 © ISO/IEC 2013 – All rights reserved
---------------------- Page: 11 ----------------------
ISO/IEC 23002-4:2010/DAM 3
Case 2: XOR – based prediction
Case 3: Adaptive Prediction
Case 4: Circular Differential Prediction
Case 5: Parallelogram Inverse Prediction
a = fan ( 0 )
if a not visited
d = 0
WHILE d < dim
dataOut [ a x dim + d ] = dataIn [ a x dim + d ]
d = d + 1
Mark a as visited
If number of vertexes > 3
b = fan ( 1 )
if b not visited
d = 0
WHILE d < dim
dataOut [ b x dim + d ] = dataIn [ b x dim + d ] + dataOut [ a x dim + d ]
d = d + 1
Mark b as visited
c = fan ( 2 )
if c not visited
init h, t
WHILE t = (I,j,k) Triangles incident to vertex a
If ( i=a & j=b & k≠c and k not visited ) h = k, break
If ( i=a & k=b & j≠c and j not visited ) h = k, break
If ( j=a & i=b & k≠c and k not visited ) h = k, break
If ( j=a & k=b & i≠c and i not visited ) h = k, break
If ( k=a & i=b & j≠c and j not visited ) h = k, break
If ( k=a & b=b & i≠c and i not visited ) h = k, break
If h not set
d = 0
WHILE d < dim
dataOut [ c x dim + d ]=dataIn [ c x dim + d ]+ dataOut [ b x dim + d ]
d = d + 1
else
d = 0
WHILE d < dim
dataOut [ c x dim + d ] =
dataIn [ c x dim + d ] + dataOut [ b x dim + d ]
– dataOut [ h x dim + d ] + dataOut [ a x dim + d ]
d = d + 1
Mark c as visited
g = 3, d = 0
WHILE g < fanSize
q = fan ( g )
© ISO/IEC 2013 – All rights reserved 9
---------------------- Page: 12 ----------------------
ISO/IEC 23002-4:2010/DAM 3
if q not visited
WHILE d < dim
dataOut [ q x dim + d ] =
dataIn [ q x dim + d ] + dataOut [ c x dim + d ]
- dataOut [ b x dim + d ] + dataOut [ a x dim + d ]
d = d + 1
b = c
c = q
The detailed description of the inverse parallelogram prediction is described in
Annex E.
ISO Standards
ISO/IEC 14496-16:2011
using the FU
Profiles@levels
supported
Parameter
Name Description Range
5.2.4 Algo_InversePredictionND
FU Name Algo_InversePredictionND
This FU allows five modes of inverse prediction. Not all the ports are used for
each prediction mode. This FU can handle a number of dimD input tokens at
a time.
Port Name Direction Token RANGE
(I/O)
dataIn_i I [0, 2 -1]
difValue_i I [0, 2 -1]
Description
predMode_i I [0, 2 -1]
fan_i I [0, 2 -1]
dim_i I [0, 2 -1]
n_i I [0, 2 -1]
max_i I [0, 2 -1]
dataOut_o O [0, 2 -1]
Process Schematic (FSM):
10 © ISO/IEC 2013 – All rights reserved
---------------------- Page: 13 ----------------------
ISO/IEC 23002-4:2010/DAM 3
Process Parallelogram Inverse Prediction Schematic (FSM):
Inverse Prediction ND Process:
Switch( predMode )
© ISO/IEC 2013 – All rights reserved 11
---------------------- Page: 14 ----------------------
ISO/IEC 23002-4:2010/DAM 3
Case 0: NP – No Prediction
Case 1: Diff – Differential Prediction
Case 2: XOR – based prediction
Case 3: Adaptive Prediction
Case 4: Circular Differential Prediction
Case 5: Parallelogram Inverse Prediction
a = fan ( 0 )
if a not visited
d = 0
WHILE d < dim
dataOut [ a x dim + d ] = dataIn [ a x dim + d ]
d = d + 1
Mark a as visited
If number of vertexes > 3
b = fan ( 1 )
if b not visited
d = 0
WHILE d < dim
dataOut [ b x dim + d ] = dataIn [ b x dim + d ] + dataOut [ a x dim + d ]
d = d + 1
Mark b as visited
c = fan ( 2 )
12 © ISO/IEC 2013 – All rights reserved
---------------------- Page: 15 ----------------------
ISO/IEC 23002-4:2010/DAM 3
if c not visited
init h, t
WHILE t = (I,j,k) Triangles incident to vertex a
If ( i=a & j=b & k≠c and k not visited ) h = k, break
If ( i=a & k=b & j≠c and j not visited ) h = k, break
If ( j=a & i=b & k≠c and k not visited ) h = k, break
If ( j=a & k=b & i≠c and i not visited ) h = k, break
If ( k=a & i=b & j≠c and j not visited ) h = k, break
If ( k=a & b=b & i≠c and i not visited ) h = k, break
If h not set
d = 0
WHILE d < dim
dataOut [ c x dim + d ]=dataIn [ c x dim + d ]+ dataOut [ b x dim + d ]
d = d + 1
else
d = 0
WHILE d < dim
dataOut [ c x dim + d ] =
dataIn [ c x dim + d ] + dataOut [ b x dim + d ]
– dataOut [ h x dim + d ] + dataOut [ a x dim + d ]
d = d + 1
Mark c as visited
g = 3, d = 0
WHILE g < fanSize
q = fan ( g )
if q not visited
WHILE d < dim
dataOut [ q x dim + d ] =
dataIn [ q x dim + d ] + dataOut [ c x dim + d ]
- dataOut [ b x dim + d ] + dataOut [ a x dim + d ]
d = d + 1
b = c
c = q
The detailed description of the inverse parallelogram prediction is described
in Annex E.
ISO Standards
ISO/IEC 14496-16:2011
using the FU
Profiles@levels
supported
Parameter
Name Description Range
Type: Integer
Describes the number of tokens of type dataIn_i
dimD that are consumed at each firing. This parameter
is set at the network configuration level. Range: [1 .. 2 ]
© ISO/IEC 2013 – All rights reserved 13
---------------------- Page: 16 ----------------------
ISO/IEC 23002-4:2010/DAM 3
5.2.5 Algo_ED_AD_StaticBit
FU Name Algo_ED_AD_StaticBit
This FU describes the arithmetic decoding process based on a static bit model.
Port Name Direction Token
(I/O) RANGE
Bit_0_prob_i I [0, 2 -1]
valueIn_i I [0, 2 -1]
length_i I [0, 2 -1]
valueOut_o O [0, 2 -1]
lengthOut_o O [0, 2 -1]
bit_o O [0, 2 -1]
Process Schematic (FSM):
Description
ED_AD_StaticBit Process:
START
INPUT:
Bit_0_prob_i
lengthIn_i
valueIn_i
product = bit_0_prob * ( lengthIn >> BM_LengthShift )
bit = ( valueIn >= product )
if ( bit == 0 )
valueOut = valueIn
lengthOut = product
else
valueOut = valueIn – product
lengthOut = lengthIn – product
OUTPUT:
valueOut_o
lengthOut_o
GOTO START
ISO Standards
ISO/IEC 14496-16:2011
using the FU
Profiles@levels
supported
Parameter
Name Description Range
Describes the threshold for renormalization. This Type:Unsigned Integer
AC__MinLength
parameter is set at the network configuration level. Range: [1 .. 2 ]
Describes the length bits discarded before
Type:Unsigned Integer
BM__LengthShift multiplication. This parameter is set at the network
Range: [1 .. 2 ]
configuration level.
14 © ISO/IEC 2013 – All rights reserved
---------------------- Page: 17 ----------------------
ISO/IEC 23002-4:2010/DAM 3
5.2.6 ED_AD_AdaptiveBit
FU Name Algo_ED_AD_AdaptiveBit

This FU describes the arithmetic decoding process based on a adaptive bit model as

presented in [3,4].
Port Name Direction Token RANGE
(I/O)
valueIn_i I [0, 2 -1]
length_i I [0, 2 -1]
reset_i I [0,1]
valueOut_o O [0, 2 -1]
lengthOut_o O [0, 2 -1]
bit_o O [0, 2 -1]
Process Schematic (FSM):
ED_AD_AdaptiveBit Process:
START
If reset = 1
bit_0_count = 1;
bit_count = 2;
bit_0_prob = 1U << (BM__LengthShift - 1);
Description
update_cycle = bits_until_update = 4;
product = bit_0_prob * ( lengthIn >> BM_LengthShift )
bit = ( valueIn >= product )
if ( bit == 0 )
valueOut = valueIn
lengthOut = product
++bit_0_count
else
valueOut = valueIn – product
lengthOut = lengthIn – product
if (bit_count += update_cycle) > BM__MaxCount
bit_count = (bit_count + 1) >> 1
bit_0_count = (bit_0_count + 1) >> 1
if bit_0_count = bit_count
++bit_count
scale = scaleMax / bit_count;
bit_0_prob = (bit_0_count * scale) >> (31 - BM__LengthShift);
update_cycle = (5 * update_cycle) >> 2;
if update_cycle > 64
update_cycle = 64;
bits_until_update = update_cycle;
GOTO START
ISO Standards
ISO/IEC 14496-16:2011
using the FU
Profiles@levels
supported
Parameter
Name Description Range
© ISO/IEC 2013 – All rights reserved 15
---------------------- Page: 18 ----------------------
ISO/IEC 23002-4:2010/DAM 3
Describes the threshold for renormalization. This Type:Unsigned Integer
AC__MinLength
parameter is set at the network configuration level. Range: [1 .. 2 ]
Describes the length bits discarded before
Type:Unsigned Integer
BM__LengthShift multiplication. This parameter is set at the network 5
Range: [1 .. 2 ]
configuration level.
Describes the max value to compute the scaled bit 0
Type:Unsigned Integer
scaleMax probability. This parameter is set at the network 32
Range: [1 .. 2 ]
configuration level.
5.2.7 Algo_ED_VLD
FU Name Algo_ED_VLD
This FU describes the Variable Length Decoding process.
Port Name Direction Token
(I/O) RANGE
dataIn_i I [0, 2 -1]
table_i I [0, 2 -1]
size_i I [0, 2 -1]
position_o O [0, 2 -1]
Process Schematic (FSM):
Description
ED_VLD Process:
START
SET valid[size] = 1
SET n = 1
If valid[j] = 1
If dataIn=table[j][n]
If table[j][0] = n
dataOut = j
else
valid[j] = 0
j = j + 1
WHILE j < size
n = n + 1
WHILE n < nBits
GOTO START
The matrix tokens have to be send column based.
ISO Standards
ISO/IEC 14496-16:2011
using the FU
Profiles@levels
supported
Parameter
16 © ISO/IEC 2013 – All rights reserved
---------------------- Page: 19 ----------------------
ISO/IEC 23002-4:2010/DAM 3
Name Description Range
Describes the length of the bits used for the
Type: Integer
nBits search algorithm. This parameter is set at the 5
Range: [1 .. 2 ]
network configuration level.
5.2.8 Algo_ED_BitPrecision
FU Name Algo_ED_BitPrecision
This FU describes the Entropy Decoding Bit Precision processes.
ED_BitPrecision Port Name Direction Token
[PREFIX_SIZE_LEN ] (I/O) RANGE
dataIn_i I [0, 2 -1]
dataIn_i
numberOfData_i numerOfData_i I [0, 2 -1]
dataOut_o
dim_i
dim_i I [0, 2 -1]
postProcessing_o
hasSign_i
hasSign_i I {0,1}
sing_o
hasPrediction_i
hasPrediction_i I {0,1}
BPLTable_i
BPLTable_i I [0, 2 -1]
BPLTableSize_i
BPLTableSize_i I [0, 2 -1]
dataOut_o O [0, 2 -1]
postProcessing_o O {0,1}
predsOut_o O [0, 2 -1]
ED_BitPrecision Schematic (FSM):
Description
ED_BitPrecision process:
START
INPUT: BPLTableSize
INPUT: BPLTable [ BPLTableSize ]
INPUT: dataIn { PREFIX_SIZE_LEN }
INPUT: numberOfData
INPUT: dim
INPUT: hasSign
INPUT: hasPrediction
prefixSize = dataIn
j = 0
if hasSign = 1 & hasPrediction = 0
WHILE j < numberOfData * dim
INPUT: dataIn { prefixSize }
nBPL = dataIn
if nBPL > 2
INPUT: dataIn [ nBPL – 1 ]
nPayLoad = dataIn
else
nPayLoad = 0
difValue = BPLTable [ nBPL ] + nPayLoad
if difValue != 0
INPUT: dataIn { 1 }
nSign = dataIn
sign = nSign
postProcessing = 1
dataOut = difValue
© ISO/IEC 2013 – All rights reserved 17
j < numberOfData * dim
else
j < numberOfData * dim
j < numberOfData * dim
else nBPL > 2
else nBPL > 2
difValue != 0 else
difValue != 0 else
else nBPL > 2
---------------------- Page: 20 ----------------------
ISO/IEC 23002-4:2010/DAM 3
OUTPUT: dataOut
OUTPUT: postProcessing_o
OUTPUT: sign_o
j = j + 1
else if hasSign = 0 & hasPrediction = 0
WHILE j < numberOfData * dim
INPUT: dataIn { prefixSize }
nBPL = dataIn
if nBPL > 2
INPUT: dataIn [ nBPL – 1 ]
nPayLoad = dataIn
else
nPayLoad = 0
difValue = BPLTable [ nBPL ] + nPayLoad
dataOut = difValue
postProcessing = 0
sign = 0
OUTPUT: dataOut
OUTPUT: postProcessing_o
OUTPUT: sign_o
j = j + 1
else if hasSign = 0 & hasPrediction = 1
signDef[2] = { 1,-1 }
WHILE j < numberOfData * dim
predsOut [ j ] = 0
INPUT: dataIn { 2 }
nPred = dataIn
preds += nPred
WHILE nPred != 3
INPUT: dataIn [ prefixSize ]
nBPL = dataIn
if ( nBPL > 2 )
INPUT: dataIn [ nBPL – 1 ]
nPayLoad = dataIn
else
nPayLoad = 0
difValue = BPLTable [ nBPL ] + nPayLoad
postProcessing = preds
if postProcessing != 0
sign = signDef [ difValue % 2 ]
else
sign = 1
OUTPUT: dataOut
OUTPUT: postProcessing_o
OUTPUT: sign_o
j = j + 1
else if hasSign = 1 & hasPrediction = 1
GOTO START
GOTO START
An input of size {N} has the meaning of a input of a N-size bit value.
ISO Standards
ISO/IEC 14496-16:2011
using the FU
Profiles@levels
supported
Parameter
Name Description Range
Type:Unsigned Integer
Describes the length of the prefix value in the
PREFIX_SIZE_LE
stream. This parameter is set at the network
configuration level. Range: [1 .. 2 ]
18 © ISO/IEC 2013 – All rights reserved
---------------------- Page: 21 ----------------------
ISO/IEC 23002-4:2010/DAM 3
5.2.9 Algo_ED_AD
FU Name Algo_ED_AD
This FU describes the Entropy Decoding Arithmetic Decoding processes.
Port Name Direction Token
ED_AD
(I/O) RANGE
[ SCALE_RANGE ]
[ USE_VALIDATION_MASK ]
[ DM__LengthShift ] numberOfData_i I [0, 2 -1]
[ AC_MaxLength ]
dim_i I [0, 2 -1]
numberOfData_i
symbolOut_o
codeBytes_i I [0, 2 -1]
dim_i
postProcessing_o
codeBytes_i
codeBuffer_i I [0, 2 -1]
sing_o
codeBuffer_i
nModels_i I [0, 2 -1]
validationMask_i I { 0, 1 }
nModels_i
nSymbols_i I [0, 2 -1]
validationMask_i
nSymbols_i hasSign_i I { 0, 1 }
hasSign_i
hasPrediction_i I { 0, 1 }
hasPrediction_i
hasNext_i I { 0, 1 }
hasNext_i
delimTableSize_i I [0, 2 -1]
delimTable_i
delimTableSize_i delimTable_i I [0, 2 -1]
symbolOut_o O [0, 2 -1]
postProcessing_o O { 0, 1 }
sign_o O { 0, 1 }
ED_AD Schematic (FSM):
USE_VALIDATION_MASK = 1
else else
Loop until is available: Loop until is available:
Loop until is available:
Loop until is available:
- nModels Loop until is available:
- codeBytes - codeBuffer[codeBytes]
- validationMask[nModels]
- nSymbols
nModels != 0
[INPUT]: [EMBED]:
[INPUT]:
[INPUT]: [INPUT]: [STORE]:
numberOfData_i [PROCESS]:
[INPUT]: validationMask_i [GenerateAlphabet]
START codeBuffer_i nSymbols_i model [ modelIndex ]
dim_i modelIndex = 0
nModels_i [nModels]
[ codeBytes ]
codeBytes_i
USE_VALIDATION_MASK = 1
validationMask
[modelIndex] = 1
else
else
hasSign = 1
k < nModels [PROCESS]:
[EMBED]: modelIndex++
[PROCESS]: [STORE]:
[INPUT]:
[GenerateAlphabet]
nSymbols = 2
hasSign_i sign [ modelIndex ]
else
Description
hasPrediction = 1
[EMBED]:
[INPUT]:
[INPUT]: [STORE]:
[GenerateAlphabet]
nSymbols_i
hasPrediction_i pred [ modelIndex ]
else
hasNext = 1
[EMBED]:
[INPUT]: [PROCESS]: [STORE]:
[GenerateAlphabet]
hasNext_i nSymbols = 2 next [ modelIndex ]
else
else
else
else
USE_VALIDATION_MASK = 1 validationMask[modelIndex] = 1
pred[modelIndex] = 1
[PROCESS]: [EMBED]:
[INPUT]: [PROCESS]:
[INPUT]:
delimTable_i modelIndex = 0 [AD_Decode] magnitude = 0
delimTableSize_i
[delimTableSize] j = 0 prediction_d = symbolOut delimCount = 0
else
next_d = 1
next[modelIndex] = 1
[EMBED]: [EMBED]:
[PROCESS]:
[AD_Decode]
[AD_Decode] Magnitude
next_d = symbolOut
magnitude_d = symbolOut delimCount++
else
else
magnitude != 0 sign_d = 1
sign[modelIndex]
= 1
[EMBED]:
[PROCESS]:
[AD_Decode]
Magnitude
sign_d = symbolOut
else
else
else
modelIndex < nModels
j < numberOfData * dim
[PROCESS]:
[PROCESS]: [OUTPUT]:
symbolOut_o modelIndex++
symbolOut
postProcessing_o j++
postProcessing
else
else
Generate Alphabet Process Schematic (FSM):
© ISO/IEC 2013 – All rights reserved 19
---------------------- Page: 22 ----------------------
ISO/IEC 23002-4:2010/DAM 3
Update - Process Schematic (FSM):
else
[PROCESS]:
distribution [ k ]
sum
k = k + 1
k < dataSymbols
else
[PROCESS]:
totalCount = 0
k = 0 [PROCESS]:
[PROCESS]:
h = 0 totalCount
scale
s = 0 n = n + 1
n = 0
sum
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.