|
|
|
|
Media
Object Server (MOS)
Working
Draft for MOS Protocol version 2.5 | ||
| <!ELEMENT mosAck (objID, objRev, status, statusDescription)> |
Allows
an NCS to request the Media Object Server to create a Media Object with
specific metadata associated with it.
mosAck
(if object can be created then status description = objID)
NACK
(if object CANNOT be created. status description = reason for error)
mosObj
|
<!ELEMENT
mosObjCreate (objSlug, objType, objTB, objDur?, time?, createdBy?
Description?)> |
|
<mos>
|
Request for a complete
Playlist description of Running.
NOTE: This message
can be used by either NCS or MOS
A MOS can use this to
“resync” it’s Playlist with the NCS Running Order or to obtain a full
description of the Playlist at any time.
An NCS can use this as a diagnostic tool to check the order of the Playlist constructed in the MOS versus the sequence of Items in the Running Order.
List of Running Order in
response to roReq message.
NOTE: This message
can be used by either NCS or MOS
A MOS can use this to
“resync” it’s Playlist with the NCS Running Order or to obtain a full
description of the Playlist at any time.
An NCS can use this as a
diagnostic tool to check the order of the Playlist constructed in the MOS
versus the sequence of Items in the Running Order.
roList is functionally similar to roCreate.
This message enables sending the body of story from the NCS to Media Object Server. Item references (storyItem) are embedded within the story’s text. These item references are not intended to be displayed on the prompter, but instead can optionally be used to send a message (roItemCue) to the media object server indicated in the embedded reference. Composed from information in the embedded item reference, the roItemCue message could be generated by the prompter as this hidden text (storyItem) scrolls past the imaginary execution/read line of the prompter display.
The storyItem information can also optionally allow the prompter vendor to display the length of the embedded object and perhaps even a countdown.
Prompters, radio systems, external archive systems, accounting systems, and potentially other systems and devices can make use of this information.
roAck
MOS Upper Port (10541) - Running Order
|
<!ELEMENT
roStorySend (roID, storyID, storySlug, storyBody)> |
|
<mos> |
Allows
a device, such as prompter, to send a time cue for an Item.
This command allows a non MOS or NCS device to
send a time cue to the parent Media Object Server (or Automation MOS) for a
specific Item event. This is not
a command to execute or play. Instead,
this is intended to provide feedback to the parent device as to the current
execution point of the program.
The values <mosID>, <roID>, <storyID>,
and <itemID> are derived from the Item reference embedded in a story.
The story information is assumed to be transmitted via the roStorySend
message.
The Media Object Server or automation device that
receives this command may use this information to update status or generate
device triggers. Optionally, the
message may be redirected to the NCS as a means of providing additional status
information.
roAck
mos
mosID
ncsID
roItemCue
mosID
roID
storyID
itemID
roEv
|
<!ELEMENT
roItemCue (mosID, roID, storyID, itemID, roEventType, roEventTime)> |
<mos>
<mosID>prompt.station.com</mosID>
<ncsID>ncs.station.com</ncsID>
<roItemCue>
<mosID>videoserver.station.group.com</mosID>
<roID>96857485</roID>
<storyID>5983A501:0049B924:8390EF2B</storyID>
<itemID>234343234</itemID>
<roEventType>Prompter</roEventType>
<roEventTime>2000-03-20T10:45:00.00</roEventTime>
</roItemCue>
</mos>
An example
of a notification message sent to the parent MOS. Note the counterintuitive assignment of the parent MOS name
to the <ncsID> field.
<mos>
<mosID>prompt.station.com</mosID>
<ncsID>videoserver.station.group.com</ncsID>
<roItemCue>
<mosID>videoserver.station.group.com</mosID>
<roID>96857485</roID>
<storyID>5983A501:0049B924:8390EF2B</storyID>
<itemID>234343234</itemID>
<roEventType>Prompter</roEventType>
<roEventTime>2000-03-20T10:45:00.00</roEventTime>
</roItemCue>
</mos>
Allow
basic control of a media object server via simple commands such as READY
EXECUTE PAUSE STOP and SIGNAL
The roCtrl message allows control of a running
order at three levels, the Running Order itself, Story, and Item. The commands READY, EXECUTE, PAUSE and STOP, as well as general
indicator, SIGNAL, can be addressed at each level. In other words, a single command can begin EXECUTION of an entire
Running Order, of a Story containing multiple Items, or of a single Item.
roCtrlTime is an optional field which provides a
mechanism to time stamp the time of message transmission, or optionally, to
provide a time in the immediate future at which the MOS should execute the
command. The general
rule should
be that if a MOS receives an roCtrl message with a roCtrlTime in the past, it
should execute the message immediately. If
the time the roCtrlTime is in the future the MOS should wait until that time
to execute the command. The use of roCtrlTime should allow synchronous execution of events on multiple Media
Object Servers, provided all servers use the same time reference and all
commands are issued contain the same roCtrlTime with a future value.
roCtrl messages are not intended to provide frame
accurate, real-time control of machines. Instead, these commands provide near real-time transmission
of commands, subject to unpredictable network propagation delays and latency.
It is important to note that these commands only
operate on Items already in a play list.
It is also assumed that if Execution begins at
some point in a Running Order, Execution will continue, provided linkage is explicitly defined between each Item (itemTrigger = CHAINED).
The optional SIGNAL roCtrlCmd is intended for use
by Prompter devices. Such devices
may SIGNAL that a Running Order, Story, or Item has passed by the “read line”
in the device, thereby providing near real-time feedback to other systems as
to the progress of a show.
MOS Upper Port (10541) - Running Order
mos
mosID
ncsID
roCtrl
roID
storyID?
itemID?
roCtrlCmd
roCtrlTime?
Example of Story Execution
<mos>
<mosID>prompt.station.com</mosID>
<ncsID>ncs.station.com</ncsID>
<roCtrl>
<roID>96857485</roID>
<storyID>5983A501:0049B924:8390EF2B</storyID>
<roCtrlCmd>EXECUTE</roCtrlCmd>
<roCtrlTime>2000-03-20T10:45:00.00
</roCtrl>
/mos>
Example of Running Order
Execution
<mos>
<mosID>prompt.station.com</mosID>
<ncsID>ncs.station.com</ncsID>
<roCtrl>
<roID>96857485</roID>
<roCtrlCmd>EXECUTE</roCtrlCmd>
<roCtrlTime>2000-03-20T10:45:00.00
</roCtrl>
</mos>
Changed
Time/Date: Time the object was last changed in the MOS. Format is
YYYY-MM-DD'T'hh:mm:ss, e.g. 1999-04-11T14:22:07.
Last
Changed by: Name of the person or process that last changed the object in the
MOS. This can be stored in a language other than English.
Creation
Time/Date: Time the object was created in the MOS. Format is
YYYY-MM-DD'T'hh:mm:ss, e.g. 1999-04-11T14:22:07.
Created
by: Name of the person or process that created the object in the MOS. This can
be stored in a language other than English. 128 chars max.
Object
Description: Text description of the MOS object. No maximum Length is defined.
This can be stored in a language other than English.
Date
of Manufacture.
Emphasized
Text: markup within description and p to emphasize text.
HW
Revision: 128 chars max.
Italics: Specifies that text between tags is in Italics.
Identification
of a Machine: text. 128 chars max.
Item:
Container for item information within a Running Order message.
Item
Channel: Channel requested by the NCS for MOS to playback a running order
item. 128 chars max.
Item
Editorial Duration: in number of samples 0XFFFFFFFF max.
Editorial
Start: in number of samples 0XFFFFFFFF max.
Item
ID: Defined by NCS, UID not required. 128 chars max.
Item
Slug: Defined by NCS. 128 chars max
Item
Air Trigger: “MANUAL”, “TIMED” or “CHAINED”.
CHAINED
(sign +/-) (value in # of samples)
CHAINED
-10 would start the specified clip 10 samples before the proceeding clip
ended. CHAINED 10 would start the specified clip 10 samples after the
preceding clip ended, thus making a pause of 10 samples between the clips.
There is a space character between the word CHAINED and the value.
Macro
Transition In: Defined by MOS. 128 chars max.
Macro
Transition Out: Defined by MOS. 128 chars max.
Manufacturer:
Text description. 128 chars max.
Model:
Text description. 128 chars max.
Modified by: Name of the person or process that last modified the object in the MOS. This can be stored in a language other than English. 128 chars max.
MOS
ID: Character name for the MOS unique within a particular installation.
MOS
Revision: Text description. 128 chars max.
NCS
ID: Character name for the NCS unique within a particular installation. 128
chars max.
Air
Status: “READY” or “NOT READY”.
Object
Duration: The number of samples contained in the object. For Still Stores this
would be 1. 0XFFFFFFFF MAX
Object
UID: Unique ID generated by the MOS and assigned to this object. 128 chars
max.
Object
Revision Number: 999 max.
Object
Slug: Textual object description. 128 chars max.
Object
Time Base: Describes the sampling rate of the object in samples per second.
For still stores this is 0. For PAL Video this would be 50. For NTSC it would
be 60. For audio it would reflect the audio sampling rate. Object Time Base is
used by the NCS to derive duration and other timing information. 0XFFFFFFFF
MAX
Object
Type: Choices are “STILL”, “AUDIO”, “VIDEO”.
Operational
Time: date and time of last machine start. Format is YYYY-MM-DD'T'hh:mm:ss,
e.g. 1999-04-11T14:22:07.
Paragraph:
Standard html delimitation for a new paragraph.
Item
Delay: Requested delay between items in ms 0XFFFFFFFF MAX.
Presenter instructions: Instructions to the anchor or presenter that are not to be read such as "Turn to 2-shot."
Package: Specifies that text is verbatim package copy as opposed to copy to be read by presenter.
Air
Ready Flag: “READY” or “NOT READY”.
Running
Order Channel: default channel requested by the NCS for MOS to playback a
running order. 128 chars max.
Running Order Control Command: READY,
EXECUTE, PAUSE and STOP, as well as general indicator, SIGNAL, can be
addressed
at each level. In other words, a single command can begin EXECUTION of
an entire Running Order, of a Story
containing
multiple Items, or of a single Item.
Running Order Control Time: roCtrlTime
is an optional field which provides a mechanism to time stamp the time of
message
transmission, or optionally, to provide a time in the immediate future at
which the MOS should execute the
command.
Running
Order Editorial Duration: duration of entire running order. Format in hh:mm:ss,
e.g. 00:58:25.
Running
Order Editorial Start: date and time requested by NCS for MOS to start
playback of a running order. Format is YYYY-MM-DD'T'hh:mm:ss, e.g.
1999-04-11T14:22:07.
Running Order Event Time: Time of the time cue sent to the parent MOS by the NCS for a specific item event.
Running Order Event Type: The type of event that is being queued in the Running order.
Running
Order UID: Unique Identifier defined by NCS. 128 chars max.
Running
Order Slug: Textual Running Order description. 128 chars max.
Running
Order Status: Options are: "OK" or error description. 128 chars max.
Running
Order Air Trigger: “MANUAL”, “TIMED” or “CHAINED”.
CHAINED
(sign +/-) (value in # of samples)
CHAINED
-10 would start the specified clip 10 samples before the proceeding clip
ended. CHAINED 10 would start the specified clip 10 samples after the
preceding clip ended, thus making a pause of 10 samples between the clips.
There is a space character between the word CHAINED and the value.slug
Textual Object ID: This is the text slug of the object and is stored in the
native language. This can be stored in a language other than English. 128
chars max.
Serial
Number: text serial number. 128 chars max.
Status:
Options are “NEW” “UPDATED” “MOVED” “BUSY “ “DELETED”,
"NCS CTRL", "MANUAL CTRL", "READY", "NOT
READY", "PLAY," "STOP".
Status
Description: textual description of status. 128 chars max.
Story:
Container for story information in a Running Order message.
Story Body: The actual text of the story within a running order.
Story UID: Defined by the NCS. 128 chars max.
Story Item: An item imbedded into a story that can be triggered when that point in the story is reached in the teleprompter.
Story Presenter: The anchor or presenter of a story within an running order.
Story Presenter Read Rate: The read rate of the anchor or presenter of a story within a running order.
Story
Slug: Textual Story description. 128 chars max.
Software
Revision: (MOS) Text description. 128 chars max.
Tab:
tabulation markup within description and p.
Time:
Time object changed status. Format is YYYY-MM-DD'T'hh:mm:ss, e.g.
1999-04-11T14:22:07.
Underline:
Specifies that text between tags is to be underlined.
Purpose
Allows for identification of the parent Media Object Server when the
play list is forcefully constructed on a machine other than an object’s parent
Media Object Server, i.e. when a play list is constructed in a MOS Prompter.
Description
The format of the message remains the same.
The only change is the optional addition of the existing mosID tag. The value of this tag, if appropriately used, is set to the ID of the
referenced object’s parent Media Object Serve. This change is reflected throughout all MOS
messages which include the <item> structure.
Structural Outline
item
itemID
itemSlug
mosID
objID
itemChannel
ItemEdStart
ItemEdDur
ItemTrigger
macroIn
macroOut
Syntax
|
<!ELEMENT
item (itemID, itemSlug?, mosID?, objID, itemChannel?, itemEdStart?,
itemEdDur?, itemTrigger?, macroIn?, macroOut?)> |
Example
|
<mos> |
<!-- 1
-->
<!ELEMENT
mosID (#PCDATA)>
<!ELEMENT
ncsID (#PCDATA)>
<!--
mos Message Types -->
<!ELEMENT
mosAck (objID, objRev, status, statusDescription)>
<!ELEMENT
mosObj (objID, objSlug, objType, objTB, objRev, objDur, status, objAir,
createdBy, created, changedBy, changed, description)>
<!ELEMENT
mosReqObj (objID)>
<!ELEMENT
mosReqAll (pause)>
<!ELEMENT
mosListAll ((objID, objSlug, objType, objTB, objRev, objDur, status, objAir,
createdBy, created, changedBy, changed, description)*)>
<!ELEMENT mosObjCreate (objSlug, objType, objTB, objDur?, time?, createdBy?
Description?)>
<!ELEMENT
roAck (roID, roStatus, (storyID, itemID, objID, status)*)>
<!ELEMENT
roCreate (roID, roSlug, roChannel?, roEdStart?, roEdDur?, roTrigger,
story*)>
<!ELEMENT
roReplace (roID, roSlug, roChannel?, roEdStart?, roEdDur?, roTrigger,
story*)>
<!ELEMENT
roDelete (roID)>
<!ELEMENT
roReq (roID)>
<!ELEMENT
roList (roID, roSlug, roChannel?, roEdStart?, roEdDur?, roTrigger, story*)>
<!ELEMENT
roStoryAppend (roID, story+)>
<!ELEMENT
roStoryInsert (roID, storyID, story+)>
<!ELEMENT
roStoryReplace (roID, storyID, story+)>
<!ELEMENT
roStorySwap (roID, storyID, storyID)>
<!ELEMENT
roStoryDelete (roID, storyID+)>
<!ELEMENT roStorySend (roID, storyID, storySlug, storyBody)>
<!ELEMENT
roItemStat (roID, storyID, itemID, objID, status, time)>
<!ELEMENT
roStat (roID, status, time)>
<!ELEMENT
roReadyToAir (roID, roAir)>
<!ELEMENT
roReqAll EMPTY>
<!ELEMENT
roListAll ((roID, roSlug?, roChannel?, roEdStart?, roEdDur?, roTrigger?)*)>
<!ELEMENT roItemCue (mosID, roID, storyID, itemID, roEventType, roEventTime)>
<!ELEMENT roCtrl (roID, storyID?, itemID?, roCtrlCmd, roCtrlTime?)>
<!ELEMENT
heartbeat (time)>
<!ELEMENT
reqMachInfo EMPTY>
<!ELEMENT
listMachInfo (manufacturer, model, hwRev, swRev, DOM, SN, ID, time, opTime?,
mosRev)>
<!-- 2
-->
<!ELEMENT
objID (#PCDATA)>
<!ELEMENT
objSlug (#PCDATA)>
<!ELEMENT
objType (#PCDATA)>
<!ELEMENT
objTB (#PCDATA)>
<!ELEMENT
objRev (#PCDATA)>
<!ELEMENT
objDur (#PCDATA)>
<!ELEMENT
status (#PCDATA)>
<!ELEMENT
objAir (#PCDATA)>
<!ELEMENT
createdBy (#PCDATA)>
<!ELEMENT
created (#PCDATA)>
<!ELEMENT
changedBy (#PCDATA)>
<!ELEMENT
changed (#PCDATA)>
<!ELEMENT
description (#PCDATA | p | em | tab)*>
<!ELEMENT
statusDescription (#PCDATA)>
<!ELEMENT
pause (#PCDATA)>
<!ELEMENT
roID (#PCDATA)>
<!ELEMENT
roSlug (#PCDATA)>
<!ELEMENT
story (storySlug?, storyID, item*)>
<!ELEMENT storyBody (storyPresenter*, storyPresenterRR*, p*, storyItem*)>
<!ELEMENT
roStatus (#PCDATA)>
<!ELEMENT
storyID (#PCDATA)>
<!ELEMENT
itemID (#PCDATA)>
<!ELEMENT
time (#PCDATA)>
<!ELEMENT
roAir (#PCDATA)>
<!ELEMENT
roChannel (#PCDATA)>
<!ELEMENT
roEdStart (#PCDATA)>
<!ELEMENT
roEdDur (#PCDATA)>
<!ELEMENT
roTrigger (#PCDATA)>
<!ELEMENT roCtrlCmd (#PCDATA)>
<!ELEMENT roCtrlTime (#PCDATA)>
<!ELEMENT
roEventType (#PCDATA)>
<!ELEMENT roEventTime (#PCDATA)>
<!ELEMENT manufacturer (#PCDATA)>
<!ELEMENT
model (#PCDATA)>
<!ELEMENT
hwRev (#PCDATA)>
<!ELEMENT
swRev (#PCDATA)>
<!ELEMENT
DOM (#PCDATA)>
<!ELEMENT
SN (#PCDATA)>
<!ELEMENT
ID (#PCDATA)>
<!ELEMENT
opTime (#PCDATA)>
<!ELEMENT mosRev (#PCDATA)>
<!-- 3
-->
<!ELEMENT
storySlug (#PCDATA)>
<!ELEMENT storyPresenter (#PCDATA)>
<!ELEMENT storyPresenterRR (#PCDATA)>
<!ELEMENT storyItem (itemID, itemSlug?, objID, mosID*, itemChannel?,
itemEdStart?, itemEdDur?, itemTrigger?, macroIn?, macroOut?)>
<!ELEMENT
p (#PCDATA | em | tab | pi |pkg | b | i | u)*>
<!ELEMENT item (itemID, itemSlug?, objID, mosID*, itemChannel?, itemEdStart?,
itemEdDur?, itemTrigger?, macroIn?, macroOut?)>
<!-- 4
-->
<!ELEMENT
itemSlug (#PCDATA)>
<!ELEMENT
itemChannel (#PCDATA)>
<!ELEMENT
itemEdStart (#PCDATA)>
<!ELEMENT
itemEdDur (#PCDATA)>
<!ELEMENT
itemTrigger (#PCDATA)>
<!ELEMENT
macroIn (#PCDATA)>
<!ELEMENT
macroOut (#PCDATA)>
<!ELEMENT
pi (#PCDATA | b | i | u)*>
<!ELEMENT pkg (#PCDATA | b | i
| u)*>
<!ELEMENT b (#PCDATA | i |
u)*>
<!ELEMENT i (#PCDATA | b |
u)*>
<!ELEMENT u (#PCDATA | b | i)*>
<!ELEMENT
tab (#PCDATA)>
<!--
Attributes -->
<!ATTLIST
mos
version
CDATA #FIXED "-//MOS Consortium//DTD MOS 2.5//EN"
changeDate
CDATA #FIXED "31 October 2000">
<!ATTLIST
metadata xml:space (default | preserve) 'preserve'>
The Unicode Standard, Version 2.0: The
Unicode Consortium. Addison-Wesley. ISBN 0-201-48345-9. ($62.95)
Robin Cover's XML resource page is perhaps
the most useful and extensive available on the Web. http://www.oasis-open.org/cover/xml.html
|
The MOS Project Last Updated 3/22/07 Web Discussion Board |