Browse Source

Initial import of CVS-v2_8_branch

pull/5/head
Fred Gleason 9 years ago
commit
afd67c7af8
  1. 47
      AUTHORS
  2. 201
      CODINGSTYLE
  3. 340
      COPYING
  4. 14297
      ChangeLog
  5. 185
      INSTALL
  6. 162
      Makefile.am
  7. 2743
      NEWS
  8. 1
      PACKAGE_VERSION
  9. 71
      README
  10. 74
      UPGRADING
  11. 504
      acinclude.m4
  12. 48
      autogen.sh
  13. 37
      build_win32.bat
  14. 55
      cae/Makefile.am
  15. 2276
      cae/cae.cpp
  16. 410
      cae/cae.h
  17. 1893
      cae/cae_alsa.cpp
  18. 536
      cae/cae_hpi.cpp
  19. 1607
      cae/cae_jack.cpp
  20. 55
      cae/cae_socket.cpp
  21. 50
      cae/cae_socket.h
  22. 54
      conf/Makefile.am
  23. 59
      conf/my.cnf-master
  24. 78
      conf/my.cnf-standby
  25. 51
      conf/rd-bin.conf.in
  26. 118
      conf/rd-sample.ini
  27. 133
      conf/rd.conf-sample
  28. 45
      conf/rd.conf-slax
  29. 84
      conf/rlm_ando.conf
  30. 76
      conf/rlm_facebook.conf
  31. 111
      conf/rlm_filewrite.conf
  32. 92
      conf/rlm_icecast2.conf
  33. 110
      conf/rlm_inno713.conf
  34. 78
      conf/rlm_liqcomp.conf
  35. 45
      conf/rlm_padpoint.conf
  36. 129
      conf/rlm_serial.conf
  37. 82
      conf/rlm_shoutcast1.conf
  38. 129
      conf/rlm_spinitron_plus.conf
  39. 106
      conf/rlm_spottrap.conf
  40. 76
      conf/rlm_twitter.conf
  41. 118
      conf/rlm_udp.conf
  42. 58
      conf/rlm_xds.conf
  43. 98
      conf/rlm_xmpad.conf
  44. 543
      configure.in
  45. 68
      debian/Makefile.am
  46. 55
      debian/README.Debian
  47. 387
      debian/changelog
  48. 1
      debian/compat
  49. 38
      debian/control
  50. 15
      debian/copyright
  51. 6
      debian/librivendell.install
  52. 42
      debian/menu
  53. 4
      debian/patches/00list
  54. 26
      debian/patches/00template
  55. 38
      debian/patches/07_extra_paren.dpatch
  56. 29
      debian/patches/Makefile.am
  57. 9
      debian/rdadmin.desktop
  58. 768
      debian/rdadmin.xpm
  59. 9
      debian/rdairplay.desktop
  60. 738
      debian/rdairplay.xpm
  61. 9
      debian/rdcatch.desktop
  62. 780
      debian/rdcatch.xpm
  63. 9
      debian/rdlibrary.desktop
  64. 788
      debian/rdlibrary.xpm
  65. 9
      debian/rdlogedit.desktop
  66. 751
      debian/rdlogedit.xpm
  67. 9
      debian/rdlogin.desktop
  68. 715
      debian/rdlogin.xpm
  69. 9
      debian/rdlogmanager.desktop
  70. 745
      debian/rdlogmanager.xpm
  71. 1
      debian/rivendell.conffiles
  72. 110
      debian/rivendell.config
  73. 9
      debian/rivendell.docs.in
  74. 2
      debian/rivendell.examples
  75. 83
      debian/rivendell.init
  76. 5
      debian/rivendell.install
  77. 27
      debian/rivendell.logrotate
  78. 315
      debian/rivendell.postinst
  79. 77
      debian/rivendell.postrm
  80. 228
      debian/rivendell.templates
  81. 117
      debian/rules
  82. 42
      docs/ALSA.txt
  83. 93
      docs/ENCODERS.txt
  84. 185
      docs/GPIO.txt
  85. 110
      docs/JACK.txt
  86. 9
      docs/MESSAGE_BOX.txt
  87. 62
      docs/Makefile.am
  88. 0
      docs/NEXGEN_FILTER.txt
  89. 57
      docs/NOW+NEXT.txt
  90. 132
      docs/PODCASTING.txt
  91. 58
      docs/RDMONITOR.txt
  92. 70
      docs/RIVENDELL_FILTER.txt
  93. 24
      docs/SAGE_ENDEC.txt
  94. 631
      docs/SWITCHERS.txt
  95. 25
      docs/WIN32.txt
  96. 67
      docs/WINGS_FILTER.txt
  97. BIN
      docs/ando_interface.odt
  98. 11
      docs/asound.conf-sample
  99. BIN
      docs/cae.sxw
  100. 117
      docs/catchd.txt

47
AUTHORS

@ -0,0 +1,47 @@
The following folks have contributed to Rivendell:
Todd Baker <bakert@rfa.org>
--create-startdate-offset and --create-enddate-offset options for
RDImport(1).
Hotkey system.
Luigino Bracci <lbracci@gmail.com>
Spanish translation.
Michael Cheng <mikecheng@planckenergy.com>
The tooLame MPEG Layer 2 encoder.
Pavel Fric <pavelfric@seznam.cz>.
Czech Translation (cs)
Stefan Gabriel <stg@st-gabriel.de>
Integrated Music Scheduler
RDLibrary MultiCart Editing Mode
Federico Grau <grauf@rfa.org>
JACK driver cleanups, RDAdmin Audio Ports Dialog enhancements.
PAM Authentication Module
Fred Gleason <fredg@paravelsystems.com>
Application Architect
Dan Mills <dmills@spamblock.demon.co.uk>
General Bughunter Extrordinaire
Eivind Ødegård <gingermig@yahoo.no>
Norwegian Translation (nb_NO and nn_NO)
Michael Papsdorf <info@emitworks.com>
German translation (de).
Alban Peignier <alban.peignier@free.fr>
RDImport batch file importer.
RDScheduler music scheduler.
Debian Packaging.
Daniel Roviriego <danifernando@gmail.com>
Portuguese Translation (pt_BR).
Scott Spillers <scotts@paravelsystems.com>
The Icon set

201
CODINGSTYLE

