1. The contents of the Version field shall be incremented to reflect a new version of the structure. This will allow applications to differentiate between the new and prior versions of the structure. The first released version was tagged as "0100" corresponding to version 1.00. The additions describe here shall constitute version 1.01, and the Version field will be set at "0101" accordingly.
  2. The current Reserved field shall remain as described. This shall be available for future utilization by compact data. This, for example, would allow expansion of the PostTimers array if needed.
  3. The new URL field shall immediately follow the Reserved array field and be 1024 bytes long. The URL field contents shall meet the "Internet Official Protocol Standards (STD 1), Uniform Resource Identifiers (URI) Generic Syntax" as described in RFC2396. If the URL/URI string is less than 1024 bytes in length, it shall be terminated by a null byte, and the terminator and the remainder of the 1024 byte field shall be ignored.
  4. The TagText field will start immediately following the URL field, and be utilized as before. The only difference is its starting point in the cart Chunk.

The resulting cart data structure would then be (the modified or new fields are highlighted in red and underlined):

typedef struct cart_extension_tag
  CHAR Version[4];         /* Version of the data structure       */
  CHAR Title[64];          /* ASCII title of cart audio sequence  */
  CHAR Artist[64];         /* ASCII artist/creator name           */
  CHAR CutID[64];          /* ASCII cut number identification     */
  CHAR ClientID[64];       /* ASCII client identification         */
  CHAR Category[64];       /* ASCII Category ID, PSA, NEWS, etc   */
  CHAR Classification[64]; /* ASCII Classification/auxiliary key  */
  CHAR OutCue[64];         /* ASCII out cue text                  */
  CHAR StartDate[10];      /* ASCII yyyy/mm/dd                    */
  CHAR StartTime[8];       /* ASCII hh:mm:ss                      */
  CHAR EndDate[10];        /* ASCII yyyy/mm/dd                    */
  CHAR EndTime[8];         /* ASCII hh:mm:ss                      */
  CHAR ProducerAppID[64];  /* Name of vendor/application          */
  CHAR ProducerAppVersion[64]; /* Version of producer application */
  CHAR UserDef[64];        /* User defined text                   */
  DWORD dwLevelReference;  /* Sample value for 0 dB reference     */
  CART_TIMER PostTimer[8]; /* 8 time markers after head           */
  CHAR Reserved[276];      /* Reserved for future expansion       */
  CHAR URL[1024];          /* ASCII URL/URI information           */
  CHAR TagText[];          /* ASCII text for scripts or tags      */

The change results in a 2048-byte size for the Cart Chunk data area, not including the optional TagText data. Given that WAVE files of several megabytes are routine, this increase is insignificant at best. Applications shall determine from the Version field whether the new URL field is present, and from the chunk size whether TagText is present as well. (note that one consensus of the group is that the TagText field is considered relatively unimportant: not a small number of respondants said that their produce applications did not add TagText information, while consumer applications ignored it if it was present. Only a single application of those sampled utilized the TagText field, thus the increment in version number is required to ensure backwards and forwards compatibility).

We have arrived at this consensus after discussing this with several vendors and users who are already using the Cart Chunk. We believe that it represents the best copromise and provides a high degree of both forwards and backwards compatibility at the lowest development and implementation cost.

The method we propose here can be used in the future for expansion: the version number shall indicate which form of the structure is in use, and new fields shall be added before the TagText, which shall always be found following the last defined field of the structure (in the present proposal, the URL field).

We will attempt to have this addition finalized and ready for the next stage of standardization.

We welcome your comments and suggestions.

Contact us for if you wish to contribute to this and other processes regarding the Cart Chunk.