1、 Reference numberISO/IEC 21000-10:2006/Amd.1:2006(E)ISO/IEC 2006INTERNATIONAL STANDARD ISO/IEC21000-10First edition2006-01-01AMENDMENT 12006-12-15Information technology Multimedia framework (MPEG-21) Part 10: Digital Item Processing AMENDMENT 1: Additional C+ bindings Technologies de linformation Ca
2、dre multimdia (MPEG-21) Partie 10: Traitement dlment numrique AMENDEMENT 1: Liaisons C+ additionnelles Amendment 1:2007 toNational Standard of CanadaCAN/CSA-ISO/IEC 21000-10:07Amendment 1:2006 to International Standard ISO/IEC 21000-10:2006 has been adopted withoutmodification (IDT) as Amendment 1:2
3、007 to CAN/CSA-ISO/IEC 21000-10:07. This Amendment wasreviewed by the CSA Technical Committee on Information Technology (TCIT) under the jurisdiction of theStrategic Steering Committee on Information Technology and deemed acceptable for use in Canada.November 2007 International Organization for Stan
4、dardization (ISO), 2006. All rights reserved. International Electrotechnical Commission (IEC), 2006. All rights reserved. NOT FOR RESALE.ISO/IEC 21000-10:2006/Amd.1:2006(E) PDF disclaimer This PDF file may contain embedded typefaces. In accordance with Adobes licensing policy, this file may be print
5、ed 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 Adobes licensing policy. The ISO Central Secretariat accepts no lia
6、bility 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
7、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 2006 All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized in any form o
8、r by any means, electronic or mechanical, including photocopying and microfilm, without permission in writing from either ISO at the address below or ISOs 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
9、E-mail copyrightiso.org Web www.iso.org ii ISO/IEC 2006 All rights reservedAmendment 1:2007 toCAN/CSA-ISO/IEC 21000-10:07ISO/IEC 21000-10:2006/Amd.1:2006(E) ISO/IEC 2006 All rights reserved iiiForeword ISO (the International Organization for Standardization) and IEC (the International Electrotechnic
10、al 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 activ
11、ity. 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 commit
12、tee, 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
13、 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 responsi
14、ble for identifying any or all such patent rights. Amendment 1 to ISO/IEC 21000-10:2006 was prepared by Joint Technical Committee ISO/IEC JTC 1, Information technology, Subcommittee SC 29, Coding of audio, picture, multimedia and hypermedia information. This Amendment defines normative C+ bindings f
15、or Digital Item Base Operations, informative security and platform dependence considerations, an informative example of a safe DIP profile and an entry to be appended to the Bibliography. Amendment 1:2007 toCAN/CSA-ISO/IEC 21000-10:07ISO/IEC 21000-10:2006/Amd.1:2006(E) ISO/IEC 2006 All rights reserv
16、ed 1Information technology Multimedia framework (MPEG-21) Part 10: Digital Item Processing AMENDMENT 1: Additional C+ bindings In Clause 1, Scope, second paragraph, replace the text: three normative annexes with: four normative annexes In Clause 1, Scope, add at the end: C+ bindings for Digital Item
17、 Base Operations: Annex E specifies the C+ bindings for the Digital Item Base Operations described in 5.4. In Clause 2, Normative references, insert the following normative reference before the reference to ISO/IEC 16262:2002: ISO/IEC 14882:2003, Programming languages C+ Add a new subclause 5.6: 5.6
18、 Security and platform dependence considerations (informative) 5.6.1 Security considerations 5.6.1.1 Execute DIBO The use of the DIP.execute DIBO can potentially result in security issues, because the DIBO provides means to execute arbitrary code. 5.6.1.2 C+ bindings The use of the C+ DIBO bindings
19、can potentially result in security issues. 5.6.1.3 DOM Load and Save The DOM Load and Save API exposes potential security issues, because they provide access to the file system. Amendment 1:2007 toCAN/CSA-ISO/IEC 21000-10:07ISO/IEC 21000-10:2006/Amd.1:2006(E) 2 ISO/IEC 2006 All rights reserved5.6.2
20、Platform dependence considerations 5.6.2.1 Execute DIBO The use of the DIP.execute DIBO can result in the use of platform dependent code. It is possible to avoid those issues by creating a profile removing DIP.execute. This can be done using profiles as demonstrated in subclause Annex I.8. 5.6.2.2 C
21、+ bindings The use of the C+ DIBO bindings will result in the use of platform dependent code. It is possible to avoid those issues by creating a profile removing the C+ bindings. This can be done using profiles as demonstrated in subclause Annex I.8. Adjust numbering clauses: “5.6 Digital Item eXten
22、sion Operations“ numbering change to “5.7 Digital Item eXtension Operations“ numbering. And change following (sub)clauses numbering accordingly. Add a new Annex E: Annex E (normative) C+ bindings for Digital Item Base Operations E.1 Introduction C+ bindings for DIBOs are specified so that C+ executa
23、bles can interact with the DIP environment. The way in which C+ executables are executed and the reference to the bindings are obtained, is done in an implementation specific way. E.2 C+ data type bindings for DIML object types E.2.1 DIPError See 5.4.3.2 Amendment 1:2007 toCAN/CSA-ISO/IEC 21000-10:0
24、7ISO/IEC 21000-10:2006/Amd.1:2006(E) ISO/IEC 2006 All rights reserved 3#ifndef DIPERROR_H #define DIPERROR_H /* * C+ interface for the DIPError. */ class DIPError public: /* * General DIP error not covered by other defined error codes. * The value of this property is 1. */ static const int GENERAL_E
25、XCEPTION; /* * A parameter provided to a DIBO or other DIP function is invalid. * The value of this property is 2. */ static const int INVALID_PARAM; /* * Permission to execute this operation is unavailable in the host environment. * The value of this property is 3. */ static const int INVALID_PERMI
26、SSION; /* * Something needed to complete the operation is not found. * The value of this property is 4. */ static const int NOT_FOUND; /* * An error occurred during an attempt to adapt a resource. * The value of this property is 5. */ static const int ADAPTATION_FAILED; /* * An error occurred during
27、 an attempt to play. * The value of this property is 6. */ static const int PLAYBACK_FAILED; /* * An error occurred during an attempt to execute. * The value of this property is 7. */ static const int EXECUTE_FAILED; /* * An error occurred during an attempt to print. * The value of this property is
28、8. */ static const int PRINT_FAILED; /* * Returns the code of an error caused by an exception. * return int value representing DIPErrorCode or other value specified in ISO/IEC * 21000. */ virtual int getDIPErrorCode() const = 0; ; #endif Amendment 1:2007 toCAN/CSA-ISO/IEC 21000-10:07ISO/IEC 21000-10
29、:2006/Amd.1:2006(E) 4 ISO/IEC 2006 All rights reservedE.2.2 ObjectMap See 5.4.3.3 #ifndef OBJECTMAP_H #define OBJECTMAP_H #include /* * C+ interface for the ObjectMap DIML Object Type. */ class ObjectMap public: /* * Returns a pointer to succeeding char pointers representing the * Arguments Types of
30、 an argument list. * param index The index of the Argument list in the Object Map. * return array of char pointers or null pointers if no such index exists. The * last element of the array must be a null pointer. */ virtual char* getArgumentList(int index) const throw (DIPError) = 0; /* * Returns th
31、e number of unique argument lists with arguments in a specific order. * return int value indicating the number of unique argument lists. */ virtual int getArgumentListCount() const = 0; /* * Returns the number of DIMs taking arguments of given Argument Types. * param argumentList An array of char po
32、inters representing the Arguments names. * The last element of this array shall be a null pointer. * return int value indicating the number of DIMs. */ virtual int getMethodCount(char* argumentList) const throw (DIPError) = 0; /* * Returns a pointer to a DOMElement representing Components containing
33、 the DIM * declarations of DIMs taking arguments of given Argument Types. * param argumentList An array of char pointers representing the Arguments names. The last element of this array shall be a null pointer. * return pointer to DOMElement. */ virtual DOMElement* getMethodWithArgs(char* argumentLi
34、st) const throw (DIPError)= 0; /* * Returns an array of pointers to DOMElements representing Components containing * the DIM declaration of a DIM taking arguments of given Argument Types. * param argumentList An array of char pointers representing the Arguments names. The last element of this array
35、shall be a null pointer. * param index An int value indicating the index of the DIM in the list of DIMS that accept the char pointers of the argumentList parameter as parameters. * return array of pointers to DOMElements. The last element of this array shall * be a null pointer. */ virtual DOMElemen
36、t* getMethodsWithArgs(char* argumentList, int index) const throw (DIPError)= 0; /* * Returns a DID object corresponding to the given Object Type and the index. * param objectType A char pointer containing the Object Type of the wanted DID object. * param index The index in the array to DID objects c
37、orresponding to the Object Type. Amendment 1:2007 toCAN/CSA-ISO/IEC 21000-10:07ISO/IEC 21000-10:2006/Amd.1:2006(E) ISO/IEC 2006 All rights reserved 5* return pointer to DOMElement or null pointer if no such DID object exists. */ virtual DOMElement* getObjectOfType(char* objectType, int index) const
38、throw (DIPError)= 0; /* * Returns an array of DID objects corresponding to the given Object Type. * param objectType A char pointer containing the Object Type of the wanted DID objects. * return array of pointers to DOMElements. The last element of the array must * be a null pointer. */ virtual DOME
39、lement* getObjectsOfType(char* objectType) const throw (DIPError) = 0; /* * Returns the number of objects corresponding to a certain Object Type. * param objectTypeName A char pointer containing the name of the Object Type in the Object Map. * return int value representing the number of objects. */
40、virtual int getObjectsOfTypeCount(char* objectTypeName) const throw (DIPError) = 0; /* * Returns the number of Object Types defined in the Object Map. * return int value representing the number of Object Types. */ virtual int getObjectTypeCount() const = 0; /* * Returns a char pointer representing t
41、he Object Type name. * param index The index of the Object Type in the Object Map. * return char pointer or null pointer if no such index exists. */ virtual char* getObjectTypeName(int index) const throw (DIPError) = 0; ; #endif E.2.3 PlayStatus See 5.4.3.4 #ifndef PLAYSTATUS_H #define PLAYSTATUS_H
42、/* * C+ interface for the PlayStatus DIML Object Type. */ class PlayStatus public: /* * Indicates that the associated resource is not currently playing. * The value of this property is 0. */ static const int RELEASED; /* * Indicates that the associated resource is currently playing. Time based state
43、 * information related to playing the resource, if relevant, is paused for a * STATICPLAY resource. Amendment 1:2007 toCAN/CSA-ISO/IEC 21000-10:07ISO/IEC 21000-10:2006/Amd.1:2006(E) 6 ISO/IEC 2006 All rights reserved* The value of this property is 1. */ static const int STATICPLAY; /* * Indicates th
44、at the associated resource is currently playing. Time based state * information related to playing the resource, if relevant, is advancing for a * TIMEPLAY resource. * The value of this property is 2. */ static const int TIMEPLAY; /* * Returns the current status of a played instance of a resource as
45、sociated with * this PlayStatus object. * return int value representing the current status. */ virtual int getStatus() const = 0; ; #endif E.3 C+ DIBO factory interface This subclause specifies the C+ interface for the C+ DIBO factory. An MPEG-21 environment providing C+ bindings to DIBOs shall prov
46、ide an implementation of CppDIBOFactory. The C+ DIBO factory is used in a C+ executable to obtain an instance of an object that implements the C+ binding for a DIBO. The interface of a C+ DIBO factory is defined below. #ifndef CPPDIBOFACTORY_H #define CPPDIBOFACTORY_H #include “DIPError.h“ /* * CppD
47、IBOFactory interface is used to create new C+ DIBO classes. */ class CppDIBOFactory public: /* * Returns the implementation for the given DIML object interface. * defining the set of C+ DIBO interfaces bound to the required DIBO. This method * is implemented by the C+ DIBO implementation provider. *
48、 param objectName A char pointer containing the name of the DIML object for * which the implementation is requested. * return void pointer representing the implementation for the given DIML object * interface. */ virtual void* getCppDIBOObject(char* objectName) const throw (DIPError) = 0; ; #endif E
49、.4 C+ global environment interface A reference to the global environment (i.e., GlobalEnv object) should be provided to a C+ executable, enabling access to the DIP environment in the C+ executables. Amendment 1:2007 toCAN/CSA-ISO/IEC 21000-10:07ISO/IEC 21000-10:2006/Amd.1:2006(E) ISO/IEC 2006 All rights reserved 7#ifndef GLOBALENV_H #define GLOBALENV_H #include #include “CppDIBOFactory.h“ /* * C+ interf