@ -0,0 +1,201 @@
This is the CODINGSTYLE file for the Rivendell package.
OVERVIEW:
Rivendell is a Free Software project to develop a radio broadcast automation
system. This file, CODINGSTYLE, describes how to get the Rivendell code,
coding style guidelines for writing new code, how to submit patches to be
incorporated into the official Rivendell CVS repository, and other code related
information. General info on the Rivendell project can be found at the
http://www.rivendellaudio.org/ web page and also in the README and INSTALLATION
files.
CODING STYLE GUIDELINES:
Please try to write code that fits with the formating style already present.
Some good basic guidelines:
LINE LENGTH -- Should be short enough to fit onto an eighty character line
without wrapping. This applies to ChangeLog
entries too! While it's not always possible to follow this
rule (quoted literal strings being one place in particular
where it is sometimes necessary to violate it), sticking
with it wherever possible makes life much easier for those
using character mode editing sessions.
INDENTATION -- Should be two characters per level.
CLASS NAMES -- Should have the initial letter of each word capitalized,
e.g. 'ThisIsMyClass'. If the class is part of librd, the
name should be prefaced with the uppercase letters 'RD',
e.g. 'RDThisIsMyClass'.
METHOD NAMES -- Names of class methods should follow the general style used
by Qt. A special convention for Rivendell is to reserve
names beginning with an uppercase letter for private classes
only.
VARIABLE NAMES -- Class variables should be prefaced with a short base name
that is common to all, followed by an underscore. For
example, the class 'MyClass' might use 'myclass_', as
in 'myclass_foo1', 'myclass_foo2', etc. *All* variables
should be lowercase only, with uppercase being reserved for
class and method names.
Doxygen is the code documenting system in place. Doxygen style comments placed
in header files can then be processed to generate friendly code documentation.
More information on doxygen can be found here (
http://www.stack.nl/~dimitri/doxygen/ ).
FIXME: doxygen code samples
CVS GENERAL INFO:
CVS allows multiple developers to work simultaneously on a project. CVS does
this by keeping a master version of the source code in a central repository on
the cvs.rivendellaudio.org server. Each developer "checks out" a copy of the
source code to their personal workspace. This local copy of the source is
called a sandbox. Developers test and work on the source in their sandboxes
until they reach a mile-point, such as implementing a new feature or fixing a
bug. Developers can then create a patch or commit their changes back to the
central repository. The CVS server auto-magically merges changes from multiple
developers together. Other developers periodically update their sandboxes to
merge changes others have committed to the server.
Conflicts normally are prevented by developers communicating and by working on
different areas of the source code. It is important that only working code is
committed back into the repository.
Though CVS has one main program, cvs, that program has a lot of functionality
which is accessed by giving the program different commands. The general syntax
of the cvs program is:
cvs CVS_OPTIONS COMMAND COMMAND_OPTIONS
A brief overview of CVS can be found online here (
http://techweb.rfa.org/grauf/cvs.html ).
CVS READ:
Any user can get anonymous read-only access to the CVS repository using the
pserver protocol. The module one wishes to check out must be specified as the
module-name (ex: rivendell). cvs.rivendellaudio.org is configured with the
username "cvs" and the password "cvs". Access via the pserver protocol
requires that a user login/logout.
cvs -d:pserver:cvs@cvs.rivendellaudio.org:/home/cvs/cvsroot login
cvs -d:pserver:cvs@cvs.rivendellaudio.org:/home/cvs/cvsroot checkout rivendell
cvs -d:pserver:cvs@cvs.rivendellaudio.org:/home/cvs/cvsroot logout
SUBMITTING PATCHES:
Contributions of patches with fixes or enhancements are welcome. Posting a
patch to the rivendell programmer mailing list (
rivendell-prog@rivendellaudio.org
http://www.rivendellaudio.org/mailman/listinfo/rivendell-prog ) is the best
approach for anyone to contribute to the project. Established Rivendell
programmers can then review the patch and apply it to the official CVS tree.
Users who contribute significant patches over time may earn the privilege of
CVS write access.
The cvs diff command may be used to generate patches from a CVS sandbox. This
allows for a user to checkout a cvs sandbox and make changes as needed by
directly editing the files checked out. When done making changes, the cvs
utility can generate the differences, in patch file format, of the sandbox
version to the repository version of a file. Run the following commands from
within the sandbox.
# see changes made to sandbox against what was checked out from the
# repository
cvs diff FILE
# see the difference between two versions of a file in the repository
cvs diff -rVERSION_NUMBER -rVERSION_NUMBER FILE
Additional flags, such as "-u" can be added to produce a "unified context"
style diff. Similarly the output redirector can be used to send the patch to a
file (which can then be emailed to the mailing list). A sample command
follows:
cvs diff -u FILE > /tmp/FILE_bugfix_2007.03.26.patch
CVS WRITE:
Contributors who have write access to the Rivendell CVS repository must use
Secure Shell (ssh) as the secure transport for all non-anonymous CVS access.
To get this set up, you will need to generate a public key and send it to
Federico Grau <grauf@rfa.org> and the sysadmin team <sysadmins@rfa.org> at
Radio Free Asia (RFA), along with the username one wishes to use. As an
example of how to create a public key, use the following command:
ssh-keygen -t dsa
This should prompt you for the base filename to put the public and private keys
in, as well as a passphrase (be sure to use a secure one). Assuming that the
default filenames were accepted, you should then have the following two files
in '~/.ssh/':
id_dsa
id_dsa.pub
The 'id_dsa.pub' file is the one that gets sent to don Fede. The other is your
secret key, and should be guarded accordingly. You will need this key every
time you access the CVS archive using your selected username. Once (RFA) has
set up your account, all you will need to do is change the CVSROOT string in
your environment or set the cvs command to point to the new server. The form
of the environment string and a sample checkout command follow:
export CVSROOT=:ext:<username>@cvs.rivendellaudio.org:/home/cvs/cvsroot
cvs checkout rivendell
A sample checkout command that does not use the environment variable follows:
cvs -d:ext:<username>@cvs.rivendellaudio.org:/home/cvs/cvsroot checkout rivendell
You should now be able to checkout, update and commit material as before, the
only difference being that CVS will prompt you for the passphrase of your
private key each time you access the archive. As a convenience the
ssh-agent(1) and ssh-add(1) utilities can be used to securely hold private keys
used for public key authentication without repeatedly prompting for
passphrases.
CVS WRITE COMMIT CHECKLIST:
Before committing changes back to the Rivendell CVS repository the following
guidelines should be completed:
1) Successful update of CVS without conflicts.
2) Successful compile of CVS without errors.
3) Update the ChangeLog file at the base of the Rivendell source code tree.
The format of the ChangeLog file has the most recent changes at the bottom
of the file. Entries start with a date stamp and have a format like:
YYYY-MM-DD [HH:MM TIMEZONE] NAME <EMAIL>
* Description of change
A couple examples follow:
2007-01-09 19:00 EST Federico Grau <grauf@rfa.org> <donfede@casagrau.org>
* lib/rdcart.cpp lib/rdcut.cpp rdcatch/rdcatch.cpp; corrected i18n
bug by replacing use of QT shortDayName() with libradio
RGetShortDayNameEN() which will always return english day names
regardless of configured locale.
2007-02-23 Fred Gleason <fredg@paravelsystems.com>
* Modified the code in 'lib/rdimport_audio.cpp' to use the
'RDCart::setMetadata()' and 'RDCut::setMetadata()' methods.
4) CVS Commit of the files changed using the ChangeLog snippet.

340
COPYING

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

14297
ChangeLog
File diff suppressed because it is too large
View File

185
INSTALL

