[This is preliminary documentation and subject to change.]
Whatever type of authoring tool you create, the result should be a well-formed stream that transmits enhancements to the client efficiently and robustly. This topic describes guidelines that your authoring tool can follow to create well-formed enhancement streams.
One of the greatest challenges of any enhancement stream is to handle the case where a viewer tunes into a show in the middle of a broadcast. Because viewers often switch channels or "channel-surf," you cannot assume that broadcast clients will receive an entire stream. To handle this, a well-formed stream repeats events. For example, if the client misses the first occurrence of an announcement or trigger, it can receive the second, third, or fourth occurrence.
A related concern is ensuring that the client receives enhancements with all their dependency files. For example, if an enhancement displays three images, the client must receive all three images or the enhancement will appear broken when it is displayed. You can ensure that dependencies are transmitted with their parent files by specifying EnhEvent.onefile as True for download events. When onefile is True, the stream compiler automatically packages the file and its dependencies into a cabinet file for transmission.
You can also package files into cabinet files explicitly using the EnhCab object provided by the ipenhsnd Type Library. Note that if you use EnhCab to package files, you must add a trigger event to the stream to unpackage the cabinet. If you use onefile, this is done for you.
To handle these and other challenges, a well-formed stream has the following attributes:
To view an example of a well-formed enhancement stream, see Outline of a Typical Enhancement Stream.