
            ************************
            * QuickTime Atom Hacks *
            ************************

 - values use plain ASCII text numbers
 - general terms: integer = signed value
 - general values: byte/char/octet = one char value; short/word = two char values; long = four char values

FILE INFO

Suffixes = ".mov", ".qt";  Mac OS Type = "MooV";  Mac OS Creator = "TVOD";  MIME="video/quicktime"

Standard single fork ASCII text file that is used for server-side scripts to generate QT related
text files on the fly or when a specific MIME is not registered on a host server.

QUICKTIME 4 ATOM HACK STRUCTURE

-> 1-4 bytes media type = byte to long ASCII uppercase text string
  - current types are Plain QT-styled text = 'TEXT' ; W3C SMIL = 'SMIL'
  - current types are RTSP link = 'RTSP' ; RFC SDP live session = 'SDP'
-> 1-4 bytes media handler = byte to long ASCII text lowercase string
  - current type is Text Media Handler = 'text'
-> 1 byte text separator = byte ASCII text character (eg. space or LF and/or CR)
-> above specified data structure

QUICKTIME 5 XML MIME BASED ATOM HACK LAYOUT

<?xml version="1.0" encoding="ISO-8859-1" ?>
<?quicktime type="type/subtype" ?>
above specified data structure

QUICKTIME 4 ATOM HACK EXAMPLES

*Plain QT-styled Text*

TEXTtext
{QTtext} {timeScale:30} {width:320} {height:240} {timeStamps:absolute} {language:1} {textEncoding:0}
{font:courier} {size:12} {plain} {justify:left} {dropShadow:off} {anti-alias:off}
{textColor: 65535, 65535, 65535} {backColor: 0, 0, 0}
[00:00:00.00]
{dropShadowOffset: 3, 4}{dropShadowTransparency:127}{plain}{size:12}{ScrollIn:on}
                 {size:18}{textColor: 0, 0, 0}U  P  N
{plain}{extend}{size:10}     S E C O N D A R Y  A F F I L I A T E
{plain}{bold}{size:12}{textColor: 65535, 65535, 65535}      SHOW: {plain}{size:10}{HREF:<http://foo.com/qt.mov> T<_blank>}PRODUCTION NAME{endHREF}
{plain}{bold}{size:12}     TITLE: {plain}{size:10}"episode"
{plain}{bold}{size:12}     AIR #: {plain}{size:10}UPN s##
{plain}{bold}{size:12}    PROD #: {plain}{size:10}#####-###
{plain}{bold}{size:12}      ID #: {plain}{size:10}TAPE - s##
{plain}{bold}{size:12}      CODE: {plain}{size:10}S## UPN s## LOC 1.0
{plain}{bold}{size:12}     AUDIO: {plain}{size:10}STEREO
{plain}{bold}{size:12} FEED DATE: {plain}{size:10}mm/dd/yyyy
{plain}{bold}{size:12}  PRODUCER: {plain}{size:10}{HREF:http://foo.com/}VIDEO PRODUCTION{endHREF}              WK##
[00:00:30.00]

*W3C SMIL XML Tags*

SMILtext
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 1.0//EN"
                      "http://www.w3c.org/TR/REC-smil/SMIL10.dtd">
<smil xmlns:qt="http://www.apple.com/quicktime/resources/smilextensions"
            qt:time-slider="true"
            qt:autoplay="false"
            qt:immediate-instantiation="false"
            qt:chapter-mode="clip">
<head>
	<layout>
		<meta name="full-name" content="Sample SMIL Presention"/>
		<meta name="information" content="This is a QT-related SMIL example"/>
		<meta name="copyright" content="(c) whoever"/>
		<root-layout width="0" height="0" id="window" title="MPEG Audio Playlist"/>
		<region top="0" left="0" width="0" height="0" id="audio" fit="fill"/>
	</layout>
</head>
<body>
	<seq abstract="Themes" author="Various">
		<audio src="http://host:port/audio01.m1a" region="audio" alt="MPEG-1 Audio Stream" qt:chapter="Audio Stream 1" />
		<audio src="http://host:port/audio02.m1a" region="audio" alt="MPEG-1 Audio Stream" qt:chapter="Audio Stream 2" />
	</seq>
</body>
</smil>

*RFC Session Descriptors*

Note: The IETF have documented this in RFC 2327

SDPtext
v=0
o=- 42945 9 IN IP4 0.0.0.0
s=Title of the Session
i=Extended Information Text
u=http://extended-info.web.site/
e=Session Contact <user@host.name>
p=Session Contact Phone Number <+1 123 555 6789>
t=0 0
a=type:broadcast
a=channel:Demo H.261 (Mbone)
a=copyright: whoever
a=tool:Broadcaster Software
a=cat:MBone/Others
m=video 57170 RTP/AVP 31 32 96
c=IN IP4 0.0.0.0/0
b=AS:2500
a=framerate:30
a=rtpmap:96 WBIH/90000
a=source:video 0.0.0.0 file 1 loop
m=audio 21116 RTP/AVP 0
c=IN IP4 0.0.0.0/0
b=AS:2500
a=source:audio 0.0.0.0 file 1 loop

*Real Time Streaming link*

RTSPtext
rtsp://host:port/directory/streaming_file_01.mov
width="320"
height="240"
timescale="600"
duration="24000"
offset="0"
next="streaming_file_02.mov"