@ -0,0 +1,185 @@
This is the installation file for the Rivendell package.
MANDATORY PREREQUISITES
You will need the following installed and configured properly on your
system before building Rivendell:
Apache Web Server
Included with most distros, or available from: http://www.apache.org/.
Cdda2Wav
A CD ripper engine. Included in most distributions, but also available from
http://www.cdda2wav.de/.
ID3Lib
An audio metadata tag library. Included in most distros, or available at
http://id3lib.sourceforge.net/.
LibCurl, v7.19.0 or later
A client-side URL transfer library. Included with most distros, or
available at: http://curl.haxx.se/libcurl/.
LibParanoia
A library for ripping audio CDs. Included in most distributions, but also
available from http://www.xiph.org/paranoia/.
LibSndFile
An audio file support library, written by Erik de Castro Lopo. Included with
most distros, or you can find it at http://www.mega-nerd.com/libsndfile/.
mySQL Database Server
Included in most Linux distributions. See http://www.mysql.com/.
PAM Pluggable Authentication Modules
A suite of shared libraries that enable the local system administrator to
choose how applications authenticate users. Included with virtually all modern
distros, or see http://www.kernel.org/pub/linux/libs/pam/.
OggVorbis - Open Source Audio Coding Library. Needed for OggVorbis
importing and exporting. Included with most distros, or available at:
http://www.xiph.org/.
Qt Toolkit, v3.3 or better
Most modern Linux distros include this. It's typically installed as part
of the KDE Desktop Environment, although KDE is by no means required.
It can also be downloaded directly from TrollTech (http://www.trolltech.com/).
Secret Rabbit Code
A sample-rate converter library, written by Erik de Castro Lopo. Included
with most distros, or you can find it at http://www.mega-nerd.com/SRC/.
SoundTouch Audio Processing Library
A library for altering the pitch and/or tempo of digital audio data.
Available at http://www.surina.net/soundtouch/.
X11 Window System
Virtually all Linux distros should include this.
OPTIONAL PREREQUISITES
The following components are optional, but needed at build- and run- time in
order for particular features to work:
One or more audio driver libraries. Choices are:
AudioScience HPI Driver - v3.00 or greater.
For supporting AudioScience's line of high-end professional audio adapters.
See http://www.audioscience.com/.
The JACK Audio Connection Kit
A low latency audio server, designed from the ground up for
professional audio work. See http://jackit.sourceforge.net/.
Further information on running Rivendell with the JACK driver can be
found in 'docs/JACK.txt'.
The Advanced Linux Sound Architecture (ALSA) v1.0 or greater.
The standard soundcard driver for Linux for kernels 2.6.x or later.
See http://www.alsa-project.org/.
Free Lossless Audio Codec (FLAC), v1.2.x or greater
A "lossless" audio encoding library. Included with most distros, or
available from: http://flac.sourceforge.net/.
GPIO Driver
A kernel driver for the line of data-acquisition boards from
MeasurementComputing. See http://www.rivendellaudio.org/.
LAME - MPEG Layer 3 Encoder Library. Needed for MPEG Layer 3 exporting.
Available at http://lame.sourceforge.net/.
MAD - MPEG Audio Decoder Library. Needed for MPEG importing and playout.
Available at http://www.underbit.com/products/mad/.
TwoLAME - MPEG Layer 2 Encoder Library. Needed for MPEG Layer 2 exporting and
capture. Available at http://www.twolame.org/.
INSTALLATION
There are three major steps to getting a Rivendell system up and
running. They are:
1) Setting up pre-requisite software
2) Installing the Rivendell package
3) Initial configuration
1) Setting Up Prerequisites
The major prerequisite piece of software needed for a functioning
Rivendell system is the mySQL database engine. This needs to
be accessible from the target system (either by running on the local
host, or on a remote system) before Rivendell installation proper
is commenced. In practice, this means that the 'mysqld' daemon is
running and can be connected to using the mysql(1) client. You will
also need a login name/password for an account on the server with
administrative rights.
The process of configuring mySQL on a given host can be intricate and
is generally beyond the scope of this document. Details can be found
in a number of books on the subject, as well as in the very extensive
documentation that accompanies the server itself.
If GPIO support is desired, this is also the time to install and test
the kernel GPIO driver. Full installation instructions as well as the
list of currently supported GPIO boards are included in the package.
2) Installing the Rivendell Package
Once the prerequisites are set up, installation is most often a matter of
cd'ing to the top of the Rivendell source tree and typing
'./configure', 'make', followed (as root) by 'make install'. Those
who obtained the source via CVS will need to do './autogen.sh' first.
The ./configure script will auto-detect what sound drivers (HPI, JACK
or ALSA) are available and enable build support accordingly. To override
this behavior, it's possible to specify '--disable-hpi',
'--disable-jack' or '--disable-alsa' as an argument to './configure'.
Be sure to see the important additional information regarding
configuration in the 'docs/JACK.txt' or 'docs/ALSA.txt' files if you
plan on using those sound driver architectures.
Rivendell's web services components are installed in the directory specified
by the '--libexecdir=' parameter given to './configure' (default
'EPREFIX/bin'). The proper location will vary widely on different distros
according to how Apache is installed. On SuSE (assuming the default setup),
the proper invocation is '--libexecdir=/srv/www/rd-bin'. Additionally,
Apache itself must be configured to use the specified directory. The
'./configure' script generates a configuration file snippet that can be
included into the Apache configuration to accomplish this in
'conf/rd-bin.conf'. On Ubuntu copy that file to the /etc/apache2/conf.d/
directory.
3) Initial Configuration
Next, you'll need to install a small configuration file at
'/etc/rd.conf'. A sample can be found in 'conf/rd.conf-sample'. Much
of this can be used unchanged, with the exception of the entries in the
[Identity] section. These should be changed to reflect the user and group
name of the system accounts that will be running Rivendell.
The directory for the audio sample data next needs to be created, as
so:
mkdir /var/snd
This directory should owned, readable, writable and searchable by the user
and group specified in the 'AudioOwner=' and 'AudioGroup=' entires in
'/etc/rd.conf' and readable and searchable by Others (mode 0775).
Finally, it's time to start things up. Run 'rdadmin' from a shell
prompt. For the first time startup, RDAdmin will prompt for a login
name/password on the mySQL server so that it can create the Rivendell
database. To log into RDAdmin for the first time, enter a User Name of
'admin' with no password.
Much of the work in Rivendell gets done by three daemon processes,
named 'caed', 'ripcd' and 'rdcatchd'. These daemons *must* be running
before attempting to start any of the Rivendell applications. The
order in which they are started is important, and should be the same
as the order in which they are listed above. For convienence, a Sys-V
style init script called 'rivendell' that can start, stop and restart
the daemons properly is installed in '/etc/init.d/'.

162
Makefile.am

