1、Information technology Coding of audio-visual objects Part5:Reference software AMENDMENT27:Scalablecomplexity3Dmeshcoding reference softwareAmendment 27:2012 (IDT) toNational Standard of CanadaCAN/CSA-ISO/IEC 14496-5-06(ISO/IEC 14496-5:2001, IDT)NOT FOR RESALE.PUBLICATION NON DESTINE LA REVENTE.CSA
2、Standards Update ServiceAmendment 27:2012 toCAN/CSA-ISO/IEC 14496-5-06March 2012Title: Information technology Coding of audio-visual ob jects Part5:Reference software AMENDMENT27:Scalablecomple xity3Dmeshcoding reference softwarePagination: 13 pages (iii preliminary and 10 text)To register for e-mai
3、l notification about any updates to this publication go on-line to shop.csa.caclick on E-mail Services under MY ACCOUNTclick on CSA Standards Update ServiceThe List ID that you will need to register for updates to this publication is 2418153.If you require assistance, please e-mail techsupportcsa.ca
4、 or call 416-747-2233.Visit CSAs policy on privacy at csagroup.org/legal to find out how we protect your personal information.Reference numberISO/IEC 14496-5:2001/Amd.27:2011(E)ISO/IEC 2011INTERNATIONAL STANDARD ISO/IEC14496-5Second edition2001-12-15AMENDMENT 272011-02-15Information technology Codin
5、g of audio-visual objects Part 5: Reference software AMENDMENT 27: Scalable complexity 3D mesh coding reference software Technologies de linformation Codage des objets audiovisuels Partie 5: Logiciel de rfrence AMENDEMENT 27: Logiciel de rfrence dencodage de maille en 3D de complexit atteignable ISO
6、/IEC 14496-5:2001/Amd.27:2011(E) PDF disclaimer This PDF file may contain embedded typefaces. In accordance with Adobes 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 ed
7、iting. In downloading this file, parties accept therein the responsibility of not infringing Adobes 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 b
8、e 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 a
9、t the address given below. COPYRIGHT PROTECTED DOCUMENT ISO/IEC 2011 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 f
10、rom 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 E-mail copyrightiso.org Web www.iso.org ii ISO/IEC 2011 All rights reservedAmendment 27:2012 to CAN/CSA-ISO/IEC
11、 14496-5-06ISO/IEC 14496-5:2001/Amd.27:2011(E) ISO/IEC 2011 All rights reserved iiiForeword 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
12、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 organizati
13、ons, 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 Dire
14、ctives, 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 th
15、e 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 27 to ISO/IEC 14496-5:2001 was prepared by Joint
16、Technical Committee ISO/IEC JTC 1, Information technology, Subcommittee SC 29, Coding of audio, picture, multimedia and hypermedia information. ISO/IEC 14496-16:2009 introduced a scalable complexity mesh coding. This Amendment deals with the reference software of the SC3DMC tool. Amendment 27:2012 t
17、o CAN/CSA-ISO/IEC 14496-5-06ISO/IEC 14496-5:2001/Amd.27:2011(E) ISO/IEC 2011 All rights reserved 1Information technology Coding of audio-visual objects Part 5: Reference software AMENDMENT 27: Scalable complexity 3D mesh coding reference software Add 7.5 Reference Software for the Scalable Complexit
18、y 3D Mesh Compression: 7.5 Reference Software for the Scalable Complexity 3D Mesh Compression (SC3DMC) 7.5.1 Introduction This is the description of the reference software for SC3DMC. 7.5.2 Description of Classes 7.5.2.1 SC3DMC Classes Class Function Files Description SC3DMCEncoder void SetIFS(Index
19、edFaceSet * ifs) SC3DMC_SC3DMCEncoder.h SC3DMC_SC3DMCEncoder.cpp Links the S3DMCEncoder to the IndexedFaceSet to be compressed SC3DMCEncoder void SetParams(EncodingParams params) SC3DMC_SC3DMCEncoder.h SC3DMC_SC3DMCEncoder.cpp Sets the encoding parameters SC3DMCEncoder unsigned int GetEstimated Comp
20、ressedStreamSize() SC3DMC_SC3DMCEncoder.h SC3DMC_SC3DMCEncoder.cpp Returns the number of bytes to be allocated for the compressed stream SC3DMCEncoder int Encode(unsigned char * compressedStream, unsigned int & compressedStream Size) SC3DMC_SC3DMCEncoder.h SC3DMC_SC3DMCEncoder.cpp Encodes the IFS Am
21、endment 27:2012 to CAN/CSA-ISO/IEC 14496-5-06ISO/IEC 14496-5:2001/Amd.27:2011(E) 2 ISO/IEC 2011 All rights reservedSC3DMCEncoder void EncodeHeader (unsigned char * compressedStream, unsigned int & compressedStream Size) SC3DMC_SC3DMCEncoder.h SC3DMC_SC3DMCEncoder.cpp Writes the header information to
22、 the binary stream SC3DMCEncoder void EncodeDataBuffer (unsigned char * compressedStream, unsigned int & compressedStream Size) SC3DMC_SC3DMCEncoder.h SC3DMC_SC3DMCEncoder.cpp Writes the data buffer to the binary stream SC3DMCEncoder void Insert_Data(unsigned char * compressedStream, unsigned int &
23、compressedStream Size, int symbol, int length) SC3DMC_SC3DMCEncoder.h SC3DMC_SC3DMCEncoder.cpp Insert symbol into char array with length bits SC3DMCEncoder void Flush(unsigned char * compressedStream, unsigned int & compressedStream Size) SC3DMC_SC3DMCEncoder.h SC3DMC_SC3DMCEncoder.cpp Performing th
24、e zero-padding SC3DMCDecoder void SetIFS(IndexedFaceSet * ifs) SC3DMC_SC3DMCDecoder.h SC3DMCDecoder.cpp Connects the S3DMCdecoder to the output IFS SC3DMCDecoder IndexedFaceSet * GetIFS() SC3DMC_SC3DMCDecoder.h SC3DMC_SC3DMCDecoder.cpp Returns a pointer to the output IFS SC3DMCDecoder unsigned int G
25、etStreamSize() SC3DMC_SC3DMCDecoder.h SC3DMC_SC3DMCDecoder.cpp Returns the size of the compressed bitstream SC3DMCDecoder int Decode(unsigned char * compressedStream, unsigned int compressedStream Size) SC3DMC_SC3DMCDecoder.h SC3DMC_SC3DMCDecoder.cpp Decodes the compressed stream SC3DMCDecoder void
26、DecodeDataBuffer (unsigned char * &compressedStream) SC3DMC_SC3DMCDecoder.h SC3DMC_SC3DMCDecoder.cpp Decodes the buffer data Amendment 27:2012 to CAN/CSA-ISO/IEC 14496-5-06ISO/IEC 14496-5:2001/Amd.27:2011(E) ISO/IEC 2011 All rights reserved 3SC3DMCDecoder bool DecodeHeader(unsigned char * & compress
27、edStream SC3DMC_SC3DMCDecoder.h SC3DMC_SC3DMCDecoder.cpp Decodes the header information SC3DMCDecoder unsigned int ReadBitsFromStorage(unsigned int unReadLength, unsigned char * &compressedStream)SC3DMC_SC3DMCDecoder.h SC3DMC_SC3DMCDecoder.cpp Reads unReadLength bits from bitstream SC3DMCDecoder voi
28、d CheckFlush(unsigned char * &compressedStream)SC3DMC_SC3DMCDecoder.h SC3DMC_SC3DMCDecoder.cpp Checks the zero-padding 7.5.2.2 QBCR Classes Class Function Files Description QBCR_EncoderforMMW DumpBitstream(string filename) SC3DMC_QBCR_Encoder.cpp, SC3DMC_QBCR_Encoder.h Dump the compressed bitstream
29、into file QBCR_EncoderforMMW Encode_Geometry() SC3DMC_QBCR_Encoder.cpp, SC3DMC_QBCR_Encoder.h Encode the geometry of input mesh QBCR_EncoderforMMW Encode_Connectivity() SC3DMC_QBCR_Encoder.cpp, SC3DMC_QBCR_Encoder.h Encode the connectivity of input mesh QBCR_EncoderforMMW QuantizationGeometry(int QP
30、) SC3DMC_QBCR_Decoder.cpp, SC3DMC_QBCR_Decoder.h Quantize with QP value QBCR_DecoderforMMW DecoderGeometry() SC3DMC_QBCR_Decoder.cpp, SC3DMC_QBCR_Decoder.h Decode the geometry of compressed bitstream QBCR_DecoderforMMW DecoderConnectivity() SC3DMC_QBCR_Decoder.cpp, SC3DMC_QBCR_Decoder.h Decode the c
31、onnectivity of compressed bitstream QBCR_DecoderforMMW InverseQuantization(unsigned quantCoord, float quantRange, float quantMin, float quantValue) SC3DMC_QBCR_Decoder.cpp, SC3DMC_QBCR_Decoder.h De-Quantize with given parameter QBCR_DecoderforMMW ReadBitsFromStorage(unsigned int unReadLength) SC3DMC
32、_QBCR_Decoder.cpp, SC3DMC_QBCR_Decoder.h Read unReadLength bits from the storage (buffer) Amendment 27:2012 to CAN/CSA-ISO/IEC 14496-5-06ISO/IEC 14496-5:2001/Amd.27:2011(E) 4 ISO/IEC 2011 All rights reserved7.5.2.3 SVA Classes Class Function Files Description SVA_EncoderforMMW Encode_Geometry() SC3D
33、MC_SVA_Encoder.cpp, SC3DMC_SVA_Encoder.h, Encode the geometry of input mesh with SVA method SVA_EncoderforMMW ConnectivityAnalyze() SC3DMC_SVA_Encoder.cpp, SC3DMC_SVA_Encoder.h, Analyze the connectivity to compute mode, position, difference of index value and direction SVA_EncoderforMMW Encode_Conne
34、ctivity() SC3DMC_SVA_Encoder.cpp, SC3DMC_SVA_Encoder.h, Encode the analyzed vertex index with BPC SVA_EncoderforMMW Rotation(int faceIndex, int move) SC3DMC_SVA_Encoder.cpp, SC3DMC_SVA_Encoder.h, Rotate the given face “move” times SVA_DecoderforMMW DecoderGeometry() SC3DMC_SVA_Decoder.cpp, SC3DMC_SV
35、A_Decoder.h, Decode the geometry of compressed SVA bitstream SVA_DecoderforMMW DecoderConnectivity() SC3DMC_SVA_Decoder.cpp, SC3DMC_SVA_Decoder.h, Decode the connectivity of compressed SVA bitstream SVA_DecoderforMMW InverseCircularDifference(unsigned int previous, int differential) SC3DMC_SVA_Decod
36、er.cpp, SC3DMC_SVA_Decoder.h, Perform the inverse circular difference with the given parameters SVA_DecoderforMMW BPLInit() SC3DMC_SVA_Decoder.cpp, SC3DMC_SVA_Decoder.h, Initialize the BPC table for BPC decoding 7.5.2.4 TFAN Classes Class Function Files Description BaseConnectivityDecoder void SetTr
37、iangleList(int * triangles) SC3DMC_BaseConnectivityDecoder.h SC3DMC_BaseConnectivityDecoder.cpp Sets the array that will hold the decoded list of triangles BaseConnectivityDecoder void SetNTriangles(int nTriangles) SC3DMC_BaseConnectivityDecoder.h SC3DMC_BaseConnectivityDecoder.cpp Sets the number o
38、f triangles BaseConnectivityDecoder void SetNVertices(int nVertices) SC3DMC_BaseConnectivityDecoder.h SC3DMC_BaseConnectivityDecoder.cpp Sets the number of vertices Amendment 27:2012 to CAN/CSA-ISO/IEC 14496-5-06ISO/IEC 14496-5:2001/Amd.27:2011(E) ISO/IEC 2011 All rights reserved 5BaseConnectivityDe
39、coder int Decode(unsigned char * &compressedStream) SC3DMC_BaseConnectivityDecoder.h SC3DMC_BaseConnectivityDecoder.cpp Decodes the connectivity information BaseGeometryDecoder void SetGeometryList(float * geometry) SC3DMC_BaseGeometryDecoder.h SC3DMC_BaseGeometryDecoder.cpp Set the array that will
40、hold the decoded geometry information BaseGeometryDecoder void SetNVertices(int nVertices) SC3DMC_BaseGeometryDecoder.h SC3DMC_BaseGeometryDecoder.cpp Sets the number of vertices BaseGeometryDecoder void SetDim(int dim) SC3DMC_BaseGeometryDecoder.h SC3DMC_BaseGeometryDecoder.cpp Sets the dimension o
41、f the geometry information BaseGeometryDecoder int Decode(unsigned char * &compressedStream) SC3DMC_BaseGeometryDecoder.h SC3DMC_BaseGeometryDecoder.cpp Decodes the geometry information TFANConnectivityDecoder void ReOrderTab(float * tab, int D, int nVertices) SC3DMC_TFANConnectivityDecoder.h SC3DMC
42、_TFANConnectivityDecoder.cpp Reorders the array of geometry according to the new order of triangles defined by the TFAN encoder TFANConnectivityDecoder void ReOrderTab(int * tab, int D, int nTriangles) SC3DMC_TFANConnectivityDecoder.h SC3DMC_TFANConnectivityDecoder.cpp Reorders the connectivity arra
43、y according to the new order of triangles defined by the TFAN encoder TFANConnectivityDecoder void ReOrderConnec(int * coordIndex, int nCoordIndex) SC3DMC_TFANConnectivityDecoder.h SC3DMC_TFANConnectivityDecoder.cpp Reorders the connectivity array according to the new order of vertices defined by th
44、e TFAN encoder TFANConnectivityDecoder void ReOrderPerm(int * coordIndex, int nCoordIndex) SC3DMC_TFANConnectivityDecoder.h SC3DMC_TFANConnectivityDecoder.cpp Reorders the connectivity array to inverse the permutation generated by the TFAN encoder Amendment 27:2012 to CAN/CSA-ISO/IEC 14496-5-06ISO/I
45、EC 14496-5:2001/Amd.27:2011(E) 6 ISO/IEC 2011 All rights reservedTFANConnectivityDecoder void SetTrianglePermPres(int trianglePermPres) SC3DMC_TFANConnectivityDecoder.h SC3DMC_TFANConnectivityDecoder.cpp Sets the parameter controlling the triangles permutation preservation TFANConnectivityDecoder vo
46、id SetVertexOrderPres(int vertexOrderPres) SC3DMC_TFANConnectivityDecoder.h SC3DMC_TFANConnectivityDecoder.cpp Sets the parameter controlling the vertex order preservation TFANConnectivityDecoder void SetTriangleOrderPres(int triangleOrderPres) SC3DMC_TFANConnectivityDecoder.h SC3DMC_TFANConnectivit
47、yDecoder.cpp Sets the parameter controlling the triangles order preservation TFANConnectivityDecoder MultiVectOpt * GetTFans() SC3DMC_TFANConnectivityDecoder.h SC3DMC_TFANConnectivityDecoder.cpp Returns the list of triangle fans TFANConnectivityDecoder MultiVectOpt * GetV2T() SC3DMC_TFANConnectivity
48、Decoder.h SC3DMC_TFANConnectivityDecoder.cpp Returns the vertex to triangles incidence information TFANConnectivityDecoder int Decode(unsigned char * &compressedStream) SC3DMC_TFANConnectivityDecoder.h SC3DMC_TFANConnectivityDecoder.cpp Decodes the connectivity information TFANDecoder void SetIFS(In
49、dexedFaceSet * ifs) SC3DMC_TFANDecoder.h SC3DMC_TFANDecoder.cpp Links the TFANDecoder to the output IFS TFANDecoder IndexedFaceSet * GetIFS() SC3DMC_TFANDecoder.h SC3DMC_TFANDecoder.cpp Returns a pointer to the output IFS TFANDecoder unsigned int GetStreamSize() SC3DMC_TFANDecoder.h SC3DMC_TFANDecoder.cpp Returns the compressed binary stream size TFANDecoder DecodeTFANData(unsigned char * &compressedStream) SC3DMC_TFANDecoder.h SC3DMC_TFANDecoder.cpp Decodes the TFAN stream TFANGeometryDecoder void SetTriangleList