ISO/IEC 14496-1:2001/Amd 1:2001
(Amendment)Information technology — Coding of audio-visual objects — Part 1: Systems — Amendment 1: Extended BIFS
Information technology — Coding of audio-visual objects — Part 1: Systems — Amendment 1: Extended BIFS
Technologies de l'information — Codage des objets audiovisuels — Partie 1: Systèmes — Amendement 1: BIFS étendus
General Information
Relations
Standards Content (Sample)
INTERNATIONAL ISO/IEC
STANDARD 14496-1
Second edition
2001-10-01
AMENDMENT 1
2001-10-15
Information technology — Coding of
audio-visual objects —
Part 1:
Systems
AMENDMENT 1: Extended BIFS
Technologies de l'information — Codage des objets audiovisuels —
Partie 1: Systèmes
AMENDEMENT 1: BIFS étendus
Reference number
ISO/IEC 14496-1:2001/Amd.1:2001(E)
©
ISO/IEC 2001
---------------------- Page: 1 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
PDF disclaimer
This PDF file may contain embedded typefaces. In accordance with Adobe's licensing policy, this file may be printed or viewed but shall not
be edited unless the typefaces which are embedded are licensed to and installed on the computer performing the editing. In downloading this
file, parties accept therein the responsibility of not infringing Adobe's licensing policy. The ISO Central Secretariat accepts no liability in this
area.
Adobe is a trademark of Adobe Systems Incorporated.
Details of the software products used to create this PDF file can be found in the General Info relative to the file; the PDF-creation parameters
were optimized for printing. Every care has been taken to ensure that the file is suitable for use by ISO member bodies. In the unlikely event
that a problem relating to it is found, please inform the Central Secretariat at the address given below.
© ISO/IEC 2001
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized in any form or by any means, electronic
or mechanical, including photocopying and microfilm, without permission in writing 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.ch
Web www.iso.ch
Printed in Switzerland
ii © ISO/IEC 2001 – All rights reserved
---------------------- Page: 2 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
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.
International Standards are drafted in accordance with the rules given in the ISO/IEC Directives, Part 3.
In the field of information technology, ISO and IEC have established a joint technical committee ISO/IEC JTC 1.
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 Amendment may be the subject of patent
rights. ISO and IEC shall not be held responsible for identifying any or all such patent rights.
Amendment 1 to International Standard ISO/IEC 14496-1:2001 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 2001 – All rights reserved iii
---------------------- Page: 3 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
Information technology — Coding of audio-visual objects —
Part 1:
Systems
AMENDMENT 1: Extended BIFS
1) Add the following at the end of subclause 8.6.15.3.1:
"
class QoS_Qualifier_REBUFFERING_RATIOextends QoS_Qualifier : bit(8) tag=0x02 {
bit(8) REBUFFERING_RATIO;
}
"
2) Add the following at the end of subclause 8.6.15.3.2:
"
REBUFFERING_RATIO – Ratio of the decoding buffer that should be filled in case of prebuffering or
rebuffering. The ratio is expressed in percentage, with an integer value between 0 and 100. Values
outside that range are reserved.
8.6.15.3.2.1 Rebuffering
In certain scenarios the System Decoder Model cannot be strictly observed. This is the case of e.g. file
retrieval scenarios in which the data is pulled from a remote server over a network with unpredictable
performances. In such a case prebuffering and/or rebuffering may be required in order to allow for a
better quality in the user experience. Note that scenarios involving real time streaming servers do not fall
in this category, since a streaming server presumably delivers content according to the appropriate
timeline.
An elementary stream is prebuffered when the decoder waits until the decodingBuffer has been filled up
to a certain threshold before starting fetching data from it.
An elementary stream is rebuffered when a decoder stops fetching data from the decodingBuffer and
before resuming fetching data waits until that buffer has been filled again up to a certain threshold.
In order to inform a receiver whether a certain elementary stream requires prebuffering and/or
rebuffering the QoS_Qualifier_REBUFFERING_RATIO qualifier can be included in the Elementary
Stream Descriptor (see subclause 8.6.15.3.1). By default, in the absence of such qualifier, an elementary
stream does not require pre-buffering or rebuffering.
"
© ISO/IEC 2001 – All rights reserved
1
---------------------- Page: 4 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
3) Replace Table 31 (Compensation process) in subclause 9.3.4 by the following:
"
Table 31 — Compensation process for multiple fields and BIFS-Anim
quantType animType
Compensation Process
2
1,2,4,6,7,8, 1,2,4,6,7,8 The components of v are:
q
9 (other than 11,12,13
vq2[i] = vq1[i] + vDelta[i]
SFVec3fType),
10 (other than
SFRotationType),
11,12,13
9 (SFVec3fType), 9,10 The addition is first performed component by component and stored in a temporary array:
10 (SFRotation)
vqTemp[i] = vq1[i] + vDelta[i].
max(0,nbBits�1)
Letscale = 2 �1 .
LetN the number of reduced components (2 for normals, 3 for rotations)
There are then three cases are to be considered:
2
For every index I,
v is defined by,
q
vqTemp[i] � scale
vq2[i] = vqTemp[i]
orientation2= orientation1
direction2 = direction1 * inverse
2
There is one and only one
v is rescaled as if gliding on the faces of the mapping cube.
q
index k such that
Letinv =1 ifvqTemp[k]>=0 and –1else
vqTemp[k] � scale
LetdOri =k+1
The components of vq2 are computed as follows
vq2[i] = inv*vqTemp[(i+dOri) mod N]
0� i� N - dOri
i � N - dOri
vq2[i] = inv*2*scale–vqTemp[dOri–1]
N - dOri� i � N
vq2[i] = inv*vqTemp[(i+dOri-1) mod N]
orientation2 = (orientation1 + dOri) mod (N+1)
direction2 = direction1 * inverse * inv
There are several indices The result is undefined
k such that
vqTemp[k] � scale
Note: The BIFS-Anim process is identical to the process applied for optimal encoding of BIFS multiple
fields.
"
4) Replace the reserved bit in subclause 9.3.5.3.1 by the following:
"
bit(1) usePredictiveMFField;
"
2 © ISO/IEC 2001 – All rights reserved
---------------------- Page: 5 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
5) Insert the following in subclause 9.3.5.3.2 at the end of the second paragraph (on the
use3DmeshCoding):
"
The usePredictiveMFField flag is used to signal that the syntax for predictive MFField instead of the
non-predictive mode is used to encode IndexedFaceSet nodes. This flag is used for terminals supporting
this tool.
"
6) Replace subclause 9.3.7.2.4 (PROTOcode) by the following subclauses:
"
9.3.7.2.4 PROTOcode
9.3.7.2.4.1 Syntax
class PROTOcode(isedNodeData protoData) {
bit(1) isExtern
if (isExtern) {
MFUrl locations;
}else{
PROTOlist subProtos;
}
do {
SFNode node(SFWorldNodeType,protoData);
bit(1) moreNodes;
} while (moreNodes);
bit(1) hasROUTEs;
if (hasROUTEs) {
ROUTEs routes();
}
}
9.3.7.2.4.2 Semantics
First a flag signals whether the prototype is a PROTO, which then has his code included in the proto
declaration, or if is an EXTERNPROTO, in which case only an external reference is provided. The
EXTERNPROTO is an authoring facility that enables to distribute PROTOs in external libraries and be
reused across scenes. The EXTERNPROTO opens a BIFSCommand stream that contains a ReplaceScene
command with a BIFSScene with the PROTO definitions. The EXTERNPROTO code is found in the
PROTO in this new scene with the same ID in this scene. The nodes that may be contained in this scene
are ignored.
In case of a PROTO, the PROTOcode contains a (possibly empty) list of the sub-PROTOs of this
PROTO in subProtos, followed by the code to execute the PROTO. The code is specified as a set of
SFNodes, using a standard SFNode definition with the additional possibility to declare an IS field.
Moreover, the PROTO body may contain ROUTEs if the hasROUTE flag is set to 1.
"
© ISO/IEC 2001 – All rights reserved 3
---------------------- Page: 6 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
7) Replace subclause 9.3.7.6 (Field) with the following subclauses:
"
9.3.7.6 Field
9.3.7.6.1 Syntax
class Field(FieldData field) {
if (isSF(field))
SFField svalue(field);
else {
if (BIFSConfig.usePredictiveMFField == 1) {
bit(1) usePredictive;
if (usePredictive)
PredictiveMFField mvalue(field);
else
MFField mvalue(field);
}
else {
MFField mvalue(field);
}
}
}
9.3.7.6.2 Semantics
A field is encoded according to its type: single (SFField) or multiple (MFField). A multiple field is a
collection of single fields.
"
8) Add the following as new subclauses after subclause 9.3.7.9 (MFVectorDescription):
"
9.3.7.10 PredictiveMFField
9.3.7.10.1 Syntax
class PredictiveMFField (FieldData field) {
AnimFieldQP aqp = new AnimFieldQP();
aqp.useDefault = FALSE;
field.aqp = aqp;
ArrayHeader header(field);
ArrayOfValues values(field);
}
9.3.7.10.2 Semantic
The array of data is composed of a Header,andan ArrayOfValues. Note that the FieldData structure is
filled as described in the BIFS-Scene quantization process (subclause 9.3.3.1 of ISO/IEC 14496-1:2001).
4 © ISO/IEC 2001 – All rights reserved
---------------------- Page: 7 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
The process applied for optimal encoding of BIFS multiple fields is exactly identical to the BIFS-Anim
process (See Table 31):
1 Compensation on the P values
2 Inverse Quantization into single field values
The compensation process uses the quant type as well as Pmin and PNbBits, defined in the ArrayQP and
InitialArrayQP, and can be summarized in the following table.
The inverse quantization process uses the values of floatMax, floatMin, and NbBit as defined in the BIFS
quantization process and as defined by the QuantizationParameter node.
9.3.7.11 ArrayHeader
9.3.7.11.1 Syntax
class ArrayHeader(FieldData field){
uint(5) NbBits;
int(NbBits) numberOfFields;
bit(2) intraMode;
InitialArrayQP qp(intraMode,field);
}
9.3.7.11.2 Semantic
The array header contains first information to specify the number of fields (NbBits is the number of bits
used to code the numberOfFields). Then the Intra/Predictive policy (intraMode) is specified as
follows:
• 0 : Only one Intra value at the beginning and then only predictive coded values
1 : An Intra every given number of predictive values
2 : A bit for each value to determine whether the value is an Intra or predictive value
Lastly, the InitialArrayQP is coded.
© ISO/IEC 2001 – All rights reserved 5
---------------------- Page: 8 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
9.3.7.12 InitialArrayQP
9.3.7.12.1 Syntax
class InitialArrayQP(int intraMode, FieldData field){
switch (intraMode)
case 1 :
unsigned int(5) NbBits;
unsigned int(NbBits) intraInterval;
// no break
case 0 :
case 2 :
int(5) CompNbBits;
for (int i=0;i
int(field.NbBits+1) vq;
field.aqp.Pmin[i] = vq-2^field.NbBits;
}
}
// no break
case 3:
break;
}
9.3.7.12.2 Semantic
If intraMode is 1, the size of the interval between two intras is first specified. Independent of the
intraMode, the number of Bits used in Predictive mode CompNbBits and the CompMins are coded. The
function getNbComp() is a function that returns the number of components of the quantizing bounds, and
depends on the object. For instance it returns 3 for 3D positions, 2 for 2D positions, and 3 for rotations.
See Table 17 (Return values of getNbComp) in ISO/IEC 14496-1:2001. CompNbBits and CompMin are
stored in the field.aqp AnimationQP structure, and are used for the compensation process as defined in
Table 31 (Compensation process for multiple fields and BIFS-Anim) and subclause 9.3.4 of ISO/IEC
14496-1:2001.
6 © ISO/IEC 2001 – All rights reserved
---------------------- Page: 9 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
9.3.7.13 ArrayQP
9.3.7.13.1 Syntax
class ArrayQP(int intraMode, FieldData field){
switch (intraMode)
case 1 :
int NbBits;
int(NbBits) intraInterval;
// no break
case 0 :
case 2 :
boolean(1) hasCompNbBits
if (hasCompNbBits)
int(5) CompNbBits;
boolean(1) hasCompMin
if (hasCompMin) {
for (int i=0;i
int(field.NbBits+1) vq;
field.aqp.Pmin[i] = vq-2^field.NbBits;
}
}
case 3:
break;
}
9.3.7.13.2 Semantic
ArrayQP fulfills the same purpose as InitialArrayQP, but in this case, the parameters are optionnaly set.
If they are not set in the stream, they are set by default, in reference to the InitialArrayQP or the latest
received value of the parameter.
If IntraMode is 1, the size of the interval between two intras is first specified. In any case, the number
of Bits used in Predictive mode (CompNbBits) and the CompMins are coded. The function
getNbComp() is a function that returns the number of components of the quantizing bounds, and depends
on the object. For instance it returns 3 for 3D positions, 2 for 2D positions, and 3 for rotations. See Table
17 in ISO/IEC 14496-1:2001. CompNbBits and CompMin are stored in the field.aqp AnimationQP
structure, and are used for the compensation process as defined in Table 31 and subclause 9.3.4 of
ISO/IEC 14496-1:2001.
© ISO/IEC 2001 – All rights reserved 7
---------------------- Page: 10 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
9.3.7.14 ArrayOfValues
9.3.7.14.1 Syntax
class ArrayOfValues(FieldData field) {
ArrayIValue value[0];
for (int i=1; i < numberOfFields;i++)
{
Switch (intraMode) {
case 0:
ArrayPValue value(field);
break;
case 1:
if ( (i % intraInterval) == 0) {
bit(1) hasQP;
if (hasQP)
ArrayQP qp(field);
ArrayIValue value(field);
}else{
ArrayPvalue value(field);
}
break;
case 2:
bit (1) isIntra;
if (isIntra) {
bit(1) hasQP;
if (hasQP)
ArrayQP qp(field);
ArrayIValue value;
}else{
ArrayPvalue value;
}
break;
}
}
9.3.7.14.2 Semantic
The array of values first codes a first intra value, and then according to the IntraMode, codes Intra and
Predictive values. In P only mode, no more intra values are coded. In the second mode, a bit decides of
the P or I mode at each value. In that case, a QP can be sent for Intra values. If a QP is sent, the statistics
of the arithmetic encoder are reset. In the third mode, an Intra is sent every intraInterval values.
8 © ISO/IEC 2001 – All rights reserved
---------------------- Page: 11 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
9.3.7.15 ArrayIValue
9.3.7.15.1 Syntax
class ArrayIValue(FieldData field) {
switch (field.quantType) {
case 9: // Normal
int(1) direction
case 10: // Rotation
int(2) orientation
break;
default:
break;
}
for (j=0;j
int(field.nbBits) vq[j];
}
9.3.7.15.2 Semantic
The ArrayIValue represents the quantized intra value of a field. The value is coded following the
quantization process described in the quantization section, and according to the type of the field. For
normals the direction and orientation values specified in the quantization process are first coded. For
rotations only the orientation value is coded. If the bit representing the direction is 0, the normal’s
direction is set to 1, if the bit is 1, the normal’s direction is set to –1. The value of the orientation is coded
as an unsigned integer using 2 bits. The compressed components�q[i] of the field’s value are then coded
as a sequence of unsigned integers using the number of bits specified in the field data structure. The
decoding process in intra mode computes the animation values by applying the inverse quantization
process.
© ISO/IEC 2001 – All rights reserved 9
---------------------- Page: 12 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
9.3.7.16 ArrayPValue
9.3.7.16.1 Syntax
class ArrayPValue(FieldData field) {
switch (field.quantType) {
case 9: // Normal
int(1) inverse
break;
default:
break;
}
for (j=0;j
int(aacNbBits) vqDelta[j];
}
9.3.7.16.2 Semantic
The ArrayPValue represents the difference between the previously received quantized value and the
current quantized value of a field. The value is coded using the compensation process as described above.
The values are decoded from the adaptive arithmetic coder bitstream with the procedure�_aac =
aa_decode(model). The model is updated with the procedure model_update(model,�_aac). For normals
the inverse value is decoded through the adaptive arithmetic coder with a uniform, non-updated model.
The compensation values�qDelta[i] are then decoded one by one. Let�q(t-1) the quantized value
decoded at the previous frame and �_aac(t) the value decoded by the frame’s Adaptive Arithmetic
Decoder at instant t with the field’s models. The value a time t is obtained from the previous value as
follows :
�Delta(t) = v_acc(t) + Pmin
�q(t) = AddDelta(�q(t-1), vDelta(t))
�(t) = InvQuant(�q(t))
The field’s models are updated each time a value is decoded through the adaptive arithmetic coder. If the
animType is 1 (Position3D) or 2 (Position2D), each component of the field’s value is using its own
model and offset PMin[i]. In all other cases the same model and offset PMin[0] is used for all the
components.
"
9) Modify the subclause numbers in 9.3.7.10 to 9.3.8.10 after the insertion of ArrayPValue
subclause.
10) Insert the following as a new subclause after subclause 9.4.2.92 (Script):
"
9.4.2.93 ServerCommand
The ServerCommand in BIFS enables the application signaling in MPEG-4 Systems. The application-
signaling framework allows an application to communicate the application signaling messages or
commands to a server(s). Commands are sent to servers upon the occurrence of events (synchronous
events specified in the scene description or asynchronous events as a result of user interaction). The
ServerCommand framework consists of two elements; a ServerCommand node, and a
10 © ISO/IEC 2001 – All rights reserved
---------------------- Page: 13 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
ServerCommandRequest structure. While the ServerCommand enables event routing to the server, the
ServerCommandRequest structure specifies the syntax for the messages communicated to the server over
a back channel.
9.4.2.93.1 Node Interface
ServerCommand {
trigger
eventIn SFBool
exposedField SFBool enable FALSE
exposedField MFString url []
exposedField SFString command ""
}
9.4.2.93.2 Functionality and Semantics
This node is used to communicate application-signaling messages (commands) from the client back to
the server. The ServerCommand is processed only when trigger receives a TRUE event and enable is
TRUE. When the ServerCommand is processed, the command is sent to the servers indicated by the
specified url.A url identifies the object descriptor that contains an elementary stream that flows from
the terminal back to the server. If that object descriptor has more than one such elementary stream, then
the one specified will be used. The command field contains the information that is transmitted back to
the server. The syntax and semantics of the command string are application specific and not specified.
The syntax of the ServerCommandRequest structures used to communicate the command to a
server is specified below.
9.4.2.93.3 ServerCommandRequest
When the ServerCommand is processed the associated command is communicated to the servers
specified in the url using the ServerCommandRequest structures. The ServerCommandRequest is
encapsulated into SL packets, using the SLConfigDescriptor contained in the ESDescriptor of the
upchannel elementary stream that carries the commands. If a timestamp is provided in the SL layer
(either decoding or composition) then it is directly derived from the System Time Base of the terminal.
Syntax
class ServerCommandRequest(BIFSConfig cfg) {
bit(cfg.nodeIDbits) nodeID;
SFString command;
}
where nodeID is node ID of the ServerCommand node that trigger the command (all such nodes must
have IDs in order to route events into them), and command is the string contained in the
ServerCommand node's command field.
"
© ISO/IEC 2001 – All rights reserved 11
---------------------- Page: 14 ----------------------
ISO/IEC 14496-1:2001/Amd.1:2001(E)
11) Modify the subclause numbers in 9.4.2.93 to 9.4.2.99 after the insertion of ServerCommand node
subclause.
12) Insert the following as a new subclause after subclause 9.4.2.99 (Switch):
"
9.4.2.100 TemporalGroup
The TemporalGroup node carries the temporal constraints of its child nodes that will be used by the
FlexTime model (or Advanced Synchronization Model). The FlexTime Model supports synchronization
of objects from multiple sources with possibly different time bases. The FlexTime Model specifies timing
using a flexible, constraint-based timing model. In this model, media objects can be linked to one another
in a time graph using relationship constraints such as "CoStart", "CoEnd", or "Meet". And,
...
Questions, Comments and Discussion
Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.