@ -0,0 +1,162 @@
## automake.am
##
## Top level automake.am for Rivendell
##
## Use automake to process this into a Makefile.in
##
## (C) Copyright 2002-2010 Fred Gleason <fredg@paravelsystems.com>
##
## $Id: Makefile.am,v 1.65.6.6 2013/01/14 16:35:58 cvs Exp $
##
## 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.
##
if PAM_RD_AM
PAM_RD_OPT = pam_rd
endif
if HPI_RD_AM
HPI_RD_OPT = rdhpi
endif
if ALSA_RD_AM
ALSACONFIG_RD_OPT = rdalsaconfig
endif
SUBDIRS = icons\
helpers\
lib\
$(HPI_RD_OPT) $(PAM_RD_OPT) rlm\
scripts\
conf\
debian\
docs\
xdg\
cae\
importers\
ios\
rdadmin\
rdairplay\
rdcartslots\
rdcastmanager\
rdcatch\
rdcatchd\
rdlibrary\
rdlogedit\
rdlogin\
rdlogmanager\
rdmonitor\
rdpanel\
rdrepld\
rdselect\
ripcd\
tests\
utils\
web
install-exec-local:
./install-init.sh $(DESTDIR)$(prefix)
install-debian:
touch ./building-debian
make install
rm -f ./building-debian
uninstall-exec:
rm -f /etc/init.d/rdrepld
rm -f /etc/init.d/rivendell
rm -f /etc/sysconfig/rivendell
rpm: dist
cp rivendell-$(VERSION).tar.gz $(RPM_ROOT)/SOURCES/
$(RPMBUILD) -ba --target $(ARCH)-$(VENDOR)-linux rivendell.spec
mv $(RPM_ROOT)/RPMS/$(ARCH)/rivendell-*.rpm $(top_srcdir)/
mv $(RPM_ROOT)/SRPMS/rivendell-*.src.rpm $(top_srcdir)/
rm $(RPM_ROOT)/SOURCES/rivendell-$(VERSION).tar.gz
rm -rf $(RPM_ROOT)/BUILD/rivendell-$(VERSION)
slack: all
./make_slack
slax: all
rm -f rivendell-$(VERSION)-$(ARCH)-$(RPM_RELEASE).mo
./make_slack
tgz2mo rivendell-$(VERSION)-$(ARCH)-$(RPM_RELEASE).tgz rivendell-$(VERSION)-$(ARCH)-$(RPM_RELEASE).mo
zip: dist
tar -zxf rivendell-@VERSION@.tar.gz
zip -r rivendell-@VERSION@.zip rivendell-@VERSION@
rm -rf rivendell-@VERSION@
doxygen:
cd lib && doxygen doxygen.conf
cd cae && doxygen doxygen.conf &
cd rdairplay && doxygen doxygen.conf &
cd rdadmin && doxygen doxygen.conf &
cd rdcatch && doxygen doxygen.conf &
cd rdcatchd && doxygen doxygen.conf &
cd rdlibrary && doxygen doxygen.conf &
cd rdlogedit && doxygen doxygen.conf &
cd rdlogin && doxygen doxygen.conf &
cd rdlogmanager && doxygen doxygen.conf &
cd ripcd && doxygen doxygen.conf &
EXTRA_DIST = autogen.sh\
build_win32.bat\
CODINGSTYLE\
get_distro.sh\
get_target.sh\
install-init.sh\
make_slack.in\
PACKAGE_VERSION\
rdrepld-suse.in\
rivendell-gentoo\
rivendell.ism\
rivendell.pro\
rivendell.spec.in\
rivendell-suse.in\
rivendell.sys\
slack-desc.in\
slack_doinst.sh\
UPGRADING
CLEANFILES = *~\
*.mo\
*.rpm\
*.tar.gz\
*.tgz\
*.zip
DISTCLEANFILES = config.guess\
config.sub\
ltmain.sh\
make_slack\
rdrepld-suse\
rivendell\
rivendell.spec\
slack-desc
MAINTAINERCLEANFILES = *~\
*.tar.gz\
aclocal.m4\
Makefile.in\
config.guess\
config.status\
config.sub\
configure\
depcomp\
install-sh\
libtool\
ltmain.sh\
missing\
mkinstalldirs\
rivendell.spec\
rivendell-suse

2743
NEWS
File diff suppressed because it is too large
View File

1
PACKAGE_VERSION

@ -0,0 +1 @@
2.9.0

71
README

@ -0,0 +1,71 @@
This is the README file for the Rivendell package.
This software comes with ABSOLUTELY NO WARRANTY. See the file COPYING for
details.
Welcome to this release of the Rivendell Project. Rivendell aims
to be a robust, functionally complete digital audio system for use in
professional radio broadcast environments.
See the file INSTALL for installation instructions. If you are upgrading from
a 1.x version of Rivendell, also see the file 'UPGRADING' for important notes
and pointers.
OVERVIEW
Rivendell contains a full set of functionality needed to operate a radio
automation system, consisting of the following components:
RDAdmin
A comprehensive application for the administration and configuration
of Rivendell.
RDLibrary
The production audio interface.
RDCatch
The automatic recorder and task scheduler interface.
RDLogin
A small utility for logging users into and out of the system.
RDLogEdit
A air log creation, editing and voicetracker tool.
RDLogManager
A utility for the automatic generation of logs, based on templates.
It also supports importation of schedule information from a wide
variety of third-party traffic and music scheduling systems.
RDAirPlay
The on-air playout application.
RDPanel
A 'fullscreen' SoundPanel cartwall application.
RDCastManager
A utility for posting and managing podcast episodes.
RDGpiMon
A utility for monitoring GPI line status.
RDHPIInfo
A utility for configuring AudioScience audio adapters.
RDAlsaConfig
A utility for configuring ALSA audio adapters.
RDImport
A command-line utility for batch importing audio along with
accompanying metadata. Do:
rdimport --help
from a command prompt for a list of options.
RMLSend
A GUI and command-line utility for sending Rivendell Macro Language
(RML) commands.
RDSoftKeys
A lightweight button panel utility for sending RML commands.

74
UPGRADING

