The MP4-SA Book: Appendix L: MP4-SA Items for COR2 (March 2002)
Description: Listing of items from the March 2002 MPEG 4 Corrigenda that relate to Structured Audio.
Keywords: MP4-SA

### From The MPEG-4 Structured Audio Book by John Lazzaro and John Wawrzynek.

# Appendix L: MP4-SA Items for COR2 (March 2002)

## Item 1 In subclause 5.7.3.3.5.2 (Determination of instrument output width and bus width), replace the second sentence of the first paragraph with: the width of each bus is either provided by a send statement (subclause 5.8.5.5) or is determined by the sum of the output widths (subclause 5.8.6.6.8) of the instruments routed to that bus in a single route statement (subclause 5.8.5.4). ## Item 2 In subclause 5.7.3.3.5.2 (Determination of instrument output width and bus width), remove the beginning of the third sentence: Only for the purpose of calculating bus widths ## Item 3 In subclause 5.7.3.3.5.2 (Determination of instrument output width and bus width), add the following note at the end of the first paragraph, before EXAMPLE 1: NOTE: if the output width of an instrument depends on outchannels, and the bus width of the bus where that instrument is routed is not specified by means of other send and route statements, the orchestra may be indeterministic. Programmers should pay special attention in checking the deterministic behavior of the orchestra or make use of determined bus widths (subclause 5.8.5.5). ## Item 4 In subclause 5.7.3.3.5.2 (Determination of instrument output width and bus width), in EXAMPLE 1 replace the second route with: route(bus2, i2, i1); ## Item 5 In subclause 5.7.3.3.5.2 (Determination of instrument output width and bus width) remove instr i3 from the pseudo-code. Replace the paragraph following the pseudo-code with: In this orchestra, the global sequencing rules (subclause 5.8.5.6) specify that instrument i1 precedes instrument i2, and instrument i1 and i2 precede instrument i4. Instrument i1 has two channels, so bus bus1 has two channels. Instrument i2 has two channels, since it gets input from bus1. The bus bus2 has four channels, two each from i2 and i1. The instrument i4 has four channels, since it gets input from bus2. ## Item 6 In subclause 5.8.5.3.2 (Signal variables), replace the second part of the paragraph following <array length> specification with: If the latter, the array length shall be the same as the number of input channels or output channels of the orchestra, respectively. It is illegal to use the token inchannels if the number of input channels to the orchestra is 0. ## Item 7 In subclause 5.8.5.5 (Send statement), change the definition of <send statement> to be: send(<ident>;<exprlist>;<namelist>) ## Item 8 In subclause 5.8.5.5 (Send statement), in the paragraph beginning with "Any bus may be routed to more than one effect instrument" replace the first sentence with: Any bus, except for the special bus output_bus, may be sent to more than one effect instrument and/or instantiations; in this case, when the simple identifier is not used, it is illegal to refer to a bus with more than one length. ## Item 9 In subclause 5.8.6.5.1 (Syntactic form), replace the line following the <tablemap declaration> with: <array length> and <namelist> as defined in subclause 5.8.5.3.2, except that in the instrument scope the tokens inchannels and outchannels refer to the input channels and output channels of the instrument, respectively. ## Item 10 In subclause 5.8.6.8.5 (outchan), replace standard name description with: The standard name outchan, in each scope, shall contain the number of channels ofoutput provided by the instrument instantiation with which that scope is associated, in the sense described in subclause 5.8.6.8.4. ## Item 11 In subclause 5.8.7.4.1 (Syntactic form), replace the last sentence of the first paragraph to: If the array width is the special token outchannels, then the array width shall be the same as the number of output channels to the associated instrument instantiation (in the sense described in subclause 5.8.6.8.4). | ## Item 12 In subclause 5.8.7.5.1, (Syntactic form) after the <opcode var declaration> lines, replace the first two lines as follows: <namelist> and <instr variable declaration> as defined in subclause 5.8.5.3.2 and subclause 5.8.6.5.1. In the opcode scope, the tokens inchannels and outchannels refer to the input channels and output channels of the associated instrument,respectively (in the sense described in subclause 5.8.6.8.4). ## Item 13 In subclause 5.8.6.6.2 (Assignment), add at the end of the third paragraph (If the lvalue denotes an entire array...): In the case that lvalue depends on the ordering of computation of the right-hand-side expression (e.g. if an entire array is multiplied with one of its elements), lvalue is undefined. ## Item 14 In subclause 5.8.6.6.11 (Extend), in the third paragraph replace the following text: or the rate of the guarding expression containing the statement, or the rate of the opcode containing the statement, whichever is fastest. with the text or the control rate if the rate of the guarding expression containing the statement, or the rate of the opcode containing the statement, is faster than the rate of the expression parameter. (MP4-SA Book Author Note: The purpose of this text is to make a-rate extend statements illegal.) ## Item 15 In subclause 5.8.6.6.11 (Extend), before the NOTE add: The extend statement shall not be executed in an instrument instance that is created asthe result of a send statement referencing the special bus output_bus. ## Item 16 In subclause 5.8.7.5.1 (Syntactic form), at the end of the second paragraph add the following paragraph: A variable shall not have a rate faster than the rate of the opcode. Standard names faster than the rate of the opcode are not defined in the opcode. The imports tag shall not be used for local k-rate signals when there is no global variable of the same name. ## Item 17 In subclause 5.8.7.7.3 (Shared variables and statements slower than the rate of the opcode),at the end of the third paragraph add: Statements that contain expressions of type specialop (subclause 5.9.2) are executed both at the k-rate and a-rate, and those expressions return values as specified in subclause 5.8.6.7.6 and 5.9.2. ## Item 18 In subclause 5.9.2 (Specialop type), add at the end of the third paragraph: Calls to specialop type opcodes are not allowed in iopcodes, kopcodes and opcodes. If a call to a specialop type opcode is present in an aopcode, the specialop opcode is executed both at k-rate and a-rate according to rules specified in subclause 5.8.7.7.3. ## Item 19 In subclause 5.9.11.1 (rms), replace the sentence: It is a run-time error if length is provided and is negative. with It is a run-time error if length is provided and is not strictly positive. ## Item 20 In subclause 5.9.12.3 (downsamp), in the fourth paragraph replace: 0<i<SR*KR with 0<i<SR/KR ## Item 21 In subclause 5.C.3 (Syntactic grammar for SAOL in yacc), in senddef replace identlist with namelist
Return to: Appendix Cover Page