From 539d23d3590c47ff75d8105c5feb880e4eaae101 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Thu, 24 Mar 2016 14:25:41 -0400 Subject: [PATCH] 2016-03-24 Fred Gleason * Ported 'docs/cae.sxw' to DocBook-XML5 in 'docs/docbook/cae.xml'. * Ported 'docs/web_api.odt' to DocBook-XML5 in 'docs/dockbook/web_api.xml'. --- ChangeLog | 4 + INSTALL | 21 + Makefile.am | 1 + configure.ac | 11 + docs/Makefile.am | 10 +- docs/cae.sxw | Bin 24036 -> 0 bytes docs/docbook/Makefile.am | 54 + docs/docbook/cae.xml | 1755 +++++++++++++++++++++ docs/docbook/web_api.xml | 3105 ++++++++++++++++++++++++++++++++++++++ docs/web_api.odt | Bin 29477 -> 0 bytes rivendell.spec.in | 4 +- 11 files changed, 4959 insertions(+), 6 deletions(-) delete mode 100644 docs/cae.sxw create mode 100644 docs/docbook/Makefile.am create mode 100644 docs/docbook/cae.xml create mode 100644 docs/docbook/web_api.xml delete mode 100644 docs/web_api.odt diff --git a/ChangeLog b/ChangeLog index c8f531b2..6599f606 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15011,3 +15011,7 @@ scheduler codes in a case-insensitve manner. * Modified the return of the 'EditCut' web method to provide a full record in 'web/rdxport/carts.cpp'. +2016-03-24 Fred Gleason + * Ported 'docs/cae.sxw' to DocBook-XML5 in 'docs/docbook/cae.xml'. + * Ported 'docs/web_api.odt' to DocBook-XML5 in + 'docs/dockbook/web_api.xml'. diff --git a/INSTALL b/INSTALL index 4b203217..0f916673 100644 --- a/INSTALL +++ b/INSTALL @@ -98,6 +98,27 @@ TwoLAME - MPEG Layer 2 Encoder Library. Needed for MPEG Layer 2 exporting and capture. Available at http://www.twolame.org/. +DOCUMENTATION +------------- +The larger pieces of the Rivendell documentation are written in XML-DocBook5. +Pre-generated docs are included in the source tarball, so special tools will +not normally be required to view or install them. However, if you need to +rebuild them (either because you've modified the DocBook sources or are +installing from the primary GitHub repository), then you will need the +following: + +XML-DocBook5 Stylesheets. Available at +http://sourceforge.net/projects/docbook/. You will also need to create a +$DOCBOOK_STYLESHEETS variable in your environment that points to the top +of the stylesheet tree. More information can be found at +http://www.docbook.org/tdg5/en/html/appa.html#s.stylesheetinstall. On +RHEL-ish systems, they are also available in the 'docbook5-style-xsl' +package. + +xsltproc. Command line XSLT processor. Available at +http://xmlsoft.org/XSLT/xsltproc2.html + + INSTALLATION There are three major steps to getting a Rivendell system up and running. They are: diff --git a/Makefile.am b/Makefile.am index 4fc4bf09..d9001aec 100644 --- a/Makefile.am +++ b/Makefile.am @@ -31,6 +31,7 @@ endif if ALSA_RD_AM ALSACONFIG_RD_OPT = rdalsaconfig endif + SUBDIRS = icons\ helpers\ lib\ diff --git a/configure.ac b/configure.ac index 8a730114..ea9878f8 100644 --- a/configure.ac +++ b/configure.ac @@ -66,6 +66,8 @@ AC_ARG_ENABLE(jack,[ --disable-jack disable JACK sound support], [JACK_DISABLED=yes],[]) AC_ARG_ENABLE(alsa,[ --disable-alsa disable direct ALSA sound support], [ALSA_DISABLED=yes],[]) +AC_ARG_ENABLE(docbook,[ --disable-docbook disable building of documentation],[DOCBOOK_DISABLED=yes],[]) + AC_ARG_ENABLE(gpio,[ --disable-gpio disable General Purpose Input/Output GPIO support], [GPIO_DISABLED=yes],[]) AC_ARG_ENABLE(pam,[ --disable-pam disable Rivendell PAM pam_rd.so support], @@ -223,6 +225,14 @@ if test -z $MP4V2_DISABLED ; then fi fi +# +# Build DocBook Items? +# +if test -z $DOCBOOK_DISABLED ; then + USING_DOCBOOK=yes +fi +AM_CONDITIONAL([DOCBOOK_AM], [test "$USING_DOCBOOK" = yes]) + # # Set Hard Library Dependencies # @@ -466,6 +476,7 @@ AC_CONFIG_FILES([rivendell.spec \ web/tests/Makefile \ conf/Makefile \ docs/Makefile \ + docs/docbook/Makefile \ docs/examples/Makefile \ docs/man/Makefile \ docs/tables/Makefile \ diff --git a/docs/Makefile.am b/docs/Makefile.am index 5f569dd3..78956eae 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -2,7 +2,7 @@ ## ## docs/automake.am for Rivendell ## -## (C) Copyright 2002-2006 Fred Gleason +## (C) Copyright 2002-2016 Fred Gleason ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License version 2 as @@ -19,14 +19,17 @@ ## ## Use automake to process this into a Makefile.in -SUBDIRS = examples\ +if DOCBOOK_AM + DOCBOOK_AM_OPT = docbook +endif + +SUBDIRS = $(DOCBOOK_AM_OPT) examples\ man\ tables EXTRA_DIST = ALSA.txt\ ando_interface.odt\ asound.conf-sample\ - cae.sxw\ catchd.txt\ colors\ copy_split_format.odt\ @@ -49,7 +52,6 @@ EXTRA_DIST = ALSA.txt\ SAGE_ENDEC.txt\ scheduler_formats.ods\ SWITCHERS.txt\ - web_api.odt\ WIN32.txt\ WINGS_FILTER.txt diff --git a/docs/cae.sxw b/docs/cae.sxw deleted file mode 100644 index b32c034a647ac1a1ac5e993907f80fe2411e9a94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24036 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 z 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 +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License version 2 as +## published by the Free Software Foundation. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public +## License along with this program; if not, write to the Free Software +## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +## +## Use automake to process this into a Makefile.in + +## +## Build Dependencies +## +%.html: %.xml + xsltproc -o $@ $(DOCBOOK_STYLESHEETS)/xhtml/docbook.xsl $< +%.pdf: %.xml + xsltproc $(DOCBOOK_STYLESHEETS)/fo/docbook.xsl $< | fop - -pdf $@ +%.1: %.xml + xsltproc $(DOCBOOK_STYLESHEETS)/manpages/docbook.xsl $< +%.8: %.xml + xsltproc $(DOCBOOK_STYLESHEETS)/manpages/docbook.xsl $< + +all-local: cae.html\ + cae.pdf\ + web_api.html\ + web_api.pdf + +EXTRA_DIST = cae.html\ + cae.pdf\ + cae.xml\ + web_api.html\ + web_api.pdf\ + web_api.xml + +CLEANFILES = *~ +MAINTAINERCLEANFILES = *~\ + *.1\ + *.8\ + *.html\ + *.pdf\ + aclocal.m4\ + configure\ + Makefile.in diff --git a/docs/docbook/cae.xml b/docs/docbook/cae.xml new file mode 100644 index 00000000..f26ee313 --- /dev/null +++ b/docs/docbook/cae.xml @@ -0,0 +1,1755 @@ + +
+ + Rivendell Core Audio Control Protocol + 0.9.1 + + + Fred + Gleason + fredg@paravelsystems.com + + + + + + Overview + + Formats used for audio storage are Broadcast Wave Format (BWF), as + specified in + EBU Tech Pub 3285 + with annexes. + + + Commands to the Core Audio Engine are passed by means of a + TCP SOCK_STREAM connection to TCP port 5005 on the host server. + + + Commands have the following general syntax: + + + cmd-code [arg] [...]! + + + + + cmd-code + + + + A two letter command code, describing the generic action to be + performed + + + + + + arg + + + + Zero or more arguments, delimited by spaces or, if the last + argument, by ! (see below) + + + + + + ! + + + + The ASCII character 33, indicating the end of the command sequence. + + + + + + Unless otherwise specified, the engine will echo back the command with a + + or - before the !, to indicate the success or failure of the command + execution. + + + + + Connection Management + + <command>Password</command> + + Pass a password to the server for authentication. + + + PW + password! + + + + + password + + + A password to be supplied before granting the client access. + + + + + Returns: PW +! to indicate success, + PW -! to indicate failure + + + + <command>Drop Connection</command> + + Drop the TCP connection and end the session. + + + DC! + + + + + + Playback Operations + + <command>Load Playback</command> + + Prepare an audio interface to play an audio file. + + + LP card-num + name! + + + + + card-num + + + The number of the audio adapter to use. + + + + + name + + + The base name of an existing file in the audio storage filesystem. + + + + + Returns: LP + card-num + name + stream-num + conn-handle! + + + + + stream-num + + + + The stream number selected to be used, or a -1 in case of error. + This is relative to the audio adapter selected. + + + + + + conn-handle + + + + The connection handle. This will be used to refer to the playback + event in all subsequent calls to CAE. + + + + + + + + <command>Unload Playback</command> + + Free an audio playback interface. + + + UP conn-handle! + + + + + conn-handle + + + + The connection handle of the playback event, from the + Load Playback call. + + + + + + + + <command>Play Position</command> + + Position the playback pointer. + + + PP conn-handle + position! + + + + + conn-handle + + + + The connection handle of the playback event, from the + Load Playback call. + + + + + + position + + + + Position in file, in milliseconds. + + + + + + + + <command>Play</command> + + Play the loaded file from the current position. + + + PY conn-handle + length + speed + pitch-flag! + + + + + conn-handle + + + + The connection handle of the playback event, from the + Load Playback call. + + + + + + length + + + + Playback length in milliseconds, relative to the current start + position. + + + + + + speed + + + + Playback speed in thousandths of a percent. 100000 = normal speed. + + + + + + pitch-flag + + + + Controls whether audio pitch changes with speed or not. 0 = no, + 1 = yes. + + + + + + + + <command>Stop Playback</command> + + Stop playback of the specified playback interface. + + + SP conn-handle! + + + + + conn-handle + + + + The connection handle of the playback event, from the + Load Playback call. + + + + + + + + <command>Timescaling Support</command> + + Query CAE if card-num supports timescaling. + + + TS card-num! + + + + + card-num + + + + The number of the audio adapter to query. + + + + + + Returns: TS + card-num + +|-! + + + + + + Record Operations + + <command>Load Recording</command> + + Prepare an audio interface to capture an audio file. + + + LR + card-num + port-num + coding + channels + samp-rate + bit-rate + name! + + + + + card-num + + + + The number of the audio adapter to query. + + + + + + port-num + + + + The port number to use. This is relative to the audio adapter + selected. + + + + + + coding + + + + 0 = PCM16, 1 = MPEG Layer 1, 2 = MPEG Layer 2, 4 = PCM24 + + + + + + channels + + + + 1 = Mono, 2 = Stereo + + + + + + samp-rate + + + + Sample Rate in samples/sec. 32000, 44100 or 48000 supported. + + + + + + bit-rate + + + + MPEG Bit Rate. For PCM, this should be zero. + + + + + + name + + + + The base name of a file in the audio storage filesystem. If the + file already exists, it will be overwritten, otherwise it will be + created. + + + + + + + + <command>Unload Recording</command> + + Free an audio capture interface. + + + UR card-num + stream-num! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + stream-num + + + + The stream number to use. This is relative to the audio adapter + selected. + + + + + + Returns: UR + card-num + stream-num + len! + + + + + len + + + + Length of recording, in mS. + + + + + + + + <command>Record</command> + + Record a loaded file. + + + RD card-num + stream-num + length + threshold! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + stream-num + + + + The stream number to use. This is relative to the audio adapter + selected. + + + + + + length + + + + Length of time to record in milliseconds. If zero, record until + told to stop. + + + + + + threshold + + + + Threshold of audio detected at which to start recording, in + 1/100 dBFs. If '0', start immediately. + + + + + + Returns: When recording actually begins, a Record Start (RS) + confirmation will be echoed back. If record time expires a Stop Record + (SR) confirmation will be echoed back. + + + + + <command>Record Start</command> (Receive Only) + + Receive-only signal to indicate recording has actually + started (as with a VOX event, where actual recording may begin some + time after the interface is placed into record). + + + RS card-num + stream-num! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + stream-num + + + + The stream number to use. This is relative to the audio adapter + selected. + + + + + + + + + Mixer Operations + + <command>Set Input Volume</command> + + Set the volume of an input stream. + + + IV card-num + stream-num + level! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + stream-num + + + + The stream number to use. This is relative to the audio adapter + selected. + + + + + + level + + + + The level, in hundreths of a dB. + + + + + + + + <command>Set Output Volume</command> + + Set the volume of an output stream. + + + OV card-num + stream-num + port-num + level! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + stream-num + + + + The stream number to use. This is relative to the audio adapter + selected. + + + + + + port-num + + + + The port number to use. This is relative to the audio adapter + selected. + + + + + + level + + + + The level, in hundreths of a dB. + + + + + + + + <command>Fade Output Volume</command> + + Transition the volume of an output stream over time. + + + FV card-num + stream-num + port-num + level + length! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + stream-num + + + + The stream number to use. This is relative to the audio adapter + selected. + + + + + + port-num + + + + The port number to use. This is relative to the audio adapter + selected. + + + + + + level + + + + The level, in hundreths of a dB. + + + + + + length + + + + The length of the transition, in milliseconds. + + + + + + + + <command>Set Input Level</command> + + Set the gain level of an input port. + + + IL card-num + port-num + level! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + stream-num + + + + The port number to use. This is relative to the audio adapter + selected. + + + + + + level + + + + The level, in hundreths of a dB. + + + + + + + + <command>Set Output Level</command> + + Set the gain level of an output port. + + + OL card-num + port-num + level! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + port-num + + + + The port number to use. This is relative to the audio adapter + selected. + + + + + + level + + + + The level, in hundreths of a dB. + + + + + + + + <command>Set Input Mode</command> + + Set the mode of an input stream. + + + IM card-num + stream-num + mode! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + port-num + + + + The stream number to use. This is relative to the audio adapter + selected. + + + + + + mode + + + + The mode, as follows: + + + + 0 + + + + Normal + + + + + + 1 + + + + Swap left and right channels + + + + + + 2 + + + + Left audio on both channels + + + + + + 3 + + + + Right audio on both channels + + + + + + + + + + + + <command>Set Output Mode</command> + + Set the mode of an output stream. + + + OM card-num + stream-num + mode! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + stream-num + + + + The stream number to use. This is relative to the audio adapter + selected. + + + + + + mode + + + + The mode, as follows: + + + + 0 + + + + Normal + + + + + + 1 + + + + Swap left and right channels + + + + + + 2 + + + + Left audio on both channels + + + + + + 3 + + + + Right audio on both channels + + + + + + + + + + + + <command>Set Input Vox Level</command> + + Set the VOX threshold level of an input stream. + + + IX card-num + stream-num + level! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + port-num + + + + The stream number to use. This is relative to the audio adapter + selected. + + + + + + level + + + + The level, in hundreths of a dB. + + + + + + + + <command>Set Input Type</command> + + Set the signal type of an input port. + + + IT card-num + port-num + type! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + port-num + + + + The port number to use. This is relative to the audio adapter + selected. + + + + + + type + + + + The mode, as follows: + + + + 0 + + + + Analog + + + + + + 1 + + + + AES3 Digital + + + + + + + + + + + + <command>Get Input Status</command> + + Request the status of an input port. + + + IS card-num + port-num! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + port-num + + + + The port number to use. This is relative to the audio adapter + selected. + + + + + + Returns: IS + card-num + port-num + status! + + + + + status + + + + The status, as follows: + + + + 0 + + + + OK + + + + + + 1 + + + + No Sync + + + + + + + + + + + + <command>Set Audio Passthrough Level</command> + + Set the gain of an audio passthrough path. + + + AL card-num + input-num + output-num + level! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + input-num + + + + The input number to use. This is relative to the audio adapter + selected. + + + + + + output-num + + + + The output number to use. This is relative to the audio adapter + selected. + + + + + + level + + + + The level, in hundreths of a dB. + + + + + + + + <command>Set Clock Source</command> + + Set source of an audio adapter's sample clock. Relevant only for + cards that feature AES3 inputs. + + + CS card-num + input-num! + + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + input-num + + + + The input number to use. This is relative to the audio adapter + selected. + + + + + + + + + External Operations + + <command>Open RTP Capture Channel</command> + + Open an RTP channel for audio capture. + + + CO card-num + port-num + udp-port + samp-rate + channels! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + udp-port + + + + The port number on the remote system to which to send RTP packets. + + + + + + samp-rate + + + + The requested sample rate. + + + + + + channels + + + + The requested number of channels. + + + + + + Returns: CO + card-num + port-num + udp-port + samp-rate + chans + pkt-size! + + + + + pkt-size + + + + The number of bytes to send per UDP packet. + + + + + + The actual sample rate and number of channels may be different from + those requested; clients must be prepared to detect and deal with this + possibility! + + + + + + JACK Operations + + <command>Connect Ports</command> + + Connect a JACK input port to an output port. If the connection was + successfully added, returns: + + + JC output-name + input-name! + + + + + output-name + + + + The name of the JACK output port, in format CLIENTNAME:PORTNAME. + + + + + + input-name + + + + The name of the JACK input port, in format CLIENTNAME:PORTNAME. + + + + + + + + <command>Disconnect Ports</command> + + Disconnect a JACK input port from an output port. If the connection was + successfully removed, returns: + + + JD output-name + input-name! + + + + + output-name + + + + The name of the JACK output port, in format CLIENTNAME:PORTNAME. + + + + + + input-name + + + + The name of the JACK input port, in format CLIENTNAME:PORTNAME. + + + + + + + + + Meter Commands + + <command>Meter Enable</command> + + Set UDP port to whcih to send meter update messages. + + + ME + udp-port! + + + + + udp-port + + + + UDP port number. + + + + + + + + + Meter Status Updates + + The following messages are sent by CAE to indicate current status and + audio levels. They are sent to the UDP port requested by the Meter + Enable ['ME'] command. + + + <command>Port Meter Levels</command> + + Send current meter level of output stream + + + ML + type + card-num + port-num + left-lvl + right-lvl! + + + + + type + + + + Type of meter. + + + + + I + + + + Input + + + + + + O + + + + Output + + + + + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + port-num + + + + The port number on the audio adapter. + + + + + + left-lvl + + + + Left channel level, in 100ths of dBFS. + + + + + + right-lvl + + + + Right channel level, in 100ths of dBFS. + + + + + + + + <command>Output Stream Meter Levels</command> + + Send current meter level of output stream + + + MO + card-num + port-num + left-lvl + right-lvl! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + port-num + + + + The port number on the audio adapter. + + + + + + left-lvl + + + + Left channel level, in 100ths of dBFS. + + + + + + right-lvl + + + + Right channel level, in 100ths of dBFS. + + + + + + + + <command>Output Stream Position</command> + + Output play position. + + + MP + card-num + stream-num + pos! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + stream-num + + + + The stream number on the audio adapter. + + + + + + pos + + + + The play position in mS. + + + + + + + + <command>Output Stream Status</command> + + The current output stream transport status. + + + MS + card-num + port-num + stream-num + status! + + + + + card-num + + + + The number of the audio adapter to use. + + + + + + port-num + + + + The port number on the audio adapter. + + + + + + stream-num + + + + The stream number on the audio adapter. + + + + + + status + + + + Current transport status. + + + + 0 + + + Stopped + + + + + 1 + + + Playing + + + + + + + + + + +
diff --git a/docs/docbook/web_api.xml b/docs/docbook/web_api.xml new file mode 100644 index 00000000..1a17006b --- /dev/null +++ b/docs/docbook/web_api.xml @@ -0,0 +1,3105 @@ + +
+ + Rivendell Web Interface API + + + Fred + Gleason + fredg@paravelsystems.com + + + + + + Data Types + + Data Types + + + + + + + TYPE + + + DESCRIPTION + + + + + + + DateTime + + + + xs:dateTime format string: + YYYY-MM-DDTHH:MM:SSZ|+HH:MM|-HH:MM + + + If no timezone information is specified, all values will be + assumed to be in the local timezone of the processing system. + + + + + + Date + + + + xs:date format string: + YYYY-MM-DDZ|+HH:MM|-HH:MM + + + If no timezone information is specified, all values will be + assumed to be in the local timezone of the processing system. + + + + + + Time + + + + xs:time format string: + HH:MM:SSZ|+HH:MM|-HH:MM + + + If no timezone information is specified, all values will be + assumed to be in the local timezone of the processing system. + + + + + + String + + + Text data, encoded + + + + +
+
+ + + Result Reporting + + Commands that return an error or do not return specialized data types + (e.g. audio data for the Export command) will return an XML document + describing the result of the command, in the following format: + + + +<RDWebResult> + <ResponseCode>resp_code</ResponseCode> + <ErrorString>resp_string</ErrorString> + <AudioConvertError>conv_error_code</AudioConvertError> +</RDWebResult> + + + + + + resp_code + + + + The HTTP result code, as defined in RFC2616 + + + + + + resp_string + + + + A text string describing the result, suitable for displaying in a UI + + + + + + conv_error_code + + + + An extended error code from the audio converter routines. These values + are defined in the RDAudioConvert::ErrorCode enumeration + in lib/rdaudioconvert.h. This parameter is optional. + + + + + + + + AddCart + Add a new cart + + Command Code: RDXPORT_COMMAND_ADDCART + + + Required User Permissions: Create Carts + + + A 403 error will be returned if the requested cart number is + not within the configured range for the specified group and + 'Enforce Cart Range' is set in RDAdmin->ManageGroups. + + + AddCart Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 12 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + GROUP_NAME + + + Name of Group + + + Mandatory + + + + + TYPE + + + Cart type + + + Valid values are "audio" or "macro" + + + + + CART_NUMBER + + + Number of Cart + + + Optional, default is to use next available cart number for + specified group + + + + +
+
+ + + AddCut + Add a new cut to an existing cart + + Command Code: RDXPORT_COMMAND_ADDCUT + + + Required User Permissions: Edit Audio + + + A 404 error will be returned if the + requested cart number is not authorized for the specified Rivendell user in + RDAdmin->ManageUsers->AssignGroupPerms. + + + AddCut Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 10 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + +
+
+ + + AssignSchedCode + Assign a scheduler code to an existing cart + + Command Code: RDXPORT_COMMAND_ASSIGNSCHEDCODE + + + Required User Permissions: Modify Carts + + + A 404 error will be returned if the + specified cart number is not authorized for the specified Rivendell user in + RDAdmin->ManageUsers->AssignGroupPerms. + + + AssignSchedCode Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 25 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + + CODE + + + Scheduler Code to assign + + + Mandatory + + + + +
+
+ + + AudioInfo + Get information about an entry in the audio store + + Command Code: RDXPORT_COMMAND_AUDIOINFO + + + Required User Permissions: none + + + AudioInfo Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 19 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + + CUT_NUMBER + + + Number of Cut + + + Mandatory + + + + +
+
+ + + AudioStore + Get information about the audio store + + Command Code: RDXPORT_COMMAND_AUDIOSTORE + + + Required User Permissions: none + + + AudioStore Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 23 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + +
+
+ + + DeleteAudio + Delete PCM/MPEG data from the audio store + + Command Code: RDXPORT_COMMAND_DELETEAUDIO + + + Required User Permissions: Delete Carts + + + DeleteAudio Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 3 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + + CUT_NUMBER + + + Number of Cut + + + Mandatory + + + + +
+
+ + + EditCart + + Write metadata changes for an existing cart into the + database + + + Command Code: RDXPORT_COMMAND_EDITCART + + + Required User Permissions: Modify Carts + + + A 404 error will be returned if the + requested cart belongs to a group that is not authorized for the + specified Rivendell user in RDAdmin->ManageUsers->AssignGroupPerms, or + if it is attempted to assign the cart to such a group. + + + A 409 error will be returned if the + requested cart's number falls outside the valid range for the requested + GROUP_NAME. + + + If the tags for an 'optional' field are omitted, then the respective + parameter on the target cart will be left unchanged. + + + EditCart Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 14 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + + INCLUDE_CUTS + + + Include cut data in return, 0 = no, 1 = yes + + + Optional, default is 0 + + + + + GROUP_NAME + + + Set Rivendell group + + + Optional + + + + + TITLE + + + Set Title + + + Optional + + + + + ARTIST + + + Set Artist + + + Optional + + + + + ALBUM + + + Set Album + + + Optional + + + + + YEAR + + + Set Year + + + Optional + + + + + LABEL + + + Set Record Label + + + Optional + + + + + CLIENT + + + Set Client + + + Optional + + + + + AGENCY + + + Set Agency + + + Optional + + + + + PUBLISHER + + + Set Publisher + + + Optional + + + + + COMPOSER + + + Set Composer + + + Optional + + + + + USER_DEFINED + + + Set User Defined + + + Optional + + + + + USER_CODE + + + Set User Code + + + Optional + + + + + ENFORCE_LENGTH + + + Set Enforce Length State + + + Optional, Numeric, 0 = No, 1 = Yes + + + + + FORCED_LENGTH + + + Set Forced Length + + + Optional, in milliseconds + + + + + ASYNCHRONOUS + + + Set Asynchronous + + + Optional, Numeric, 0 = No, 1 = Yes + + + + + OWNER + + + Set Owner + + + Optional + + + + + NOTES + + + Set Notes Text + + + Optional + + + + +
+
+ + + EditCut + + Write metadata changes for an existing cut into the database + + + Command Code: RDXPORT_COMMAND_EDITCUT + + + Required User Permissions: Edit Audio + + + A 404 error will be returned if the + requested cart belongs to a group that is not authorized for the + specified Rivendell user in RDAdmin->ManageUsers->AssignGroupPerms. + + If the tags for an 'optional' field are omitted, then the respective + parameter on the target cart will be left unchanged. + + + + EditCut Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 15 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + + CUT_NUMBER + + + Number of Cut + + + Mandatory + + + + + EVERGREEN + + + Set the Evergreen Falg, valid values are 0 = no, 1 = yes + + + Optional + + + + + DESCRIPTION + + + Set Description + + + Optional + + + + + OUTCUE + + + Set Outcue + + + Optional + + + + + ISRC + + + Set International Standard Recording Code + + + Optional + + + + + ISCI + + + Set Internatinal Standardized Commercial Identifier + + + Optional + + + + + START_DATETIME + + + Set Start Date/Time + + + Optional, RFC-822 format + + + + + END_DATETIME + + + Set End Date/Time + + + Optional, RFC-822 format + + + + + MON + + + Set Monday daypart flag + + + Optional, 0 = no, 1 = yes + + + + + TUE + + + Set Tuesday daypart flag + + + Optional, 0 = no, 1 = yes + + + + + WED + + + Set Wedensday daypart flag + + + Optional, 0 = no, 1 = yes + + + + + THU + + + Set Thursday daypart flag + + + Optional, 0 = no, 1 = yes + + + + + FRI + + + Set Friday daypart flag + + + Optional, 0 = no, 1 = yes + + + + + SAT + + + Set Saturday daypart flag + + + Optional, 0 = no, 1 = yes + + + + + SUN + + + Set Sunday daypart flag + + + Optional, 0 = no, 1 = yes + + + + + START_DAYPART + + + Set Start daypart time + + + Optional, RFC-822 format + + + + + END_DAYPART + + + Set End daypart time + + + Optional, RFC-822 format + + + + + WEIGHT + + + Set rotation weight + + + Optional, numeric + + + + + START_POINT + + + Set Start Marker position + + + Optional, mS from absolute start of audio data + + + + + END_POINT + + + Set End Marker position + + + Optional, mS from absolute start of audio data + + + + + FADEUP_POINT + + + Set Fadeup Marker position + + + Optional, mS from absolute start of audio data + + + + + FADEDOWN_POINT + + + Set Fadedown Marker position + + + Optional, mS from absolute start of audio data + + + + + SEGUE_START_POINT + + + Set Segue Start Marker position + + + Optional, mS from absolute start of audio data + + + + + SEGUE_END_POINT + + + Set Segue End Marker position + + + Optional, mS from absolute start of audio data + + + + + HOOK_START_POINT + + + Set Hook Start Marker position + + + Optional, mS from absolute start of audio data + + + + + HOOK_END_POINT + + + Set Hook End Marker position + + + Optional, mS from absolute start of audio data + + + + + TALK_START_POINT + + + Set Talk Start Marker position + + + Optional, mS from absolute start of audio data + + + + + TALK_END_POINT + + + Set Talk End Marker position + + + Optional, mS from absolute start of audio data + + + + +
+
+ + + Export + Export audio data from the audio store + + Command Code: RDXPORT_COMMAND_EXPORT + + + Required User Permissions: none + + + Export Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 1 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + + CUT_NUMBER + + + Number of Cut + + + Mandatory + + + + + FORMAT + + + Encoding format of exported data + + + Mandatory, 0 = PCM16 WAV, 2 = MPEG L2 native, 3 = MPEG L3 native, + 4 = FLAC, 5 = OggVorbis, 6 = MPEG L2 WAV, 7 = PCM24 WAV + + + + + CHANNELS + + + Number of audio channels + + + Mandatory + + + + + SAMPLE_RATE + + + Sample rate + + + Mandatory, in samples/sec + + + + + BIT_RATE + + + Bit rate + + + Mandatory, set to '0' for PCM or VBR + + + + + QUALITY + + + Quality Level + + + Mandatory, used only by OggVorbis, set to '0' for others + + + + + START_POINT + + + Start point of audio export + + + Mandatory, mS from absolute start of stored audio + + + + + END_POINT + + + End point of audio export + + + Mandatory, mS from absolute start of stored audio + + + + + NORMALIZATION_LEVEL + + + Normalization leve, in dBFS + + + Mandatory, 0 = No normalization + + + + + ENABLE_METADATA + + + Include metadata in export + + + Mandatory, 0 = no, 1 = yes + + + + +
+
+ + + ExportPeaks + Export audio peak data from the audio store + + Command Code: RDXPORT_COMMAND_EXPORT + + + Required User Permissions: none + + + A 404 error will be returned if the + requested cart is not authorized for the specified Rivendell user in + RDAdmin->ManageUsers->AssignGroupPerms. + + + ExportPeaks Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 16 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + + CUT_NUMBER + + + Number of Cut + + + Mandatory + + + + +
+
+ + + Import + Import audio data into the audio store + + Command Code: RDXPORT_COMMAND_IMPORT + + + Required User Permissions: Edit Audio + + + A 404 error will be returned if the + requested cart is not authorized for the specified Rivendell user in + RDAdmin->ManageUsers->AssignGroupPerms. + + + NOTE: The method must be called with 'multipart/form-data' encoding. + + + Import Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 2 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + + CUT_NUMBER + + + Number of Cut + + + Mandatory + + + + + CHANNELS + + + Number of audio channels + + + Mandatory + + + + + NORMALIZATION_LEVEL + + + Normalization level, in dBFS + + + Mandatory, 0 = no normalization + + + + + AUTOTRIM_LEVEL + + + Autotrim level, in dBFS + + + Mandatory, 0 = no autotrim + + + + + USE_METADATA + + + Apply source metadata to cart + + + Mandatory, 0 = No, 1 = Yes + + + + + FILENAME + + + Binary file data + + + Mandatory + + + + +
+
+ + + ListCart + Return information about a specified cart + + Command Code: RDXPORT_COMMAND_LISTCART + + + Required User Permissions: none + + + A 404 error will be returned if the + requested cart belongs to a group that is not authorized for the + specified Rivendell user in RDAdmin->ManageUsers->AssignGroupPerms. + + + ListCart Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 7 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + + INCLUDE_CUTS + + + Include cut information in return + + + Optional, 0 = no, 1 = yes, default is 1 + + + + +
+
+ + + ListCarts + Return information about a set of carts + + Command Code: RDXPORT_COMMAND_LISTCARTS + + + Required User Permissions: none + + + Only those carts that belong to groups authorized for the specified + Rivendell user in RDAdmin->ManageUsers->AssignGroupPerms will be returned. + + + ListCarts Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 6 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + GROUP_NAME + + + Limit returns to members of specified group + + + Optional, default is to search all available carts + + + + + INCLUDE_CUTS + + + Include cut information in return + + + Optional, 0 = no, 1 = yes, default is 1 + + + + + FILTER + + + Limit returns to carts containing specified space-separated + keyword(s) + + + Optional, default is to apply no filtering + + + + + TYPE + + + Limit returns to carts of the specified type + + + Optional, valid values are 'audio' or 'macro' + + + + +
+
+ + + ListCartSchedCodes + Return information about all scheduler codes assigned to a cart + + Command Code: RDXPORT_COMMAND_LISTCARTSCHEDCODES + + + Required User Permissions: none + + + A 404 error will be returned if the + requested cart belongs to a group that is not authorized for the + specified Rivendell user in RDAdmin->ManageUsers->AssignGroupPerms. + + + ListCartSchedCodes Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 27 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + +
+
+ + + ListCut + Return information about a specified cut + + Command Code: RDXPORT_COMMAND_LISTCUT + + + Required User Permissions: none + + + A 404 error will be returned if the + requested cart belongs to a group that is not authorized for the + specified Rivendell user in RDAdmin->ManageUsers->AssignGroupPerms. + + + ListCut Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 8 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + + CUT_NUMBER + + + Number of Cut + + + Mandatory + + + + +
+
+ + + ListCuts + Return information about all cuts belonging to a cart + + Command Code: RDXPORT_COMMAND_LISTCUTS + + + Required User Permissions: none + + + A 404 error will be returned if the + requested cart belongs to a group that is not authorized for the + specified Rivendell user in RDAdmin->ManageUsers->AssignGroupPerms. + + + ListCuts Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 9 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + +
+
+ + + ListGroup + Return information about a specified group + + Command Code: RDXPORT_COMMAND_LISTGROUP + + + Required User Permissions: none + + + A 404 error will be returned if the + requested group is not authorized for the specified Rivendell user in + RDAdmin->ManageUsers->AssignGroupPerms. + + + ListGroup Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 5 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + GROUP_NAME + + + Name of group + + + Mandatory + + + + +
+
+ + + ListGroups + Return information about all available groups + + Command Code: RDXPORT_COMMAND_LISTGROUPS + + + Required User Permissions: none + + + The set of returned groups will be tailored according to what the + specified Rivendell user is authorized to see in + RDAdmin->ManageUsers->AssignGroupPerms. + + + ListGroups Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 4 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + +
+
+ + + ListLog + Return a listing of the specified log + + Command Code: RDXPORT_COMMAND_LISTLOG + + + Required User Permissions: none + + + ListLog Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 22 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + NAME + + + The name of the log + + + Mandatory + + + + +
+
+ + + ListLogs + Return information about all available logs + + Command Code: RDXPORT_COMMAND_LISTLOGS + + + Required User Permissions: none + + + ListLogs Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 20 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + SERVICE_NAME + + + Limits returns to logs that are owned by specified service + + + Optional. Default is to return all logs. + + + + + TRACKABLE + + + Limits returns to logs that contain one or more voicetrack slots + + + Optional, valid values 0=no, 1=yes. Default is to return all logs + + + + +
+
+ + + ListSchedulerCodes + Return information about all available scheduler codes + + Command Code: RDXPORT_COMMAND_LISTSCHEDCODES + + + Required User Permissions: none + + + ListSchedCodes Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 24 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + +
+
+ + + ListServices + Return information about all available services + + Command Code: RDXPORT_COMMAND_LISTSERVICES + + + Required User Permissions: none + + + ListServices Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 21 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + TRACKABLE + + + Limits returns to services that have a valid voicetracking + configuration + + + Optional, valid values 0=no, 1=yes. Default is to return all + services + + + + +
+
+ + + RemoveCart + Remove a cart from the Library + + Command Code: RDXPORT_COMMAND_REMOVECART + + + Required User Permissions: Delete Cart + + + RemoveCart Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 13 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of cart + + + Mandatory + + + + +
+
+ + + RemoveCut + Remove an existing cut from a cart + + Command Code: RDXPORT_COMMAND_REMOVECUT + + + Required User Permissions: Edit Audio + + + RemoveCut Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 11 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of cart + + + Mandatory + + + + + CUT_NUMBER + + + Number of cut + + + Mandatory + + + + +
+
+ + + TrimAudio + + Return a time pointer to the first or last instance of a particular + level in a cut. + + + Command Code: RDXPORT_COMMAND_TRIMAUDIO + + + Required User Permissions: Edit Audio + + + A 404 error will be returned if the + requested cart is not authorized for the specified Rivendell user in + RDAdmin->ManageUsers->AssignGroupPerms. + + + TrimAudio Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 17 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of cart + + + Mandatory + + + + + CUT_NUMBER + + + Number of cut + + + Mandatory + + + + + TRIM_LEVEL + + + Level in 1/100 dB, relative to Rivendell reference level (-16 dBFS) + + + Mandatory + + + + +
+
+ + + UnassignSchedCode + Unassign a scheduler code from an existing cart + + Command Code: RDXPORT_COMMAND_UNASSIGNSCHEDCODE + + + Required User Permissions: Modify Carts + + + A 404 error will be returned if the + specified cart number is not authorized for the specified Rivendell user in + RDAdmin->ManageUsers->AssignGroupPerms. + + + UnassignSchedCode Call Fields + + + + + + + + FIELD NAME + + + MEANING + + + REMARKS + + + + + + + COMMAND + + + 26 + + + Mandatory + + + + + LOGIN_NAME + + + Rivendell User Name + + + Mandatory + + + + + PASSWORD + + + Login Password + + + Mandatory + + + + + CART_NUMBER + + + Number of Cart + + + Mandatory + + + + + CODE + + + Scheduler Code to assign + + + Mandatory + + + + +
+
+ +
diff --git a/docs/web_api.odt b/docs/web_api.odt deleted file mode 100644 index 23bf8e211472120a768345456922c110948469d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29477 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