@ -0,0 +1,74 @@
IMPORTANT NOTE: BE SURE TO SEE THE SECTION ON 'PASSWORD STORAGE' BELOW,
OTHERWISE YOU MAY BE LOCKED OUT OF THE SYSTEM AFTER THE UPDATE!
This file provides some notes to those performing an upgrade from a v1.x
version to Rivendell. It is an attempt to provide some pointers about things
which have changed, but is in no way a substitute for reading the 'INSTALL'
file and other documentation!
1) DEPENDENCIES
The set of external packages required to build and run Rivendell has changed
significantly from that required for a 1.x system. See 'INSTALL' for a full
list.
2) MPEG SUPPORT
This version of Rivendell inaugurates optional support for MPEG Layer 2
encoding within the core Rivendell audio library for all classes of audio
device (JACK and ALSA as well as AudioScience HPI). To make use of this
feature, it will be necessary to have the appropriate MPEG libraries
properly installed at both build- and run-time. See 'INSTALL' for the
specifics.
3) FILE OWNERSHIP AND PERMISSIONS
Recommended file ownership and permissions for the '/var/snd' directory and
its contents have changed. These items should be owned by system user and
group accounts created specifically for Rivendell; no 'real' user on the
system should use these accounts. The Rivendell system user and group
accounts are specified in the 'AudioOwner=' and 'AudioGroup=' directives in
the '[Identity]' section of rd.conf(5); see 'conf/rd.conf-sample' for an
example. Permissions for '/var/snd' should be read, write and execute bits
set for User and Group and read, execute for Others (0775), while the contents
should have read, write set for user and group and just read for others (0664).
4) WEB SERVICES
This version of Rivendell makes use of a web services protocol to accomplish
many functions (audio import, export, ripping, etc). These services require
that a CGI-compliant web server be installed and active on the system.
Any server that complies with CGI-1.1 should work, although as of this writing
only Apache 2.2 has been well tested. A configuration file snippet for Apache
that will configure the target web services directory (set by the
'--libexecdir=' switch passed to './configure') correctly is generated
automatically as part of the build process; it can be found in
'conf/rd-bin.conf' after the build is complete.
5) PASSWORD STORAGE
The method of storing passwords in the database has changed in Rivendell 2.x,
requiring that all non-null passwords be reset after performing the upgrade.
This means that it is important that the account used to access RDAdmin be set
to use a null (blank) password *before* applying the update, otherwise you
will not be able to access RDAdmin afterwards! Once the update has been
applied, passwords should be re-entered for all user accounts in RDAdmin
(including administrative ones) in the usual manner.
6) AUDIO SAMPLE RATE
The sample rate to be used for the Rivendell audio library is now a single
system-wide setting (found in RDAdmin->SystemSettings); it is no longer
possible to set sample rates individually per module/workstation. When
updating the schema, Rivendell will default this to the value previously
configured for RDLibrary on a randomly selected host; since this may or may
not be appropriate for your site, checking this value after the update is
recommended.
7) RDCATCH CHANGES
Upload and Download events in RDCatch that use the 'file:' protocol now
require that a username/password for an appropriate shell user account be
entered. 'Appropriate' here means one with write or read permissions for
the target file, respectively.
The 'smb:' protocol is no longer supported.
8) RLM API CHANGES
The parameters passed to the RLMPadDataSent() callback in RLMs have changed;
private plug-ins written for RD 1.x will need to be modified to work with the
new API. (All plug-ins supplied with the Rivendell sources have already been
modified appropriately.)

504
acinclude.m4

@ -0,0 +1,504 @@
dnl acinclude.m4
dnl
dnl Local Autoconf macro definitions for LibRHpi
dnl
dnl (C) Copyright 2006 Fred Gleason <fredg@paravelsystems.com>
dnl
dnl BNV_HAVE_QT Macro Copyright (C) 2001, 2002, 2003, 2005, 2006
dnl Bastiaan Veelo
dnl
dnl $Id: acinclude.m4,v 1.7.8.2 2012/08/08 19:48:29 cvs Exp $
dnl
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License version 2 as
dnl published by the Free Software Foundation.
dnl
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public
dnl License along with this program; if not, write to the Free Software
dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
dnl
dnl AR_GCC_TARGET()
dnl
dnl Get gcc(1)'s idea of the target architecture, distribution and os.
dnl The following variables are set:
dnl $ar_gcc_arch = Target Architecture (i586, XF86_64, etc)
dnl $ar_gcc_distro = Target Distribution (suse, slackware, etc)
dnl $ar_gcc_os = Target Operating System (linux, solaris, etc)
dnl
AC_DEFUN([AR_GCC_TARGET],[AC_REQUIRE([AC_PROG_CC])]
[
AC_MSG_CHECKING(target architecture)
ar_gcc_arch=$(./get_target.sh $CC $AWK arch)
ar_gcc_distro=$(./get_target.sh $CC $AWK distro)
ar_gcc_os=$(./get_target.sh $CC $AWK os)
AC_MSG_RESULT([$ar_gcc_arch-$ar_gcc_distro-$ar_gcc_os])
]
)
dnl AR_GET_DISTRO()
dnl
dnl Try to determine the name and version of the distribution running
dnl on the host machine, based on entries in '/etc/'.
dnl The following variables are set:
dnl $ar_distro_name = Distribution Name (SuSE, Debian, etc)
dnl $ar_distro_version = Distribution Version (10.3, 3.1, etc)
dnl $ar_distro_major = Distribution Version Major Number (10, 3, etc)
dnl $ar_distro_minor = Distribution Version Minor Number (3, 1, etc)
dnl
AC_DEFUN([AR_GET_DISTRO],[]
[
AC_MSG_CHECKING(distribution)
ar_distro_name=$(./get_distro.sh NAME $AWK)
ar_distro_version=$(./get_distro.sh VERSION $AWK)
ar_distro_major=$(./get_distro.sh MAJOR $AWK)
ar_distro_minor=$(./get_distro.sh MINOR $AWK)
AC_MSG_RESULT([$ar_distro_name $ar_distro_version])
]
)
dnl BNV_HAVE_QT [--with-Qt-dir=DIR] [--with-Qt-lib-dir=DIR] [with-Qt-lib=LIB]
dnl BNV_HAVE_QT [--with-Qt-include-dir=DIR] [--with-Qt-bin-dir=DIR]
dnl [--with-Qt-lib-dir=DIR] [--with-Qt-lib=LIB]
dnl
dnl THANKS! This code includes bug fixes and contributions made by:
dnl Tim McClarren,
dnl Dennis R. Weilert,
dnl Qingning Huo,
dnl Brian Mingus,
dnl Jens Hannemann,
dnl Pavel Roskin,
dnl Scott J. Bertin.
dnl ChangeLog
dnl 2006-03-12 * Hide output of ls and fix an m4 quoting problem (due to Scott J. Bertin).
dnl 2006-02-13 * Check compiler return value instead of parsing the error stream,
dnl which detected warnings as false negatives (due to Jens Hannemann).
dnl 2006-02-02 * Spelling of "Success".
dnl * Fixed unsave test for $bnv_qt_lib without quotes.
dnl * Put dnl in front of all comments.
dnl * Changed -l$bnv_qt_lib_dir into -L$bnv_qt_lib_dir (all due to Pavel Roskin).
dnl 2006-01-19 * Support for 64bit architectures.
dnl * Updated documentation.
dnl 2006-01-18: * Fix "cat: bnv_qt_test.c: No such file or directory" (due to Jens Hannemann).
dnl * Hide output of failing ls.
dnl 2006-01-11: * Check in /Developer on Mac OS X; Check in $QTDIR (due to Brian Mingus).
dnl Calls BNV_PATH_QT_DIRECT (contained in this file) as a subroutine.
AC_DEFUN([BNV_HAVE_QT],
[
AC_REQUIRE([AC_PROG_CXX])
AC_REQUIRE([AC_PATH_X])
AC_REQUIRE([AC_PATH_XTRA])
AC_MSG_CHECKING(for Qt)
AC_ARG_WITH([Qt-dir],
[ --with-Qt-dir=DIR DIR is equal to $QTDIR if you have followed the
installation instructions of Trolltech. Header
files are in DIR/include, binary utilities are
in DIR/bin. The library is in DIR/lib, unless
--with-Qt-lib-dir is also set.])
AC_ARG_WITH([Qt-include-dir],
[ --with-Qt-include-dir=DIR
Qt header files are in DIR])
AC_ARG_WITH([Qt-bin-dir],
[ --with-Qt-bin-dir=DIR Qt utilities such as moc and uic are in DIR])
AC_ARG_WITH([Qt-lib-dir],
[ --with-Qt-lib-dir=DIR The Qt library is in DIR])
AC_ARG_WITH([Qt-lib],
[ --with-Qt-lib=LIB Use -lLIB to link with the Qt library])
if test x"$with_Qt_dir" = x"no" ||
test x"$with_Qt_include-dir" = x"no" ||
test x"$with_Qt_bin_dir" = x"no" ||
test x"$with_Qt_lib_dir" = x"no" ||
test x"$with_Qt_lib" = x"no"; then
# user disabled Qt. Leave cache alone.
have_qt="User disabled Qt."
else
# "yes" is a bogus option
if test x"$with_Qt_dir" = xyes; then
with_Qt_dir=
fi
if test x"$with_Qt_include_dir" = xyes; then
with_Qt_include_dir=
fi
if test x"$with_Qt_bin_dir" = xyes; then
with_Qt_bin_dir=
fi
if test x"$with_Qt_lib_dir" = xyes; then
with_Qt_lib_dir=
fi
if test x"$with_Qt_lib" = xyes; then
with_Qt_lib=
fi
# No Qt unless we discover otherwise
have_qt=no
# Check whether we are requested to link with a specific version
if test x"$with_Qt_lib" != x; then
bnv_qt_lib="$with_Qt_lib"
fi
# Check whether we were supplied with an answer already
if test x"$with_Qt_dir" != x; then
have_qt=yes
bnv_qt_dir="$with_Qt_dir"
bnv_qt_include_dir="$with_Qt_dir/include"
bnv_qt_bin_dir="$with_Qt_dir/bin"
bnv_qt_lib_dir="$with_Qt_dir/lib"
# Only search for the lib if the user did not define one already
if test x"$bnv_qt_lib" = x; then
bnv_qt_lib="`ls $bnv_qt_lib_dir/libqt* | sed -n 1p |
sed s@$bnv_qt_lib_dir/lib@@ | [sed s@[.].*@@]`"
fi
bnv_qt_LIBS="-L$bnv_qt_lib_dir -l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
else
# Use cached value or do search, starting with suggestions from
# the command line
AC_CACHE_VAL(bnv_cv_have_qt,
[
# We are not given a solution and there is no cached value.
bnv_qt_dir=NO
bnv_qt_include_dir=NO
bnv_qt_lib_dir=NO
if test x"$bnv_qt_lib" = x; then
bnv_qt_lib=NO
fi
BNV_PATH_QT_DIRECT
if test "$bnv_qt_dir" = NO ||
test "$bnv_qt_include_dir" = NO ||
test "$bnv_qt_lib_dir" = NO ||
test "$bnv_qt_lib" = NO; then
# Problem with finding complete Qt. Cache the known absence of Qt.
bnv_cv_have_qt="have_qt=no"
else
# Record where we found Qt for the cache.
bnv_cv_have_qt="have_qt=yes \
bnv_qt_dir=$bnv_qt_dir \
bnv_qt_include_dir=$bnv_qt_include_dir \
bnv_qt_bin_dir=$bnv_qt_bin_dir \
bnv_qt_LIBS=\"$bnv_qt_LIBS\""
fi
])dnl
eval "$bnv_cv_have_qt"
fi # all $bnv_qt_* are set
fi # $have_qt reflects the system status
if test x"$have_qt" = xyes; then
QT_CXXFLAGS="-I$bnv_qt_include_dir"
if test x"$bnv_qt_lib" = xqt-mt; then
QT_CXXFLAGS="$QT_CXXFLAGS -DQT_THREAD_SUPPORT"
fi
QT_DIR="$bnv_qt_dir"
QT_LIBS="$bnv_qt_LIBS"
# If bnv_qt_dir is defined, utilities are expected to be in the
# bin subdirectory
if test x"$bnv_qt_dir" != x; then
QT_BIN="$bnv_qt_dir/bin"
if test -x "$bnv_qt_dir/bin/uic"; then
QT_UIC="$bnv_qt_dir/bin/uic"
else
# Old versions of Qt don't have uic
QT_UIC=
fi
QT_MOC="$bnv_qt_dir/bin/moc"
else
# Or maybe we are told where to look for the utilities
if test x"$bnv_qt_bin_dir" != x; then
QT_BIN="$bnv_qt_bin_dir"
if test -x "$bnv_qt_bin_dir/uic"; then
QT_UIC="$bnv_qt_bin_dir/uic"
else
# Old versions of Qt don't have uic
QT_UIC=
fi
QT_MOC="$bnv_qt_bin_dir/moc"
else
# Last possibility is that they are in $PATH
QT_UIC="`which uic`"
QT_MOC="`which moc`"
QT_BIN="`dirname $QT_MOC`"
fi
fi
# All variables are defined, report the result
AC_MSG_RESULT([$have_qt:
QT_CXXFLAGS=$QT_CXXFLAGS
QT_DIR=$QT_DIR
QT_LIBS=$QT_LIBS
QT_BIN=$QT_BIN
QT_UIC=$QT_UIC
QT_MOC=$QT_MOC])
else
# Qt was not found
QT_CXXFLAGS=
QT_DIR=
QT_LIBS=
QT_BIN=
QT_UIC=
QT_MOC=
AC_MSG_RESULT($have_qt)
fi
AC_SUBST(QT_CXXFLAGS)
AC_SUBST(QT_DIR)
AC_SUBST(QT_LIBS)
AC_SUBST(QT_BIN)
AC_SUBST(QT_UIC)
AC_SUBST(QT_MOC)
#### Being paranoid:
if test x"$have_qt" = xyes; then
AC_MSG_CHECKING(correct functioning of Qt installation)
AC_CACHE_VAL(bnv_cv_qt_test_result,
[
cat > bnv_qt_test.h << EOF
#include <qobject.h>
class Test : public QObject
{
Q_OBJECT
public:
Test() {}
~Test() {}
public slots:
void receive() {}
signals:
void send();
};
EOF
cat > bnv_qt_main.$ac_ext << EOF
#include "bnv_qt_test.h"
#include <qapplication.h>
int main( int argc, char **argv )
{
QApplication app( argc, argv );
Test t;
QObject::connect( &t, SIGNAL(send()), &t, SLOT(receive()) );
}
EOF
bnv_cv_qt_test_result="failure"
bnv_try_1="$QT_MOC bnv_qt_test.h -o moc_bnv_qt_test.$ac_ext >/dev/null 2>/dev/null"
AC_TRY_EVAL(bnv_try_1)
if test x"$ac_status" != x0; then
echo "$bnv_err_1" >&AC_FD_CC
echo "configure: could not run $QT_MOC on:" >&AC_FD_CC
cat bnv_qt_test.h >&AC_FD_CC
else
bnv_try_2="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o moc_bnv_qt_test.o moc_bnv_qt_test.$ac_ext >/dev/null 2>/dev/null"
AC_TRY_EVAL(bnv_try_2)
if test x"$ac_status" != x0; then
echo "$bnv_err_2" >&AC_FD_CC
echo "configure: could not compile:" >&AC_FD_CC
cat moc_bnv_qt_test.$ac_ext >&AC_FD_CC
else
bnv_try_3="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o bnv_qt_main.o bnv_qt_main.$ac_ext >/dev/null 2>/dev/null"
AC_TRY_EVAL(bnv_try_3)
if test x"$ac_status" != x0; then
echo "$bnv_err_3" >&AC_FD_CC
echo "configure: could not compile:" >&AC_FD_CC
cat bnv_qt_main.$ac_ext >&AC_FD_CC
else
bnv_try_4="$CXX -o bnv_qt_main bnv_qt_main.o moc_bnv_qt_test.o $QT_LIBS $LIBS >/dev/null 2>/dev/null"
AC_TRY_EVAL(bnv_try_4)
if test x"$ac_status" != x0; then
echo "$bnv_err_4" >&AC_FD_CC
else
bnv_cv_qt_test_result="success"
fi
fi
fi
fi
])dnl AC_CACHE_VAL bnv_cv_qt_test_result
AC_MSG_RESULT([$bnv_cv_qt_test_result]);
if test x"$bnv_cv_qt_test_result" = "xfailure"; then
AC_MSG_ERROR([Failed to find matching components of a complete
Qt installation. Try using more options,
see ./configure --help.])
fi
rm -f bnv_qt_test.h moc_bnv_qt_test.$ac_ext moc_bnv_qt_test.o \
bnv_qt_main.$ac_ext bnv_qt_main.o bnv_qt_main
fi
])
dnl Internal subroutine of BNV_HAVE_QT
dnl Set bnv_qt_dir bnv_qt_include_dir bnv_qt_bin_dir bnv_qt_lib_dir bnv_qt_lib
AC_DEFUN([BNV_PATH_QT_DIRECT],
[
## Binary utilities ##
if test x"$with_Qt_bin_dir" != x; then
bnv_qt_bin_dir=$with_Qt_bin_dir
fi
## Look for header files ##
if test x"$with_Qt_include_dir" != x; then
bnv_qt_include_dir="$with_Qt_include_dir"
else
# The following header file is expected to define QT_VERSION.
qt_direct_test_header=qglobal.h
# Look for the header file in a standard set of common directories.
bnv_include_path_list="
/usr/include
`ls -dr ${QTDIR}/include 2>/dev/null`
`ls -dr /usr/include/qt* 2>/dev/null`
`ls -dr /usr/lib/qt*/include 2>/dev/null`
`ls -dr /usr/local/qt*/include 2>/dev/null`
`ls -dr /opt/qt*/include 2>/dev/null`
`ls -dr /Developer/qt*/include 2>/dev/null`
"
for bnv_dir in $bnv_include_path_list; do
if test -r "$bnv_dir/$qt_direct_test_header"; then
bnv_dirs="$bnv_dirs $bnv_dir"
fi
done
# Now look for the newest in this list
bnv_prev_ver=0
for bnv_dir in $bnv_dirs; do
bnv_this_ver=`egrep -w '#define QT_VERSION' $bnv_dir/$qt_direct_test_header | sed s/'#define QT_VERSION'//`
if expr $bnv_this_ver '>' $bnv_prev_ver > /dev/null; then
bnv_qt_include_dir=$bnv_dir
bnv_prev_ver=$bnv_this_ver
fi
done
fi dnl Found header files.
# Are these headers located in a traditional Trolltech installation?
# That would be $bnv_qt_include_dir stripped from its last element:
bnv_possible_qt_dir=`dirname $bnv_qt_include_dir`
if (test -x $bnv_possible_qt_dir/bin/moc) &&
((ls $bnv_possible_qt_dir/lib/libqt* > /dev/null 2>/dev/null) ||
(ls $bnv_possible_qt_dir/lib64/libqt* > /dev/null 2>/dev/null)); then
# Then the rest is a piece of cake
bnv_qt_dir=$bnv_possible_qt_dir
bnv_qt_bin_dir="$bnv_qt_dir/bin"
if test x"$with_Qt_lib_dir" != x; then
bnv_qt_lib_dir="$with_Qt_lib_dir"
else
if (test -d $bnv_qt_dir/lib64); then
bnv_qt_lib_dir="$bnv_qt_dir/lib64"
else
bnv_qt_lib_dir="$bnv_qt_dir/lib"
fi
fi
# Only look for lib if the user did not supply it already
if test x"$bnv_qt_lib" = xNO; then
bnv_qt_lib="`ls $bnv_qt_lib_dir/libqt* | sed -n 1p |
sed s@$bnv_qt_lib_dir/lib@@ | [sed s@[.].*@@]`"
fi
bnv_qt_LIBS="-L$bnv_qt_lib_dir -l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
else
# There is no valid definition for $QTDIR as Trolltech likes to see it
bnv_qt_dir=
## Look for Qt library ##
if test x"$with_Qt_lib_dir" != x; then
bnv_qt_lib_dir="$with_Qt_lib_dir"
# Only look for lib if the user did not supply it already
if test x"$bnv_qt_lib" = xNO; then
bnv_qt_lib="`ls $bnv_qt_lib_dir/libqt* | sed -n 1p |
sed s@$bnv_qt_lib_dir/lib@@ | [sed s@[.].*@@]`"
fi
bnv_qt_LIBS="-L$bnv_qt_lib_dir -l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
else
# Normally, when there is no traditional Trolltech installation,
# the library is installed in a place where the linker finds it
# automatically.
# If the user did not define the library name, try with qt
if test x"$bnv_qt_lib" = xNO; then
bnv_qt_lib=qt
fi
qt_direct_test_header=qapplication.h
qt_direct_test_main="
int argc;
char ** argv;
QApplication app(argc,argv);
"
# See if we find the library without any special options.
# Don't add top $LIBS permanently yet
bnv_save_LIBS="$LIBS"
LIBS="-l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
bnv_qt_LIBS="$LIBS"
bnv_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="-I$bnv_qt_include_dir"
AC_TRY_LINK([#include <$qt_direct_test_header>],
$qt_direct_test_main,
[
# Success.
# We can link with no special library directory.
bnv_qt_lib_dir=
], [
# That did not work. Try the multi-threaded version
echo "Non-critical error, please neglect the above." >&AC_FD_CC
bnv_qt_lib=qt-mt
LIBS="-l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
AC_TRY_LINK([#include <$qt_direct_test_header>],
$qt_direct_test_main,
[
# Success.
# We can link with no special library directory.
bnv_qt_lib_dir=
], [
# That did not work. Try the OpenGL version
echo "Non-critical error, please neglect the above." >&AC_FD_CC
bnv_qt_lib=qt-gl
LIBS="-l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
AC_TRY_LINK([#include <$qt_direct_test_header>],
$qt_direct_test_main,
[
# Success.
# We can link with no special library directory.
bnv_qt_lib_dir=
], [
# That did not work. Maybe a library version I don't know about?
echo "Non-critical error, please neglect the above." >&AC_FD_CC
# Look for some Qt lib in a standard set of common directories.
bnv_dir_list="
`echo $bnv_qt_includes | sed ss/includess`
/lib
/usr/lib64
/usr/lib
/usr/local/lib64
/usr/local/lib
/opt/lib64
/opt/lib
`ls -dr /usr/lib64/qt* 2>/dev/null`
`ls -dr /usr/lib64/qt*/lib64 2>/dev/null`
`ls -dr /usr/lib/qt* 2>/dev/null`
`ls -dr /usr/local/qt* 2>/dev/null`
`ls -dr /opt/qt* 2>/dev/null`
"
for bnv_dir in $bnv_dir_list; do
if ls $bnv_dir/libqt* >/dev/null 2>/dev/null; then
# Gamble that it's the first one...
bnv_qt_lib="`ls $bnv_dir/libqt* | sed -n 1p |
sed s@$bnv_dir/lib@@ | sed s/[[.]].*//`"
bnv_qt_lib_dir="$bnv_dir"
break
fi
done
# Try with that one
LIBS="-l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
AC_TRY_LINK([#include <$qt_direct_test_header>],
$qt_direct_test_main,
[
# Success.
# We can link with no special library directory.
bnv_qt_lib_dir=
], [
# Leave bnv_qt_lib_dir defined
bnv_qt_lib_dir=bnv_qt_lib_dir
])
])
])
])
if test x"$bnv_qt_lib_dir" != x; then
bnv_qt_LIBS="-L$bnv_qt_lib_dir $LIBS"
else
bnv_qt_LIBS="$LIBS"
fi
LIBS="$bnv_save_LIBS"
CXXFLAGS="$bnv_save_CXXFLAGS"
fi dnl $with_Qt_lib_dir was not given
fi dnl Done setting up for non-traditional Trolltech installation
])

48
autogen.sh

@ -0,0 +1,48 @@
#!/bin/sh
##
## (C) Copyright 2002-2003 Fred Gleason <fredg@paravelsystems.com>
##
## $Id: autogen.sh,v 1.5 2010/07/29 19:32:30 cvs Exp $
##
## Adapted from './autogen.sh' in the Jack Audio Connection Kit.
## Copyright (C) 2001-2003 Paul Davis, et al.
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of version 2 of the GNU General Public License 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., 59 Temple Place, Suite 330,
## Boston, MA 02111-1307 USA
##
libtoolize=libtoolize
if which glibtoolize > /dev/null 2>&1; then
libtoolize=glibtoolize
fi
$libtoolize --force 2>&1 | sed '/^You should/d' || {
echo "libtool failed, exiting..."
exit 1
}
aclocal $ACLOCAL_FLAGS || {
echo "aclocal \$ACLOCAL_FLAGS where \$ACLOCAL_FLAGS= failed, exiting..."
exit 1
}
automake --add-missing || {
echo "automake --add-missing failed, exiting..."
exit 1
}
autoconf || {
echo "autoconf failed, exiting..."
exit 1
}

37
build_win32.bat

@ -0,0 +1,37 @@
@ECHO OFF
REM build_win32.bat
REM
REM Build Rivendell for Win32.
REM
REM (C) Copyright 2007 Fred Gleason <fredg@paravelsystems.com>
REM
REM This program is free software; you can redistribute it and/or modify
REM it under the terms of the GNU General Public License as
REM published by the Free Software Foundation; either version 2 of
REM the License, or (at your option) any later version.
REM
REM This program is distributed in the hope that it will be useful,
REM but WITHOUT ANY WARRANTY; without even the implied warranty of
REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
REM GNU General Public License for more details.
REM
REM You should have received a copy of the GNU General Public
REM License along with this program; if not, write to the Free Software
REM Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
REM
REM Stupid DOS trick to get the package version
REM
copy helpers\win32_frag1.txt + package_version + helpers\win32_frag2.txt helpers\win32_version.bat
call helpers\win32_version.bat
del helpers\win32_version.bat
REM
REM Build It
REM
qmake -o Makefile rivendell.pro
nmake
REM End of build_win32.bat

55
cae/Makefile.am

@ -0,0 +1,55 @@
## automake.am
##
## Core Audio Engine Makefile.am for Rivendell
##
## Copyright 2002-2006 Fred Gleason <fredg@paravelsystems.com>
##
## $Id: Makefile.am,v 1.33.8.1 2012/11/29 01:37:34 cvs Exp $
##
## 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
AM_CPPFLAGS = -Wall @QT_CXXFLAGS@
INCLUDES = -I$(top_srcdir)/lib -I$(top_srcdir)/rdhpi
LIBS = @QT_LIBS@ -L$(top_srcdir)/lib -L$(top_srcdir)/rdhpi
MOC = @QT_MOC@
# The dependency for qt's Meta Object Compiler (moc)
moc_%.cpp: %.h
$(MOC) $< -o $@
bin_PROGRAMS = caed
dist_caed_SOURCES = cae.cpp cae.h\
cae_alsa.cpp\
cae_hpi.cpp\
cae_jack.cpp\
cae_socket.cpp cae_socket.h
nodist_caed_SOURCES = moc_cae.cpp\
moc_cae_socket.cpp
caed_LDADD = @LIB_RDLIBS@\
@LIBALSA@\
@LIBHPI@\
@LIBJACK@\
@LIBSRC@\
@LIBVORBIS@
CLEANFILES = *~\
moc_*
MAINTAINERCLEANFILES = *~\
Makefile.in

2276
cae/cae.cpp
File diff suppressed because it is too large
View File

410
cae/cae.h

@ -0,0 +1,410 @@
// cae.h
//
// The Core Audio Engine component of Rivendell
//
// (C) Copyright 2002-2004 Fred Gleason <fredg@paravelsystems.com>
//
// $Id: cae.h,v 1.79.4.4 2012/11/30 16:14:58 cvs Exp $
//
// 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.
//
#ifndef CAE_H
#define CAE_H
#include <sys/types.h>
#include <pthread.h>
#include <stdint.h>
#include <soundtouch/SoundTouch.h>
#include <qobject.h>
#include <qstring.h>
#include <qsocketdevice.h>
#include <qserversocket.h>
#include <qsignalmapper.h>
#include <qtimer.h>
#include <qprocess.h>
#include <rdwavefile.h>
#include <rdsocket.h>
#ifdef HPI
#include <rdhpisoundcard.h>
#include <rdhpiplaystream.h>
#include <rdhpirecordstream.h>
#endif // HPI
#ifdef ALSA
#include <alsa/asoundlib.h>
struct alsa_format {
int card;
pthread_t thread;
snd_pcm_t *pcm;
unsigned channels;
unsigned capture_channels;
snd_pcm_uframes_t buffer_size;
snd_pcm_format_t format;
unsigned sample_rate;
char *card_buffer;
char *passthrough_buffer;
unsigned card_buffer_size;
unsigned periods;
bool exiting;
};
#endif // ALSA