mirror of
https://github.com/game-stop/veejay.git
synced 2025-12-20 06:40:01 +01:00
Added veejay next generation branch
git-svn-id: svn://code.dyne.org/veejay/trunk@571 eb8d1916-c9e9-0310-b8de-cf0c9472ead5
This commit is contained in:
35
veejay-ng/AUTHORS
Normal file
35
veejay-ng/AUTHORS
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
|
||||||
|
veejay contributors:
|
||||||
|
====================
|
||||||
|
|
||||||
|
(in no particular order)
|
||||||
|
|
||||||
|
|
||||||
|
Jeff Carpenter (programmer) for the XML sample parser
|
||||||
|
David Denny (user) for general feedback and bug reports
|
||||||
|
Daniel Jircik (user) for general feedback and suggestions for future versions
|
||||||
|
Pilo Chambert (programmer) for general information about audio
|
||||||
|
Matthijs van Henten (artist) for extensive feedback and testing
|
||||||
|
Dursun Koca (artist) for extensive feedback and testing
|
||||||
|
Peter de Man (artist) for providing a MIDI keyboard (Yamaha RS7000)
|
||||||
|
Stefan Thieme (vj) for providing a patch for german keyboard layout
|
||||||
|
Andrew Wood (programmer) for providing a RPM spec file for veejay and gveejay
|
||||||
|
Kyle Davenport for providing fixes to the RPM spec file for veejay
|
||||||
|
Daniel Rohr for giving practical tips on math problems (optimizations)
|
||||||
|
Rupert Reddington for sending in a Matrox G550 card (thanks!)
|
||||||
|
Toni (from Germany) for fixing veejay.spec file and compilation for gtk 2.4
|
||||||
|
|
||||||
|
|
||||||
|
veejay/gveejay author:
|
||||||
|
======================
|
||||||
|
|
||||||
|
Niels Elburg <nelburg@looze.net >
|
||||||
|
|
||||||
|
gveejayreloaded authors:
|
||||||
|
=======================
|
||||||
|
Matthijs van Henten (artist/HCI) (interface design)
|
||||||
|
Thomas Reinhold (developer)
|
||||||
|
Niels Elburg (developer)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
504
veejay-ng/COPYING
Normal file
504
veejay-ng/COPYING
Normal file
@@ -0,0 +1,504 @@
|
|||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
Version 2.1, February 1999
|
||||||
|
|
||||||
|
Copyright (C) 1991, 1999 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.
|
||||||
|
|
||||||
|
[This is the first released version of the Lesser GPL. It also counts
|
||||||
|
as the successor of the GNU Library Public License, version 2, hence
|
||||||
|
the version number 2.1.]
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
Licenses are intended to guarantee your freedom to share and change
|
||||||
|
free software--to make sure the software is free for all its users.
|
||||||
|
|
||||||
|
This license, the Lesser General Public License, applies to some
|
||||||
|
specially designated software packages--typically libraries--of the
|
||||||
|
Free Software Foundation and other authors who decide to use it. You
|
||||||
|
can use it too, but we suggest you first think carefully about whether
|
||||||
|
this license or the ordinary General Public License is the better
|
||||||
|
strategy to use in any particular case, based on the explanations below.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom of use,
|
||||||
|
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 and use pieces of
|
||||||
|
it in new free programs; and that you are informed that you can do
|
||||||
|
these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
distributors to deny you these rights or to ask you to surrender these
|
||||||
|
rights. These restrictions translate to certain responsibilities for
|
||||||
|
you if you distribute copies of the library or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of the library, whether gratis
|
||||||
|
or for a fee, you must give the recipients all the rights that we gave
|
||||||
|
you. You must make sure that they, too, receive or can get the source
|
||||||
|
code. If you link other code with the library, you must provide
|
||||||
|
complete object files to the recipients, so that they can relink them
|
||||||
|
with the library after making changes to the library and recompiling
|
||||||
|
it. And you must show them these terms so they know their rights.
|
||||||
|
|
||||||
|
We protect your rights with a two-step method: (1) we copyright the
|
||||||
|
library, and (2) we offer you this license, which gives you legal
|
||||||
|
permission to copy, distribute and/or modify the library.
|
||||||
|
|
||||||
|
To protect each distributor, we want to make it very clear that
|
||||||
|
there is no warranty for the free library. Also, if the library is
|
||||||
|
modified by someone else and passed on, the recipients should know
|
||||||
|
that what they have is not the original version, so that the original
|
||||||
|
author's reputation will not be affected by problems that might be
|
||||||
|
introduced by others.
|
||||||
|
|
||||||
|
Finally, software patents pose a constant threat to the existence of
|
||||||
|
any free program. We wish to make sure that a company cannot
|
||||||
|
effectively restrict the users of a free program by obtaining a
|
||||||
|
restrictive license from a patent holder. Therefore, we insist that
|
||||||
|
any patent license obtained for a version of the library must be
|
||||||
|
consistent with the full freedom of use specified in this license.
|
||||||
|
|
||||||
|
Most GNU software, including some libraries, is covered by the
|
||||||
|
ordinary GNU General Public License. This license, the GNU Lesser
|
||||||
|
General Public License, applies to certain designated libraries, and
|
||||||
|
is quite different from the ordinary General Public License. We use
|
||||||
|
this license for certain libraries in order to permit linking those
|
||||||
|
libraries into non-free programs.
|
||||||
|
|
||||||
|
When a program is linked with a library, whether statically or using
|
||||||
|
a shared library, the combination of the two is legally speaking a
|
||||||
|
combined work, a derivative of the original library. The ordinary
|
||||||
|
General Public License therefore permits such linking only if the
|
||||||
|
entire combination fits its criteria of freedom. The Lesser General
|
||||||
|
Public License permits more lax criteria for linking other code with
|
||||||
|
the library.
|
||||||
|
|
||||||
|
We call this license the "Lesser" General Public License because it
|
||||||
|
does Less to protect the user's freedom than the ordinary General
|
||||||
|
Public License. It also provides other free software developers Less
|
||||||
|
of an advantage over competing non-free programs. These disadvantages
|
||||||
|
are the reason we use the ordinary General Public License for many
|
||||||
|
libraries. However, the Lesser license provides advantages in certain
|
||||||
|
special circumstances.
|
||||||
|
|
||||||
|
For example, on rare occasions, there may be a special need to
|
||||||
|
encourage the widest possible use of a certain library, so that it becomes
|
||||||
|
a de-facto standard. To achieve this, non-free programs must be
|
||||||
|
allowed to use the library. A more frequent case is that a free
|
||||||
|
library does the same job as widely used non-free libraries. In this
|
||||||
|
case, there is little to gain by limiting the free library to free
|
||||||
|
software only, so we use the Lesser General Public License.
|
||||||
|
|
||||||
|
In other cases, permission to use a particular library in non-free
|
||||||
|
programs enables a greater number of people to use a large body of
|
||||||
|
free software. For example, permission to use the GNU C Library in
|
||||||
|
non-free programs enables many more people to use the whole GNU
|
||||||
|
operating system, as well as its variant, the GNU/Linux operating
|
||||||
|
system.
|
||||||
|
|
||||||
|
Although the Lesser General Public License is Less protective of the
|
||||||
|
users' freedom, it does ensure that the user of a program that is
|
||||||
|
linked with the Library has the freedom and the wherewithal to run
|
||||||
|
that program using a modified version of the Library.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow. Pay close attention to the difference between a
|
||||||
|
"work based on the library" and a "work that uses the library". The
|
||||||
|
former contains code derived from the library, whereas the latter must
|
||||||
|
be combined with the library in order to run.
|
||||||
|
|
||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License Agreement applies to any software library or other
|
||||||
|
program which contains a notice placed by the copyright holder or
|
||||||
|
other authorized party saying it may be distributed under the terms of
|
||||||
|
this Lesser General Public License (also called "this License").
|
||||||
|
Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
A "library" means a collection of software functions and/or data
|
||||||
|
prepared so as to be conveniently linked with application programs
|
||||||
|
(which use some of those functions and data) to form executables.
|
||||||
|
|
||||||
|
The "Library", below, refers to any such software library or work
|
||||||
|
which has been distributed under these terms. A "work based on the
|
||||||
|
Library" means either the Library or any derivative work under
|
||||||
|
copyright law: that is to say, a work containing the Library or a
|
||||||
|
portion of it, either verbatim or with modifications and/or translated
|
||||||
|
straightforwardly into another language. (Hereinafter, translation is
|
||||||
|
included without limitation in the term "modification".)
|
||||||
|
|
||||||
|
"Source code" for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For a library, 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 library.
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running a program using the Library is not restricted, and output from
|
||||||
|
such a program is covered only if its contents constitute a work based
|
||||||
|
on the Library (independent of the use of the Library in a tool for
|
||||||
|
writing it). Whether that is true depends on what the Library does
|
||||||
|
and what the program that uses the Library does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Library's
|
||||||
|
complete 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 distribute a copy of this License along with the
|
||||||
|
Library.
|
||||||
|
|
||||||
|
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 Library or any portion
|
||||||
|
of it, thus forming a work based on the Library, 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) The modified work must itself be a software library.
|
||||||
|
|
||||||
|
b) You must cause the files modified to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
c) You must cause the whole of the work to be licensed at no
|
||||||
|
charge to all third parties under the terms of this License.
|
||||||
|
|
||||||
|
d) If a facility in the modified Library refers to a function or a
|
||||||
|
table of data to be supplied by an application program that uses
|
||||||
|
the facility, other than as an argument passed when the facility
|
||||||
|
is invoked, then you must make a good faith effort to ensure that,
|
||||||
|
in the event an application does not supply such function or
|
||||||
|
table, the facility still operates, and performs whatever part of
|
||||||
|
its purpose remains meaningful.
|
||||||
|
|
||||||
|
(For example, a function in a library to compute square roots has
|
||||||
|
a purpose that is entirely well-defined independent of the
|
||||||
|
application. Therefore, Subsection 2d requires that any
|
||||||
|
application-supplied function or table used by this function must
|
||||||
|
be optional: if the application does not supply it, the square
|
||||||
|
root function must still compute square roots.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Library,
|
||||||
|
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 Library, 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 Library.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Library
|
||||||
|
with the Library (or with a work based on the Library) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||||
|
License instead of this License to a given copy of the Library. To do
|
||||||
|
this, you must alter all the notices that refer to this License, so
|
||||||
|
that they refer to the ordinary GNU General Public License, version 2,
|
||||||
|
instead of to this License. (If a newer version than version 2 of the
|
||||||
|
ordinary GNU General Public License has appeared, then you can specify
|
||||||
|
that version instead if you wish.) Do not make any other change in
|
||||||
|
these notices.
|
||||||
|
|
||||||
|
Once this change is made in a given copy, it is irreversible for
|
||||||
|
that copy, so the ordinary GNU General Public License applies to all
|
||||||
|
subsequent copies and derivative works made from that copy.
|
||||||
|
|
||||||
|
This option is useful when you wish to copy part of the code of
|
||||||
|
the Library into a program that is not a library.
|
||||||
|
|
||||||
|
4. You may copy and distribute the Library (or a portion or
|
||||||
|
derivative of it, under Section 2) in object code or executable form
|
||||||
|
under the terms of Sections 1 and 2 above provided that you 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.
|
||||||
|
|
||||||
|
If distribution of 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 satisfies the requirement to
|
||||||
|
distribute the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
5. A program that contains no derivative of any portion of the
|
||||||
|
Library, but is designed to work with the Library by being compiled or
|
||||||
|
linked with it, is called a "work that uses the Library". Such a
|
||||||
|
work, in isolation, is not a derivative work of the Library, and
|
||||||
|
therefore falls outside the scope of this License.
|
||||||
|
|
||||||
|
However, linking a "work that uses the Library" with the Library
|
||||||
|
creates an executable that is a derivative of the Library (because it
|
||||||
|
contains portions of the Library), rather than a "work that uses the
|
||||||
|
library". The executable is therefore covered by this License.
|
||||||
|
Section 6 states terms for distribution of such executables.
|
||||||
|
|
||||||
|
When a "work that uses the Library" uses material from a header file
|
||||||
|
that is part of the Library, the object code for the work may be a
|
||||||
|
derivative work of the Library even though the source code is not.
|
||||||
|
Whether this is true is especially significant if the work can be
|
||||||
|
linked without the Library, or if the work is itself a library. The
|
||||||
|
threshold for this to be true is not precisely defined by law.
|
||||||
|
|
||||||
|
If such an object file uses only numerical parameters, data
|
||||||
|
structure layouts and accessors, and small macros and small inline
|
||||||
|
functions (ten lines or less in length), then the use of the object
|
||||||
|
file is unrestricted, regardless of whether it is legally a derivative
|
||||||
|
work. (Executables containing this object code plus portions of the
|
||||||
|
Library will still fall under Section 6.)
|
||||||
|
|
||||||
|
Otherwise, if the work is a derivative of the Library, you may
|
||||||
|
distribute the object code for the work under the terms of Section 6.
|
||||||
|
Any executables containing that work also fall under Section 6,
|
||||||
|
whether or not they are linked directly with the Library itself.
|
||||||
|
|
||||||
|
6. As an exception to the Sections above, you may also combine or
|
||||||
|
link a "work that uses the Library" with the Library to produce a
|
||||||
|
work containing portions of the Library, and distribute that work
|
||||||
|
under terms of your choice, provided that the terms permit
|
||||||
|
modification of the work for the customer's own use and reverse
|
||||||
|
engineering for debugging such modifications.
|
||||||
|
|
||||||
|
You must give prominent notice with each copy of the work that the
|
||||||
|
Library is used in it and that the Library and its use are covered by
|
||||||
|
this License. You must supply a copy of this License. If the work
|
||||||
|
during execution displays copyright notices, you must include the
|
||||||
|
copyright notice for the Library among them, as well as a reference
|
||||||
|
directing the user to the copy of this License. Also, you must do one
|
||||||
|
of these things:
|
||||||
|
|
||||||
|
a) Accompany the work with the complete corresponding
|
||||||
|
machine-readable source code for the Library including whatever
|
||||||
|
changes were used in the work (which must be distributed under
|
||||||
|
Sections 1 and 2 above); and, if the work is an executable linked
|
||||||
|
with the Library, with the complete machine-readable "work that
|
||||||
|
uses the Library", as object code and/or source code, so that the
|
||||||
|
user can modify the Library and then relink to produce a modified
|
||||||
|
executable containing the modified Library. (It is understood
|
||||||
|
that the user who changes the contents of definitions files in the
|
||||||
|
Library will not necessarily be able to recompile the application
|
||||||
|
to use the modified definitions.)
|
||||||
|
|
||||||
|
b) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (1) uses at run time a
|
||||||
|
copy of the library already present on the user's computer system,
|
||||||
|
rather than copying library functions into the executable, and (2)
|
||||||
|
will operate properly with a modified version of the library, if
|
||||||
|
the user installs one, as long as the modified version is
|
||||||
|
interface-compatible with the version that the work was made with.
|
||||||
|
|
||||||
|
c) Accompany the work with a written offer, valid for at
|
||||||
|
least three years, to give the same user the materials
|
||||||
|
specified in Subsection 6a, above, for a charge no more
|
||||||
|
than the cost of performing this distribution.
|
||||||
|
|
||||||
|
d) If distribution of the work is made by offering access to copy
|
||||||
|
from a designated place, offer equivalent access to copy the above
|
||||||
|
specified materials from the same place.
|
||||||
|
|
||||||
|
e) Verify that the user has already received a copy of these
|
||||||
|
materials or that you have already sent this user a copy.
|
||||||
|
|
||||||
|
For an executable, the required form of the "work that uses the
|
||||||
|
Library" must include any data and utility programs needed for
|
||||||
|
reproducing the executable from it. However, as a special exception,
|
||||||
|
the materials to be 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.
|
||||||
|
|
||||||
|
It may happen that this requirement contradicts the license
|
||||||
|
restrictions of other proprietary libraries that do not normally
|
||||||
|
accompany the operating system. Such a contradiction means you cannot
|
||||||
|
use both them and the Library together in an executable that you
|
||||||
|
distribute.
|
||||||
|
|
||||||
|
7. You may place library facilities that are a work based on the
|
||||||
|
Library side-by-side in a single library together with other library
|
||||||
|
facilities not covered by this License, and distribute such a combined
|
||||||
|
library, provided that the separate distribution of the work based on
|
||||||
|
the Library and of the other library facilities is otherwise
|
||||||
|
permitted, and provided that you do these two things:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work
|
||||||
|
based on the Library, uncombined with any other library
|
||||||
|
facilities. This must be distributed under the terms of the
|
||||||
|
Sections above.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library of the fact
|
||||||
|
that part of it is a work based on the Library, and explaining
|
||||||
|
where to find the accompanying uncombined form of the same work.
|
||||||
|
|
||||||
|
8. You may not copy, modify, sublicense, link with, or distribute
|
||||||
|
the Library except as expressly provided under this License. Any
|
||||||
|
attempt otherwise to copy, modify, sublicense, link with, or
|
||||||
|
distribute the Library 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.
|
||||||
|
|
||||||
|
9. 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 Library or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Library (or any work based on the
|
||||||
|
Library), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Library or works based on it.
|
||||||
|
|
||||||
|
10. Each time you redistribute the Library (or any work based on the
|
||||||
|
Library), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute, link with or modify the Library
|
||||||
|
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 with
|
||||||
|
this License.
|
||||||
|
|
||||||
|
11. 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 Library at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Library 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 Library.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
12. If the distribution and/or use of the Library is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Library 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.
|
||||||
|
|
||||||
|
13. The Free Software Foundation may publish revised and/or new
|
||||||
|
versions of the Lesser 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 Library
|
||||||
|
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 Library does not specify a
|
||||||
|
license version number, you may choose any version ever published by
|
||||||
|
the Free Software Foundation.
|
||||||
|
|
||||||
|
14. If you wish to incorporate parts of the Library into other free
|
||||||
|
programs whose distribution conditions are incompatible with these,
|
||||||
|
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
|
||||||
|
|
||||||
|
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||||
|
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||||
|
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||||
|
OTHER PARTIES PROVIDE THE LIBRARY "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
|
||||||
|
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||||
|
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. 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 LIBRARY 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
|
||||||
|
LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries
|
||||||
|
|
||||||
|
If you develop a new library, and you want it to be of the greatest
|
||||||
|
possible use to the public, we recommend making it free software that
|
||||||
|
everyone can redistribute and change. You can do so by permitting
|
||||||
|
redistribution under these terms (or, alternatively, under the terms of the
|
||||||
|
ordinary General Public License).
|
||||||
|
|
||||||
|
To apply these terms, attach the following notices to the library. 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 library's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library 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
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this library; 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.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||||
|
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1990
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
That's all there is to it!
|
||||||
|
|
||||||
|
|
||||||
617
veejay-ng/ChangeLog
Normal file
617
veejay-ng/ChangeLog
Normal file
@@ -0,0 +1,617 @@
|
|||||||
|
0.7.2
|
||||||
|
+ fixed Network Streaming (VIMS 165:hostname port_id; )
|
||||||
|
+ fixed handling of multiple connections
|
||||||
|
+ added new tool 'mcastOSC'
|
||||||
|
+ added commandline parameter '-g' to sayVIMS for multicast
|
||||||
|
+ added commandline parameter '-V' for veejay VIMS multicast
|
||||||
|
+ added commandline parameter '-M' for veejay OSC multicast
|
||||||
|
+ fixed a small bug in multicast OSC
|
||||||
|
+ added doc/NET.txt to explain network streaming/multicast
|
||||||
|
+ fixed segfault in Ghost effect
|
||||||
|
+ added basic negotiation on frame information for Network Streaming
|
||||||
|
+ refactorized vj-server.c/vj-client.c
|
||||||
|
+ refactorized network dependent code to libvjnet
|
||||||
|
+ fixed screenshot dump when playing 4:2:2
|
||||||
|
+ changed VIMS 054 (screenshot) 054:name.jpg; or 054:;
|
||||||
|
+ added multicast video transmitter/receiver !!
|
||||||
|
+ revisited OSC implementation ( use veejay -u -n |less )
|
||||||
|
+ updated documentation (Howto, MAN pages, etc)
|
||||||
|
+ removed obsolete VIMS messages
|
||||||
|
+ librified editlist,stream and yuv functions
|
||||||
|
+ removed any references on dropped vloopback support
|
||||||
|
+ fixed ticket 6
|
||||||
|
+ fixed ticket 7
|
||||||
|
+ fixed autosplitting while recording
|
||||||
|
+ added dv1394 stream support
|
||||||
|
(uses libdv, so its slow even on a pentium3/1 ghz)
|
||||||
|
|
||||||
|
0.7.1
|
||||||
|
+ fixed color corruption in fib
|
||||||
|
+ removed veejay.spec from configure.in
|
||||||
|
+ added render history list
|
||||||
|
+ fixed bug in Displacement Map
|
||||||
|
+ added new effect 'Cartoon' (Flatten bitdepth)
|
||||||
|
+ added new effect 'Nervous'
|
||||||
|
+ removed obsolete file 'motiondetect' from libvje
|
||||||
|
+ fixed mode 2 of 'Amplify Low Noise' effect
|
||||||
|
+ added new effect 'Cartoon'
|
||||||
|
+ added new effect 'Motion Ghost'
|
||||||
|
+ added new effect 'Morphology'
|
||||||
|
+ added new effect 'Nervous'
|
||||||
|
+ added new effect 'Video Blobs'
|
||||||
|
+ fixed ticket #3 (editlist load bug)
|
||||||
|
+ added new effect 'Video Boids'
|
||||||
|
+ refurbished status line (all modi have 13 status bytes now)
|
||||||
|
+ fixed minor bug in 'video boids'
|
||||||
|
+ bumped version to 0.7.2
|
||||||
|
- render to history list mismatches frames in clip
|
||||||
|
(too many)
|
||||||
|
|
||||||
|
0.7.0
|
||||||
|
+ added --version commandline
|
||||||
|
+ fixed use of implicit declarations and other compiler warnings
|
||||||
|
+ fixed several effects (mostly blending effects)
|
||||||
|
+ moved sample functionality to libsample
|
||||||
|
+ started documentation of VIMS (see doc/VIMS.txt)
|
||||||
|
+ added dummy mode (works for real now this time!)
|
||||||
|
+ added commandline parameter -d for Dummy mode
|
||||||
|
+ added commandline parameter -W (width) for dummy
|
||||||
|
+ added commandline parameter -H (height) for dummy
|
||||||
|
+ added commandline parameter -R (rate) for dummy
|
||||||
|
+ added commandline parameter -N (norm) for dummy
|
||||||
|
+ fixed cycling of effect parameters (keyboard)
|
||||||
|
+ added optimized memcpy for ppc
|
||||||
|
+ added --auto-loop commandline option
|
||||||
|
+ changes to build configuration
|
||||||
|
+ minor bugfix in remotely adding effects on streams
|
||||||
|
+ added save editlist / save selection
|
||||||
|
+ added error check on switching playmodes in dummy mode
|
||||||
|
+ fixed bug in fade in/fade out chain
|
||||||
|
+ some cleanup
|
||||||
|
+ updated veejay MAN page
|
||||||
|
|
||||||
|
0.6.4 / 0.6.5
|
||||||
|
+ added experimental network streaming
|
||||||
|
+ fixed rawdv2yuv when not having libdv
|
||||||
|
+ fixed parsing of VIMS arguments
|
||||||
|
+ moved veejays effects into libvje
|
||||||
|
+ moved memory managment into libvjmem
|
||||||
|
+ moved logging functions to libvjmsg
|
||||||
|
+ compiles on PPC
|
||||||
|
+ compiles on MIPS
|
||||||
|
+ fixed a lot of bugs
|
||||||
|
+ refactorized OSC code (now also used by Lives)
|
||||||
|
+ fixed recording of streams
|
||||||
|
+ put back in ChangeLog (some changes were lost :( ,
|
||||||
|
most of them are bugfixes during piksel workshop )
|
||||||
|
+ moved sample administrator to libsample
|
||||||
|
+ removed external wav files from libsample
|
||||||
|
+ removed keyframe interpolation from libsample
|
||||||
|
|
||||||
|
0.6.3
|
||||||
|
+ small fixes to zoom effect
|
||||||
|
+ small optimizations to motion blur
|
||||||
|
+ added DrawText plugin from Gustavo Sverzut Barbieri
|
||||||
|
+ added Dummy Example Plugin
|
||||||
|
+ added Veejay Plugins ( see plugins/README )
|
||||||
|
+ added FreeType to configure script
|
||||||
|
+ updated email address in license information
|
||||||
|
|
||||||
|
0.6.2 (fork of 0.6.0)
|
||||||
|
|
||||||
|
+ dropped vloopback support
|
||||||
|
+ removed vj-motion.c
|
||||||
|
+ removed cpu_accel.c
|
||||||
|
+ removed obsolete vj-frameinfo.c
|
||||||
|
+ removed obsolete colorspace.c
|
||||||
|
+ removed obsolete client
|
||||||
|
+ removed obsolete RGB output stream
|
||||||
|
+ removed all of ccvt yuv<->rgb conversion routines
|
||||||
|
+ all encoders/decoders working with both 4:2:0 and 4:2:2
|
||||||
|
+ added FOURCC 'yv16' to record YUV 4:2:2 planar to AVI
|
||||||
|
+ touched all effects to work in 4:2:0 and in 4:2:2 planar
|
||||||
|
+ added '--ycbcr'/ '-Y' [01] commandline options to force
|
||||||
|
using 4:2:0 or 4:2:2
|
||||||
|
+ changes to performer to include YUV 4:2:2 Planar
|
||||||
|
+ added SDL_YUY2_OVERLAY to SDL Video Window (to display 4:2:2)
|
||||||
|
+ added chromacity sampling YCbCr 4:2:2 <=> YUV 4:4:4
|
||||||
|
+ audio resampling for trickplay
|
||||||
|
+ on the fly audio resampling
|
||||||
|
+ added '--force' or 'r' to force adding files to the editlist,
|
||||||
|
this effectivly turns on auto interlacing and disrespects norm/video framerate
|
||||||
|
+ included avformat/avcodec to open and decode various stream formats
|
||||||
|
(not all types are supported, tested with Xvid,Divx,Mpeg4,mjpeg,dvvideo)
|
||||||
|
+ refactorized Edit Decision List to include probing with AVFormat
|
||||||
|
+ libdv optional now
|
||||||
|
+ fixed bug in radial blur that caused segmentation fault
|
||||||
|
+ extended chrominance palette to key on color
|
||||||
|
+ cleanup overlay scratcher
|
||||||
|
|
||||||
|
0.6.1
|
||||||
|
+ fork of veejay to experiment with the MLT framework (mlt.sourceforge.net)
|
||||||
|
probably this will be an extension to the Edit Decision List.
|
||||||
|
(experimental tarball can be found on the veejay's sourceforge files page)
|
||||||
|
|
||||||
|
0.6.0
|
||||||
|
+ fixed bug in performer when using a stream multiple times
|
||||||
|
+ fixed bug in veejay -u / --dump-events
|
||||||
|
(prints effect numbers correctly now)
|
||||||
|
+ changed setting playmode to 0=clip,1=stream,2=plain video
|
||||||
|
so it is consistent with source/channel selections.
|
||||||
|
+ some cleanups
|
||||||
|
+ fixed VIMS duplicate NET_EFFECT_LIST and VLOOPBACK_START
|
||||||
|
(both have unique numbers now)
|
||||||
|
+ fixed compile error in split.c (forgot to remove valgrind lines)
|
||||||
|
+ fixed possible race condition in handling events
|
||||||
|
+ fixed luma key effect (corrected dimensions)
|
||||||
|
+ veejay console has coloured text now
|
||||||
|
+ fixed use of errors/warnings/debug/info troughout veejay
|
||||||
|
+ fixed (synchronized) looping of overlaying clips
|
||||||
|
+ fixed memory leak while overriding effects
|
||||||
|
+ dont show effects in plain video mode
|
||||||
|
+ finally found the famous last-frame editlist bug
|
||||||
|
+ 'HOME' includes benchmark information about render duration
|
||||||
|
+ clarified (some) event names in vj-event.c
|
||||||
|
+ added 3 new vims events (bezerk,verbose, sample-mode)
|
||||||
|
+ added -n/--no-color commandline option
|
||||||
|
+ added -b/--bezerk commandline option
|
||||||
|
+ added -v/--verbose commandline option
|
||||||
|
+ added -F/--features commandline option
|
||||||
|
+ added -m/--sample-mode commandline option to select supersampling filter
|
||||||
|
(fast or high quality)
|
||||||
|
+ supersampling method now selectable trough console ('sa')
|
||||||
|
+ clip/stream information informs user if the effect is super sampled
|
||||||
|
(4:4:4) or not (4:2:0)
|
||||||
|
+ removed -q/--quit commandline option (use VIMS)
|
||||||
|
+ optimized effect fib downscale
|
||||||
|
+ optimized effect splitted screens
|
||||||
|
+ optimized effect bathroom window
|
||||||
|
+ optimized effect pixelate
|
||||||
|
+ optimized effect pixel raster
|
||||||
|
+ optimized effect width mirror
|
||||||
|
+ optimized effect replace pure white
|
||||||
|
+ optimized effect flip
|
||||||
|
+ optimized effect complex sync
|
||||||
|
+ optimized effect luma blend
|
||||||
|
+ optimized effect overlay magic
|
||||||
|
+ improvement to SSE/MMX/MMX2 memcpy functions (updates from xine cvs)
|
||||||
|
+ improvements to effect luma magick
|
||||||
|
+ fixed bug in effect overlay by threshold range
|
||||||
|
+ fixes to flexible effect manager (vj-effect and vj-perform)
|
||||||
|
+ set performer framebuffer to black to avoid green screens
|
||||||
|
while switching clip/streams that have large effect chain
|
||||||
|
+ use of const keyword in most of effects now (helps compiler)
|
||||||
|
+ when using -O3 -o stdout veejay will dump the yuv4mpeg
|
||||||
|
stream to stdout
|
||||||
|
+ cleanup and improved Performer
|
||||||
|
+ improvements to down sampling 4:4:4 -> 4:2:0 (slightly better quality)
|
||||||
|
+ pressing ESC when no clips exist will result in playing a tag
|
||||||
|
+ updated MAN page
|
||||||
|
+ updated HOWTO
|
||||||
|
+ updated VIMS.txt in doc/
|
||||||
|
+ updated some testcases in test/
|
||||||
|
+ added new testcase 'swirl-vims.txt' in test/code
|
||||||
|
+ added new effect 'Radial Blur' (from xine), both horizontal and vertical
|
||||||
|
+ added new effect 'Binary Overlays'
|
||||||
|
+ added new effect 'Chromium' to swap chroma/invert chroma channels
|
||||||
|
+ added new effect 'Chrominance palette'
|
||||||
|
|
||||||
|
|
||||||
|
0.5.9t9
|
||||||
|
+ fixed small bug in magic overlay additive mode
|
||||||
|
+ added new commandline option '-F' to show compiled in features
|
||||||
|
+ JACK is optional in configure script now. ( ./configure --disable-jack )
|
||||||
|
+ updatd MAN pages veejay,yuv2rawdv,rawdv2yuv and sendVIMS
|
||||||
|
+ fixes to 'Splitted Screen' effect
|
||||||
|
+ fixed VIMS toggle between source (streams and clips) while mixing
|
||||||
|
+ fixed VIMS select previous channel
|
||||||
|
+ fixed VIMS select next channel
|
||||||
|
+ fixed VIMS print stream/clip information
|
||||||
|
+ fixes to mixing different types of sources
|
||||||
|
+ fixed VIMS 'select effect' (displays effect type now)
|
||||||
|
+ added experimental shared memory streams
|
||||||
|
(start writer with veejay -O4 , start reader with 253:<semaphore_id> <segment_id>)
|
||||||
|
works only with -a0 (no audio)
|
||||||
|
+ changed key for switching sources , is now SLASH
|
||||||
|
+ added new event 'add WAV file to clip' (VIMS 136:file.wav;)
|
||||||
|
the clip recorder will , when writing to disk, use this file
|
||||||
|
file to import PCM WAVE. The WAV file must match the properties in your editlist
|
||||||
|
+ added new event 'del WAV file from clip'
|
||||||
|
+ disallow changing dataformat while recording
|
||||||
|
+ fixes to freeing of memory in vj-perform
|
||||||
|
+ added command line parameter '-I/--deinterlace'
|
||||||
|
+ added check on unsupported video codecs
|
||||||
|
+ updated bio2jack from cvs (july 2004)
|
||||||
|
+ fixed 'additive' mode in chroma magick
|
||||||
|
+ fixed 'subtractive' mode in chroma magick
|
||||||
|
+ added '24' (darken) mode to chroma magick
|
||||||
|
+ added '25' (lighten) mode to chroma magick
|
||||||
|
+ added 'sendVIMS' utility to tools/ and MAN page
|
||||||
|
+ lot of cleanup
|
||||||
|
|
||||||
|
|
||||||
|
0.5.9t8
|
||||||
|
+ fixed recording of clips in DV 2 format
|
||||||
|
+ Magic Motion improved, p0 = anti alias p1=min threshold frame A,
|
||||||
|
+ p2 = min threshold frame B, p3 = bw/color toggle
|
||||||
|
+ new keyboard event ALT+B to take and set a static background
|
||||||
|
+ (use with Magic Motion)
|
||||||
|
+ improved memory managment in vj-perform.c
|
||||||
|
+ removed caching of clips from vj-perform.c
|
||||||
|
+ new 2gb auto splitter for streams
|
||||||
|
+ better error handling for recording clips/streams
|
||||||
|
+ JACK support (dropped audiolib)
|
||||||
|
+ added command line parameter '-x/--geometryx'
|
||||||
|
+ added command line parameter '-y/--geometryy'
|
||||||
|
+ removed obsolete command line parameters
|
||||||
|
|
||||||
|
|
||||||
|
0.5.9t7
|
||||||
|
+ fixed bug in clip recording (never stopped recording on 130:0 0;)
|
||||||
|
+ renamed Magic Motion to Difference Overlay
|
||||||
|
p0 = lighter/darker
|
||||||
|
p1 = noise level Luma channel
|
||||||
|
p2 = noise level chrominance Cb
|
||||||
|
p3 = noise level chrominance Cr
|
||||||
|
|
||||||
|
0.5.9t6
|
||||||
|
+ fixed segfault in stopping clip recording
|
||||||
|
+ fixed possible segfault in event handler
|
||||||
|
+ added testcases for various effects in tests/
|
||||||
|
- todo: 2 gb auto splitter for stream recording
|
||||||
|
|
||||||
|
0.5.9t5
|
||||||
|
+ new effect 'Swirl'
|
||||||
|
+ new effect 'Fish Eye'
|
||||||
|
+ new effect 'Pixel Smear'
|
||||||
|
+ new effect 'Grid'
|
||||||
|
+ fixed bug in loading Mjpegtools'editlists
|
||||||
|
+ using fsincos for faster sin/cos operations (common.h)
|
||||||
|
+ fixed bug in clip / stream recorder
|
||||||
|
(missed last frame)
|
||||||
|
+ 2 gb file limit - auto splitter (only for clips for now)
|
||||||
|
+ changed default values in (smooth) rgb key effects
|
||||||
|
+ fixed bug in recording the number of frames requested
|
||||||
|
+ new set of demos in tests/
|
||||||
|
|
||||||
|
0.5.9t4
|
||||||
|
+ fixed bug in performer when mixing different codecs
|
||||||
|
+ new effect 'Pixelate'
|
||||||
|
+ new effect 'Magic Mirror'
|
||||||
|
+ new effect 'Distortion Map'
|
||||||
|
+ fixed steepness factor in gamma correction
|
||||||
|
+ fixed solarize effect
|
||||||
|
+ changed default values for saturation effect
|
||||||
|
+ small bugfix in RippleTV
|
||||||
|
+ clip recorder duration 0 results in recording of entire clip start ~ end
|
||||||
|
+ fixed writing of pcm wave when recording clips in any format
|
||||||
|
+ dynamical effect chain (greatly reduces memory hog)
|
||||||
|
+ various smaller fixes
|
||||||
|
|
||||||
|
|
||||||
|
0.5.9t3
|
||||||
|
+ fixed mixing stream with clip
|
||||||
|
+ fixed RippleTV effect
|
||||||
|
+ fixed bug in switching clips/streams while mixing
|
||||||
|
+ renewed Multi Mirrors effect
|
||||||
|
+ fixed cache system in performer
|
||||||
|
+ changed default values in some effects
|
||||||
|
+ partly updated veejay MAN page
|
||||||
|
+ renewed --dump-events for VIMS/effect ID's
|
||||||
|
+ example perl script test/tests/auto-vj.pl
|
||||||
|
that generates a textfile for use with the testclient
|
||||||
|
(demonstrates the new multi mirror effect)
|
||||||
|
+ new fourcc 'IYUV' added, which allows storing
|
||||||
|
of raw YUV 4:2:0 i420 in AVI.
|
||||||
|
(experimental)
|
||||||
|
|
||||||
|
0.5.9t2
|
||||||
|
+ fixes in ChromaMagick/MatteScratcher
|
||||||
|
+ fixes in Motion Blur
|
||||||
|
+ fixes in Splitted Screens
|
||||||
|
+ 'RippleTV' effect ported from EffecTV
|
||||||
|
+ MMX memset
|
||||||
|
+ MMX optimized filters killchroma and few others
|
||||||
|
+ XML based Action File
|
||||||
|
(Press CTRL+Key to create a effect template from the current chain,
|
||||||
|
press SHIFT+Key to apply the template.
|
||||||
|
Use 'al' to load the templates from an Action File'
|
||||||
|
Use 'as' to save.
|
||||||
|
+ bugfixes in event handler
|
||||||
|
+ new VIMS message for deleting all clips
|
||||||
|
+ new VIMS message for copying clips
|
||||||
|
+ bugfixes performer (reduced memcpy())
|
||||||
|
+ improved performance in v4l
|
||||||
|
+ improved performance in y4m
|
||||||
|
+ removed obsolete commandline parameters
|
||||||
|
+ fixes in vjrender command
|
||||||
|
+ added '?' ,'h' and 'H' commands to console
|
||||||
|
+ finally fixed dummy mode
|
||||||
|
+ fixed keyboard events play_backward and play_forward
|
||||||
|
when playing at high speeds
|
||||||
|
+ fixed looping at high speeds
|
||||||
|
+ fixed use of effects, 1xx = single frame effect, 2xx = mixing effect
|
||||||
|
|
||||||
|
|
||||||
|
0.5.9t1
|
||||||
|
+ General bugfixes, fixed a few memory leaks and use of unitialized variables
|
||||||
|
+ fixed Makefile.am / configure.in to auto detect cpu capabilities,
|
||||||
|
also fixed build order problem with ffmpeg
|
||||||
|
+ added support for DivX ;) encoding/decoding
|
||||||
|
limitation: for mpeg4/divx every frame must be a key frame
|
||||||
|
or veejay cannot really work with them.
|
||||||
|
+ added new effect 'Enhanced Magic Blend'
|
||||||
|
+ added new effect 'Pencil Sketch (8)'
|
||||||
|
+ new effect 'Color Enhance' , allows increasing of R, G, B , each 0 - 255
|
||||||
|
+ new effect 'Noise Pencil'
|
||||||
|
+ renamed posterize to posterize (threshold range)
|
||||||
|
+ Export DV2/MJPG/MPEG4/Divx videofiles with sample/stream-recorder
|
||||||
|
+ partly rewritten veejay socket server
|
||||||
|
+ Fixed handling of YUV 4:2:0 and YUV 4:2:2 data
|
||||||
|
+ vloopback streams in YV12 or RGB24
|
||||||
|
+ added new feature 'Effect Key Frame'
|
||||||
|
+ Increased EditList's capacity to 4096 files (thanks to ronald bultje)
|
||||||
|
+ Renamed sample to clip , tag to stream
|
||||||
|
+ Increased Stream/Clip capacity to 16384
|
||||||
|
+ Up to 20 effects on the effect chain
|
||||||
|
+ per clip / stream effect chain enable/disable
|
||||||
|
+ stream/clip effect chain by default on
|
||||||
|
+ fixes to all scratcher overlay effects
|
||||||
|
+ increased scratcher buffer to 100 frames
|
||||||
|
+ rewritten OSC message structure (not decided yet)
|
||||||
|
+ added VIMS test cases in test/
|
||||||
|
+ added perl scripts to generate VIMS test cases in test/perl
|
||||||
|
+ factorization of callbacks routines
|
||||||
|
vj-callbacks.c/h, vj-console.c/h,veejay.c => vj-event
|
||||||
|
+ OSC maps to VIMS (OpenSoundControl)
|
||||||
|
+ NET maps to VIMS (internal protocol)
|
||||||
|
+ SDL maps to VIMS (SDL keyboard)
|
||||||
|
+ can add new events to VIMS (message bundles)
|
||||||
|
+ finished veejay control documentation,vims/osc/sdl
|
||||||
|
+ removed sample countdown (use marker instead)
|
||||||
|
+ added --action-file to load keybundles
|
||||||
|
+ actionfile and bundles scripts to remake live-cinema
|
||||||
|
|
||||||
|
|
||||||
|
0.5.3
|
||||||
|
- added OMC from experimental veejay branch
|
||||||
|
- fixed bug in starting UDP server
|
||||||
|
- fixed bug in reaching end of video in plain mode
|
||||||
|
- added chain fade feature ,
|
||||||
|
this will enable the effect chain and fade in the
|
||||||
|
chain to 100% in num seconds
|
||||||
|
- implemented tag encoder which records from a tag
|
||||||
|
for num seconds and auto-adds a sample to the samplelist
|
||||||
|
- added OSC callbacks:
|
||||||
|
- implemented sample countdown ( 5....4...3...2...1 ... 0)
|
||||||
|
- added zoom algorithm ( best neighbour algorithm )
|
||||||
|
uses deinterlacing for use with common v4l hardware.
|
||||||
|
(temporary)
|
||||||
|
- fixed rendering of samples
|
||||||
|
- added Image Effect DeInterlace effect (from yuvkineco)
|
||||||
|
- added Video Effect Simple Mask effect
|
||||||
|
- added Pixel Raster effect
|
||||||
|
- ffmpeg updated to ffmpeg cvs (late November)
|
||||||
|
|
||||||
|
0.5.2
|
||||||
|
- added Motion blur by averaging frames over time.
|
||||||
|
- added Average effect
|
||||||
|
allows increasing the luminance by a fraction
|
||||||
|
- added Sinoids Effect
|
||||||
|
- added Ripple Effect
|
||||||
|
- added Bathroom Effect (horizontal and vertical modes with p0)
|
||||||
|
- added 'Gesture Control Interface' and Motion Detector
|
||||||
|
- added feature to toggle effect upon motion
|
||||||
|
- added raw rgb stream out
|
||||||
|
- added raw rgb stream in
|
||||||
|
- added raw rgb interactive mode
|
||||||
|
- added raw rgb burst mode
|
||||||
|
- added y4m open/close in veejay console
|
||||||
|
- added new utility 'rawdv2yuv' which decodes rawdv to iv12 or i420
|
||||||
|
with the possibility scale to half size + simple clipping.
|
||||||
|
- added 22 new modes to Matte Scratcher
|
||||||
|
- added Sample creation on Scene Detection
|
||||||
|
- renamed 'Various Embossing/Edge ...' to 'Various Weird Effects'
|
||||||
|
- minor optimizations in playback mechanism
|
||||||
|
- fixed bug in proc detection of v4l/vloopback devices
|
||||||
|
- fixed bug in print_sample_info
|
||||||
|
- fixed console command 'vi' for opening of v4l device
|
||||||
|
- fixes in audio playback
|
||||||
|
- fixed reverse audio playback
|
||||||
|
- fixes in DirectFB output
|
||||||
|
- fixed bug in marker
|
||||||
|
- fixed bug in numeric keypad key 'ENTER' (pressed state)
|
||||||
|
|
||||||
|
|
||||||
|
0.5.1
|
||||||
|
- added mode 7 - 22 to chroma magick effect
|
||||||
|
(exclusive, diffnegate and additive)
|
||||||
|
- changes in mode 9 of overlay magic (exclusive)
|
||||||
|
includes Cb/Cr now
|
||||||
|
- fixed bug in mixing audio while rendering
|
||||||
|
- fixed bug in audio playback
|
||||||
|
- audio/video and video files can be combined now,
|
||||||
|
- fixed bug in vjrender (bail if sample frames dont fit)
|
||||||
|
- updated spec file
|
||||||
|
- fixed deleting tag multiple times
|
||||||
|
(no hangup after 2nd time opening of a yuv4mpeg stream)
|
||||||
|
|
||||||
|
0.5.0
|
||||||
|
- fixed compile error when optimizations are enabled
|
||||||
|
- fixes in splitted screens effect
|
||||||
|
- optimizations in splitted screens effect
|
||||||
|
- changes in vj-performer to fix mem leaks
|
||||||
|
- changes in liblavplayvj to fix mem leaks
|
||||||
|
- fixed bug in vj-effman
|
||||||
|
- fixed bug in vj-server
|
||||||
|
- fixes in overlay scratcher for bounce mode
|
||||||
|
- fixed sharpen effect
|
||||||
|
- fixes in render mechanism (audio)
|
||||||
|
- several other smaller fixes
|
||||||
|
- introduced 'has_internal_data' to cleanup memory
|
||||||
|
in use by some effect at veejay shutdown
|
||||||
|
- fixed creation of samples while playing tags
|
||||||
|
- fixed gcc-2 compile error in split.c
|
||||||
|
- fixed memory leaks in vj-tag and sampleadm
|
||||||
|
- fixed memory leaks in vj-callbacks
|
||||||
|
- fixed bug in resize video
|
||||||
|
- fixed bug in audio toggle
|
||||||
|
- fixed playing audio in pause in mode plain
|
||||||
|
- fixed playing of last frame in mode plain
|
||||||
|
- fixed bug in smooth threshold
|
||||||
|
|
||||||
|
0.5.0pre1
|
||||||
|
- added commandline parameter to start veejay without default tags
|
||||||
|
- bugfix in vj-sdl
|
||||||
|
- changes in vj-perform
|
||||||
|
- added feature to move rendered sample to a new sample
|
||||||
|
- added feature to delete rendered entries
|
||||||
|
- changed default parameter in bump 2d
|
||||||
|
- fixed possible crash in transition translate opacity/blend
|
||||||
|
- fixed parameter in multi mirror
|
||||||
|
- fixes in switches between playmodes
|
||||||
|
- fixes in getting all tags
|
||||||
|
- fixed queuing of non exiting frames (beyond editlist)
|
||||||
|
- fixed tag deletion
|
||||||
|
- disabled sliding door transition (possible segfault)
|
||||||
|
- fixed rendering of audio
|
||||||
|
- fixed switching between tag <-> samples
|
||||||
|
- fixed bug in rendering mechanism
|
||||||
|
- changed code to non multithread for render job (simpler).
|
||||||
|
- fix bug in luma blend mode (possible crash)
|
||||||
|
- fix bug in noiseadd (possible crash)
|
||||||
|
- fix bug in softblur mode (possible crash)
|
||||||
|
- fixed another possible crash in distortion effect
|
||||||
|
- fixed bug in softblur
|
||||||
|
- fixed bugs in magic overlays
|
||||||
|
- fixed smuck
|
||||||
|
- fixed splitted screens
|
||||||
|
- fixed dices
|
||||||
|
- fixed a few compiler warnings.
|
||||||
|
- fixed out of sync effect (for real now)
|
||||||
|
- some experiments in enhancemask.c
|
||||||
|
- parameter minimum change in contrast (-255 to 255)
|
||||||
|
|
||||||
|
0.4.9rc3
|
||||||
|
- fix bug in opening of v4l device
|
||||||
|
- fix bug in switching between audio/video sample and tags
|
||||||
|
- fix bug in general audio playback
|
||||||
|
- synced hash.c / hash.h from kazlib (version 1.20)
|
||||||
|
- minor bugfixes here and there
|
||||||
|
|
||||||
|
0.4.9rc2
|
||||||
|
- fixes in rendering mechanism,
|
||||||
|
audio and samples at different speed get correctly
|
||||||
|
inserted
|
||||||
|
- fixed ghost frame in render mechanism
|
||||||
|
- fixes in a few callbacks
|
||||||
|
- added 'Amplify low noise' effect
|
||||||
|
- added sharpen filter from yuvdenoise
|
||||||
|
allowing 0 - 2048 for extra grainy video.
|
||||||
|
- synced colorspace.c/colorspace.h with mjpegtools-1.6.1.90
|
||||||
|
- fixes in queuing mechanism
|
||||||
|
- fixes in vjrender initialization
|
||||||
|
- fixes in activating/deactivating tags
|
||||||
|
- fixes in default tags
|
||||||
|
- disallow user to render while playing
|
||||||
|
- disallow user to render while rendering.
|
||||||
|
|
||||||
|
0.4.9
|
||||||
|
- added more command line parameters to vjrender
|
||||||
|
- added frame duplicator feature
|
||||||
|
- finalized sample render history
|
||||||
|
- added msg to retrieve devices (v4l/vloopback)
|
||||||
|
- veejay closes connections properly now
|
||||||
|
- changed default value of colored border transition
|
||||||
|
- changed default value of tranform cubicq (effectv)
|
||||||
|
- fixed bugs/assertions in a number of callbacks
|
||||||
|
- implemented basic functionality in veejay for history list
|
||||||
|
- implemented functions for finding v4l/vloopback devices
|
||||||
|
- default tags are activated at startup
|
||||||
|
- fixed serious bug in effect chain when not starting at entry 0
|
||||||
|
- builded a new gui
|
||||||
|
- documented Tags/setting playmode in Networking.txt
|
||||||
|
- added new section 'VIDEO COMMANDS' to man , a few examples
|
||||||
|
and new commandline parameters have been included.
|
||||||
|
- renamed 'About Video' to 'Video Information' ('VI') in console
|
||||||
|
- added 'Add videofile as sample' in console
|
||||||
|
- added 'Add videofile' in console
|
||||||
|
- added tag creation callbacks for remote
|
||||||
|
- added fake video
|
||||||
|
- added resize screen command
|
||||||
|
- added command line parameters for fake video
|
||||||
|
- fixes in mode 2 of chromamagic (select max )
|
||||||
|
- sample stores frame duplicator
|
||||||
|
- fixed out of sync effect
|
||||||
|
- fixed bug in rendering of frames in effect chain
|
||||||
|
- fixed bug in makefile for make uninstall
|
||||||
|
|
||||||
|
0.4.8
|
||||||
|
- functionality improved,
|
||||||
|
veejay informs gui about disabled effects
|
||||||
|
(old situation: gui sees disabled effects as <none>)
|
||||||
|
- fixed saving of samples (did not save parameters correctly)
|
||||||
|
- fixed bug in veejay_open
|
||||||
|
- fixed compile errors in liblavplay (declaration after statement)
|
||||||
|
- new effect 3bars
|
||||||
|
|
||||||
|
|
||||||
|
0.4.7 - updated audiolib,lav_io,avilib
|
||||||
|
(synced against mjpegtools-1.6.1)
|
||||||
|
- updated ffmpeg
|
||||||
|
- improved audio support
|
||||||
|
- added german keyboard hack, GER_KEY_HACK
|
||||||
|
- fixed some compile errors and warnings
|
||||||
|
- created vjrender for rendering of samples
|
||||||
|
- updated doc/Networking
|
||||||
|
- fixed sample update start/end
|
||||||
|
- fixed save/load samplelist console status message
|
||||||
|
- updated test/client.c
|
||||||
|
- restriction on set_speed : do not go outside sample
|
||||||
|
- fixed audio queuing/timing problems
|
||||||
|
- added new network command to add and set effect in 1 go
|
||||||
|
|
||||||
|
0.4.6
|
||||||
|
- fix in out of sync
|
||||||
|
- new effect isolate color
|
||||||
|
- moved libvjplay into libveejay
|
||||||
|
- fast memset/memcpy revised, code taken from DirectFB ,mplayer,
|
||||||
|
transcode and /usr/src/linux/arch/
|
||||||
|
- magic motion completed.
|
||||||
|
- general optimizations
|
||||||
|
- optimizations in sampleadm
|
||||||
|
- cleanups , bugfixing
|
||||||
|
|
||||||
|
0.4.5
|
||||||
|
- memory leaks fixed in sampleload,effectload,
|
||||||
|
- fixes in parameter update rules
|
||||||
|
- fixed bugs in veejay / gveejay
|
||||||
|
- fixed Magic Motion
|
||||||
|
|
||||||
|
0.4.4
|
||||||
|
- changes in initialization phase
|
||||||
|
- new image effect out of sync
|
||||||
|
- new video effect out of sync (replace out of sync by video)
|
||||||
|
- new image effect complex invert
|
||||||
|
- new video effect complex threshold
|
||||||
|
- new image effect complex saturation
|
||||||
|
- changes to diff.c (incomplete)
|
||||||
|
|
||||||
|
memory leaks:
|
||||||
|
- fixed vj-comm.c (gveejay/veejay talkback)
|
||||||
|
- fixed vj-callbacks.c (veejay talkback)
|
||||||
|
- fixed liblavplayvj.c
|
||||||
|
- fixed vj-perform.c
|
||||||
|
- fixed vj-server.c
|
||||||
|
|
||||||
|
0.4.3
|
||||||
|
- new effect 'Greyscale by Color Key'
|
||||||
|
- new effect 'Blend by Color Key'
|
||||||
|
- changes to Soft Blur/Sharpen (new mode: 3 set distance)
|
||||||
|
- new effect 'Black/White on Threshold'
|
||||||
|
- fixed bug in 'set defaults' (gveejay)
|
||||||
|
- fixed bug in sample info (duration/frames update)
|
||||||
|
- removed frame trimmer (gveejay)
|
||||||
|
- removed obsolete menu items
|
||||||
|
|
||||||
|
0.4.2
|
||||||
236
veejay-ng/INSTALL
Normal file
236
veejay-ng/INSTALL
Normal file
@@ -0,0 +1,236 @@
|
|||||||
|
Installation Instructions
|
||||||
|
*************************
|
||||||
|
|
||||||
|
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
|
||||||
|
Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is free documentation; the Free Software Foundation gives
|
||||||
|
unlimited permission to copy, distribute and modify it.
|
||||||
|
|
||||||
|
Basic Installation
|
||||||
|
==================
|
||||||
|
|
||||||
|
These are generic installation instructions.
|
||||||
|
|
||||||
|
The `configure' shell script attempts to guess correct values for
|
||||||
|
various system-dependent variables used during compilation. It uses
|
||||||
|
those values to create a `Makefile' in each directory of the package.
|
||||||
|
It may also create one or more `.h' files containing system-dependent
|
||||||
|
definitions. Finally, it creates a shell script `config.status' that
|
||||||
|
you can run in the future to recreate the current configuration, and a
|
||||||
|
file `config.log' containing compiler output (useful mainly for
|
||||||
|
debugging `configure').
|
||||||
|
|
||||||
|
It can also use an optional file (typically called `config.cache'
|
||||||
|
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||||
|
the results of its tests to speed up reconfiguring. (Caching is
|
||||||
|
disabled by default to prevent problems with accidental use of stale
|
||||||
|
cache files.)
|
||||||
|
|
||||||
|
If you need to do unusual things to compile the package, please try
|
||||||
|
to figure out how `configure' could check whether to do them, and mail
|
||||||
|
diffs or instructions to the address given in the `README' so they can
|
||||||
|
be considered for the next release. If you are using the cache, and at
|
||||||
|
some point `config.cache' contains results you don't want to keep, you
|
||||||
|
may remove or edit it.
|
||||||
|
|
||||||
|
The file `configure.ac' (or `configure.in') is used to create
|
||||||
|
`configure' by a program called `autoconf'. You only need
|
||||||
|
`configure.ac' if you want to change it or regenerate `configure' using
|
||||||
|
a newer version of `autoconf'.
|
||||||
|
|
||||||
|
The simplest way to compile this package is:
|
||||||
|
|
||||||
|
1. `cd' to the directory containing the package's source code and type
|
||||||
|
`./configure' to configure the package for your system. If you're
|
||||||
|
using `csh' on an old version of System V, you might need to type
|
||||||
|
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||||
|
`configure' itself.
|
||||||
|
|
||||||
|
Running `configure' takes awhile. While running, it prints some
|
||||||
|
messages telling which features it is checking for.
|
||||||
|
|
||||||
|
2. Type `make' to compile the package.
|
||||||
|
|
||||||
|
3. Optionally, type `make check' to run any self-tests that come with
|
||||||
|
the package.
|
||||||
|
|
||||||
|
4. Type `make install' to install the programs and any data files and
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
5. You can remove the program binaries and object files from the
|
||||||
|
source code directory by typing `make clean'. To also remove the
|
||||||
|
files that `configure' created (so you can compile the package for
|
||||||
|
a different kind of computer), type `make distclean'. There is
|
||||||
|
also a `make maintainer-clean' target, but that is intended mainly
|
||||||
|
for the package's developers. If you use it, you may have to get
|
||||||
|
all sorts of other programs in order to regenerate files that came
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
Compilers and Options
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Some systems require unusual options for compilation or linking that the
|
||||||
|
`configure' script does not know about. Run `./configure --help' for
|
||||||
|
details on some of the pertinent environment variables.
|
||||||
|
|
||||||
|
You can give `configure' initial values for configuration parameters
|
||||||
|
by setting variables in the command line or in the environment. Here
|
||||||
|
is an example:
|
||||||
|
|
||||||
|
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||||
|
|
||||||
|
*Note Defining Variables::, for more details.
|
||||||
|
|
||||||
|
Compiling For Multiple Architectures
|
||||||
|
====================================
|
||||||
|
|
||||||
|
You can compile the package for more than one kind of computer at the
|
||||||
|
same time, by placing the object files for each architecture in their
|
||||||
|
own directory. To do this, you must use a version of `make' that
|
||||||
|
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||||
|
directory where you want the object files and executables to go and run
|
||||||
|
the `configure' script. `configure' automatically checks for the
|
||||||
|
source code in the directory that `configure' is in and in `..'.
|
||||||
|
|
||||||
|
If you have to use a `make' that does not support the `VPATH'
|
||||||
|
variable, you have to compile the package for one architecture at a
|
||||||
|
time in the source code directory. After you have installed the
|
||||||
|
package for one architecture, use `make distclean' before reconfiguring
|
||||||
|
for another architecture.
|
||||||
|
|
||||||
|
Installation Names
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, `make install' will install the package's files in
|
||||||
|
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||||
|
installation prefix other than `/usr/local' by giving `configure' the
|
||||||
|
option `--prefix=PREFIX'.
|
||||||
|
|
||||||
|
You can specify separate installation prefixes for
|
||||||
|
architecture-specific files and architecture-independent files. If you
|
||||||
|
give `configure' the option `--exec-prefix=PREFIX', the package will
|
||||||
|
use PREFIX as the prefix for installing programs and libraries.
|
||||||
|
Documentation and other data files will still use the regular prefix.
|
||||||
|
|
||||||
|
In addition, if you use an unusual directory layout you can give
|
||||||
|
options like `--bindir=DIR' to specify different values for particular
|
||||||
|
kinds of files. Run `configure --help' for a list of the directories
|
||||||
|
you can set and what kinds of files go in them.
|
||||||
|
|
||||||
|
If the package supports it, you can cause programs to be installed
|
||||||
|
with an extra prefix or suffix on their names by giving `configure' the
|
||||||
|
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||||
|
|
||||||
|
Optional Features
|
||||||
|
=================
|
||||||
|
|
||||||
|
Some packages pay attention to `--enable-FEATURE' options to
|
||||||
|
`configure', where FEATURE indicates an optional part of the package.
|
||||||
|
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||||
|
is something like `gnu-as' or `x' (for the X Window System). The
|
||||||
|
`README' should mention any `--enable-' and `--with-' options that the
|
||||||
|
package recognizes.
|
||||||
|
|
||||||
|
For packages that use the X Window System, `configure' can usually
|
||||||
|
find the X include and library files automatically, but if it doesn't,
|
||||||
|
you can use the `configure' options `--x-includes=DIR' and
|
||||||
|
`--x-libraries=DIR' to specify their locations.
|
||||||
|
|
||||||
|
Specifying the System Type
|
||||||
|
==========================
|
||||||
|
|
||||||
|
There may be some features `configure' cannot figure out automatically,
|
||||||
|
but needs to determine by the type of machine the package will run on.
|
||||||
|
Usually, assuming the package is built to be run on the _same_
|
||||||
|
architectures, `configure' can figure that out, but if it prints a
|
||||||
|
message saying it cannot guess the machine type, give it the
|
||||||
|
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||||
|
type, such as `sun4', or a canonical name which has the form:
|
||||||
|
|
||||||
|
CPU-COMPANY-SYSTEM
|
||||||
|
|
||||||
|
where SYSTEM can have one of these forms:
|
||||||
|
|
||||||
|
OS KERNEL-OS
|
||||||
|
|
||||||
|
See the file `config.sub' for the possible values of each field. If
|
||||||
|
`config.sub' isn't included in this package, then this package doesn't
|
||||||
|
need to know the machine type.
|
||||||
|
|
||||||
|
If you are _building_ compiler tools for cross-compiling, you should
|
||||||
|
use the `--target=TYPE' option to select the type of system they will
|
||||||
|
produce code for.
|
||||||
|
|
||||||
|
If you want to _use_ a cross compiler, that generates code for a
|
||||||
|
platform different from the build platform, you should specify the
|
||||||
|
"host" platform (i.e., that on which the generated programs will
|
||||||
|
eventually be run) with `--host=TYPE'.
|
||||||
|
|
||||||
|
Sharing Defaults
|
||||||
|
================
|
||||||
|
|
||||||
|
If you want to set default values for `configure' scripts to share, you
|
||||||
|
can create a site shell script called `config.site' that gives default
|
||||||
|
values for variables like `CC', `cache_file', and `prefix'.
|
||||||
|
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||||
|
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||||
|
`CONFIG_SITE' environment variable to the location of the site script.
|
||||||
|
A warning: not all `configure' scripts look for a site script.
|
||||||
|
|
||||||
|
Defining Variables
|
||||||
|
==================
|
||||||
|
|
||||||
|
Variables not defined in a site shell script can be set in the
|
||||||
|
environment passed to `configure'. However, some packages may run
|
||||||
|
configure again during the build, and the customized values of these
|
||||||
|
variables may be lost. In order to avoid this problem, you should set
|
||||||
|
them in the `configure' command line, using `VAR=value'. For example:
|
||||||
|
|
||||||
|
./configure CC=/usr/local2/bin/gcc
|
||||||
|
|
||||||
|
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||||
|
overridden in the site shell script). Here is a another example:
|
||||||
|
|
||||||
|
/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||||
|
|
||||||
|
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
|
||||||
|
configuration-related scripts to be executed by `/bin/bash'.
|
||||||
|
|
||||||
|
`configure' Invocation
|
||||||
|
======================
|
||||||
|
|
||||||
|
`configure' recognizes the following options to control how it operates.
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
`-h'
|
||||||
|
Print a summary of the options to `configure', and exit.
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
`-V'
|
||||||
|
Print the version of Autoconf used to generate the `configure'
|
||||||
|
script, and exit.
|
||||||
|
|
||||||
|
`--cache-file=FILE'
|
||||||
|
Enable the cache: use and save the results of the tests in FILE,
|
||||||
|
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||||
|
disable caching.
|
||||||
|
|
||||||
|
`--config-cache'
|
||||||
|
`-C'
|
||||||
|
Alias for `--cache-file=config.cache'.
|
||||||
|
|
||||||
|
`--quiet'
|
||||||
|
`--silent'
|
||||||
|
`-q'
|
||||||
|
Do not print messages saying which checks are being made. To
|
||||||
|
suppress all normal output, redirect it to `/dev/null' (any error
|
||||||
|
messages will still be shown).
|
||||||
|
|
||||||
|
`--srcdir=DIR'
|
||||||
|
Look for the package's source code in directory DIR. Usually
|
||||||
|
`configure' can determine that directory automatically.
|
||||||
|
|
||||||
|
`configure' also accepts some other, not widely useful, options. Run
|
||||||
|
`configure --help' for more details.
|
||||||
|
|
||||||
91
veejay-ng/Makefile.am
Normal file
91
veejay-ng/Makefile.am
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
# Process with automake to produce Makefile.in
|
||||||
|
|
||||||
|
SUBDIRS = bio2jack libOSC libhash libvjmsg libvjmem
|
||||||
|
SUBDIRS += libvevo libplugger libvjnet libyuv libel vevosample veejay
|
||||||
|
SUBDIRS += man
|
||||||
|
|
||||||
|
#SUBDIRS = ffmpeg bio2jack libOSC libhash libvjmsg libvjmem libpostproc libvje libsample libvjnet libyuv libel libstream liblavjpeg libsamplerec plugins veejay gveejay tools man
|
||||||
|
|
||||||
|
#bin_SCRIPTS = veejay-config
|
||||||
|
|
||||||
|
#
|
||||||
|
# Add any non autoconf'd files here, extra readmes and other misc
|
||||||
|
# info to be copied into the dist
|
||||||
|
#
|
||||||
|
EXTRA_DIST = \
|
||||||
|
autogen.sh\
|
||||||
|
depcomp \
|
||||||
|
cpuinfo.sh \
|
||||||
|
autogen.sh
|
||||||
|
|
||||||
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
pkgconfig_DATA = veejay.pc
|
||||||
|
|
||||||
|
DISTCLEANFILES = \
|
||||||
|
veejay-config.h \
|
||||||
|
veejay.pc \
|
||||||
|
confdefs.h \
|
||||||
|
config.cache \
|
||||||
|
config.status \
|
||||||
|
config.log
|
||||||
|
|
||||||
|
|
||||||
|
MAINTAINERCLEANFILES = \
|
||||||
|
compile \
|
||||||
|
depcomp \
|
||||||
|
install-sh \
|
||||||
|
missing \
|
||||||
|
mkinstalldirs \
|
||||||
|
Makefile.in \
|
||||||
|
aclocal.m4 \
|
||||||
|
config.guess \
|
||||||
|
config.h.in \
|
||||||
|
config.sub \
|
||||||
|
configure \
|
||||||
|
ltmain.sh \
|
||||||
|
stamp-h.in
|
||||||
|
|
||||||
|
## .glade files must be in same directory as pixmaps ?!!
|
||||||
|
#install-data-local:
|
||||||
|
# @$(NORMAL_INSTALL)
|
||||||
|
# if test -d $(srcdir)/share; then \
|
||||||
|
# $(mkinstalldirs) $(DESTDIR)$(pkgdatadir); \
|
||||||
|
# for dialog in $(srcdir)/share/*; do \
|
||||||
|
# if test -f $$dialog; then \
|
||||||
|
# $(INSTALL_DATA) $$dialog $(DESTDIR)$(pkgdatadir); \
|
||||||
|
# fi \
|
||||||
|
# done \
|
||||||
|
# fi
|
||||||
|
|
||||||
|
#gveejay-path.h: gveejay-paths.sh
|
||||||
|
# @sh $< > $@.tmp ;
|
||||||
|
# if cmp -s $@.tmp $@; then
|
||||||
|
# rm $@.tmp;
|
||||||
|
# else
|
||||||
|
# mv $@.tmp $@ ; echo updated gveejay-paths.h;
|
||||||
|
# fi
|
||||||
|
|
||||||
|
#dist-hook:
|
||||||
|
# rm -f %(distdir)/gveejay-paths.sh \
|
||||||
|
# if test -d share; then \
|
||||||
|
# mkdir $(distdir)/dialogs; \
|
||||||
|
# for dialog in share/*; do \
|
||||||
|
# if test -f $$dialog; then \
|
||||||
|
# cp -p $$dialog $(distdir)/dialogs; \
|
||||||
|
# fi \
|
||||||
|
# done \
|
||||||
|
# fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## make rpms
|
||||||
|
rpm: Makefile
|
||||||
|
$(MAKE) dist
|
||||||
|
rpmbuild -ta --clean $(PACKAGE)-$(VERSION).tar.gz
|
||||||
|
|
||||||
|
## make debs
|
||||||
|
deb: Makefile dist
|
||||||
|
-chmod -R +w $(PACKAGE)-$(VERSION)
|
||||||
|
rm -rf $(PACKAGE)-$(VERSION)
|
||||||
|
tar xzf $(PACKAGE)-$(VERSION).tar.gz
|
||||||
|
cd $(PACKAGE)-$(VERSION); dpkg-buildpackage -rfakeroot
|
||||||
810
veejay-ng/Makefile.in
Normal file
810
veejay-ng/Makefile.in
Normal file
@@ -0,0 +1,810 @@
|
|||||||
|
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
# Process with automake to produce Makefile.in
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = .
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
target_triplet = @target@
|
||||||
|
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||||
|
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||||
|
$(srcdir)/veejay-config.in $(srcdir)/veejay.pc.in \
|
||||||
|
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
|
||||||
|
compile config.guess config.rpath config.sub depcomp \
|
||||||
|
install-sh ltmain.sh missing
|
||||||
|
subdir = .
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||||
|
configure.lineno configure.status.lineno
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_HEADER = config.h
|
||||||
|
CONFIG_CLEAN_FILES = veejay-config veejay.pc
|
||||||
|
SOURCES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||||
|
html-recursive info-recursive install-data-recursive \
|
||||||
|
install-exec-recursive install-info-recursive \
|
||||||
|
install-recursive installcheck-recursive installdirs-recursive \
|
||||||
|
pdf-recursive ps-recursive uninstall-info-recursive \
|
||||||
|
uninstall-recursive
|
||||||
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
|
am__vpath_adj = case $$p in \
|
||||||
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
*) f=$$p;; \
|
||||||
|
esac;
|
||||||
|
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
|
||||||
|
pkgconfigDATA_INSTALL = $(INSTALL_DATA)
|
||||||
|
DATA = $(pkgconfig_DATA)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
distdir = $(PACKAGE)-$(VERSION)
|
||||||
|
top_distdir = $(distdir)
|
||||||
|
am__remove_distdir = \
|
||||||
|
{ test ! -d $(distdir) \
|
||||||
|
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||||
|
&& rm -fr $(distdir); }; }
|
||||||
|
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
|
||||||
|
GZIP_ENV = --best
|
||||||
|
distuninstallcheck_listfiles = find . -type f -print
|
||||||
|
distcleancheck_listfiles = find . -type f -print
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
ALTIVEC_CFLAGS = @ALTIVEC_CFLAGS@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AS = @AS@
|
||||||
|
ASFLAGS = @ASFLAGS@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCAS = @CCAS@
|
||||||
|
CCASFLAGS = @CCASFLAGS@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
FFLAGS = @FFLAGS@
|
||||||
|
FFMPEG_AVCODEC_CFLAGS = @FFMPEG_AVCODEC_CFLAGS@
|
||||||
|
FFMPEG_AVCODEC_LIBS = @FFMPEG_AVCODEC_LIBS@
|
||||||
|
FFMPEG_AVFORMAT_CFLAGS = @FFMPEG_AVFORMAT_CFLAGS@
|
||||||
|
FFMPEG_AVFORMAT_LIBS = @FFMPEG_AVFORMAT_LIBS@
|
||||||
|
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||||
|
GLIB_CONFIG = @GLIB_CONFIG@
|
||||||
|
GLIB_LIBS = @GLIB_LIBS@
|
||||||
|
GL_CFLAGS = @GL_CFLAGS@
|
||||||
|
GL_LIBS = @GL_LIBS@
|
||||||
|
HAVE_ALTIVEC_FALSE = @HAVE_ALTIVEC_FALSE@
|
||||||
|
HAVE_ALTIVEC_TRUE = @HAVE_ALTIVEC_TRUE@
|
||||||
|
HAVE_ASM_MMX2_FALSE = @HAVE_ASM_MMX2_FALSE@
|
||||||
|
HAVE_ASM_MMX2_TRUE = @HAVE_ASM_MMX2_TRUE@
|
||||||
|
HAVE_ASM_MMX_FALSE = @HAVE_ASM_MMX_FALSE@
|
||||||
|
HAVE_ASM_MMX_TRUE = @HAVE_ASM_MMX_TRUE@
|
||||||
|
HAVE_ASM_NASM_FALSE = @HAVE_ASM_NASM_FALSE@
|
||||||
|
HAVE_ASM_NASM_TRUE = @HAVE_ASM_NASM_TRUE@
|
||||||
|
HAVE_ASM_SSE2_FALSE = @HAVE_ASM_SSE2_FALSE@
|
||||||
|
HAVE_ASM_SSE2_TRUE = @HAVE_ASM_SSE2_TRUE@
|
||||||
|
HAVE_ASM_SSE_FALSE = @HAVE_ASM_SSE_FALSE@
|
||||||
|
HAVE_ASM_SSE_TRUE = @HAVE_ASM_SSE_TRUE@
|
||||||
|
HAVE_DL_DLOPEN_FALSE = @HAVE_DL_DLOPEN_FALSE@
|
||||||
|
HAVE_DL_DLOPEN_TRUE = @HAVE_DL_DLOPEN_TRUE@
|
||||||
|
HAVE_JACK_FALSE = @HAVE_JACK_FALSE@
|
||||||
|
HAVE_JACK_TRUE = @HAVE_JACK_TRUE@
|
||||||
|
HAVE_MMX2_FALSE = @HAVE_MMX2_FALSE@
|
||||||
|
HAVE_MMX2_TRUE = @HAVE_MMX2_TRUE@
|
||||||
|
HAVE_MMX_FALSE = @HAVE_MMX_FALSE@
|
||||||
|
HAVE_MMX_TRUE = @HAVE_MMX_TRUE@
|
||||||
|
HAVE_PPCCPU_FALSE = @HAVE_PPCCPU_FALSE@
|
||||||
|
HAVE_PPCCPU_TRUE = @HAVE_PPCCPU_TRUE@
|
||||||
|
HAVE_SDL_FALSE = @HAVE_SDL_FALSE@
|
||||||
|
HAVE_SDL_TRUE = @HAVE_SDL_TRUE@
|
||||||
|
HAVE_SSE2_FALSE = @HAVE_SSE2_FALSE@
|
||||||
|
HAVE_SSE2_TRUE = @HAVE_SSE2_TRUE@
|
||||||
|
HAVE_SSE_FALSE = @HAVE_SSE_FALSE@
|
||||||
|
HAVE_SSE_TRUE = @HAVE_SSE_TRUE@
|
||||||
|
HAVE_V4L_FALSE = @HAVE_V4L_FALSE@
|
||||||
|
HAVE_V4L_TRUE = @HAVE_V4L_TRUE@
|
||||||
|
HAVE_X86CPU_FALSE = @HAVE_X86CPU_FALSE@
|
||||||
|
HAVE_X86CPU_TRUE = @HAVE_X86CPU_TRUE@
|
||||||
|
HAVE_XML2_FALSE = @HAVE_XML2_FALSE@
|
||||||
|
HAVE_XML2_TRUE = @HAVE_XML2_TRUE@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBDV_CFLAGS = @LIBDV_CFLAGS@
|
||||||
|
LIBDV_LIBS = @LIBDV_LIBS@
|
||||||
|
LIBGETOPT_LIB = @LIBGETOPT_LIB@
|
||||||
|
LIBM_LIBS = @LIBM_LIBS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
LT_AGE = @LT_AGE@
|
||||||
|
LT_CURRENT = @LT_CURRENT@
|
||||||
|
LT_RELEASE = @LT_RELEASE@
|
||||||
|
LT_REVISION = @LT_REVISION@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MJPEGTOOLS_CFLAGS = @MJPEGTOOLS_CFLAGS@
|
||||||
|
MJPEGTOOLS_LIBS = @MJPEGTOOLS_LIBS@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PROGRAM_NOPIC = @PROGRAM_NOPIC@
|
||||||
|
PTHREAD_LIBS = @PTHREAD_LIBS@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SDL_CFLAGS = @SDL_CFLAGS@
|
||||||
|
SDL_CONFIG = @SDL_CONFIG@
|
||||||
|
SDL_LIBS = @SDL_LIBS@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
SUPPORT_READ_DV2_FALSE = @SUPPORT_READ_DV2_FALSE@
|
||||||
|
SUPPORT_READ_DV2_TRUE = @SUPPORT_READ_DV2_TRUE@
|
||||||
|
V4LCONF_LIBS = @V4LCONF_LIBS@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
XML2_CONFIG = @XML2_CONFIG@
|
||||||
|
XML_CPPFLAGS = @XML_CPPFLAGS@
|
||||||
|
XML_LIBS = @XML_LIBS@
|
||||||
|
ac_ct_AR = @ac_ct_AR@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||||
|
ac_ct_STRIP = @ac_ct_STRIP@
|
||||||
|
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target = @target@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
target_cpu = @target_cpu@
|
||||||
|
target_os = @target_os@
|
||||||
|
target_vendor = @target_vendor@
|
||||||
|
SUBDIRS = bio2jack libOSC libhash libvjmsg libvjmem libvevo libplugger \
|
||||||
|
libvjnet libyuv libel vevosample veejay man
|
||||||
|
|
||||||
|
#SUBDIRS = ffmpeg bio2jack libOSC libhash libvjmsg libvjmem libpostproc libvje libsample libvjnet libyuv libel libstream liblavjpeg libsamplerec plugins veejay gveejay tools man
|
||||||
|
|
||||||
|
#bin_SCRIPTS = veejay-config
|
||||||
|
|
||||||
|
#
|
||||||
|
# Add any non autoconf'd files here, extra readmes and other misc
|
||||||
|
# info to be copied into the dist
|
||||||
|
#
|
||||||
|
EXTRA_DIST = \
|
||||||
|
autogen.sh\
|
||||||
|
depcomp \
|
||||||
|
cpuinfo.sh \
|
||||||
|
autogen.sh
|
||||||
|
|
||||||
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
pkgconfig_DATA = veejay.pc
|
||||||
|
DISTCLEANFILES = \
|
||||||
|
veejay-config.h \
|
||||||
|
veejay.pc \
|
||||||
|
confdefs.h \
|
||||||
|
config.cache \
|
||||||
|
config.status \
|
||||||
|
config.log
|
||||||
|
|
||||||
|
MAINTAINERCLEANFILES = \
|
||||||
|
compile \
|
||||||
|
depcomp \
|
||||||
|
install-sh \
|
||||||
|
missing \
|
||||||
|
mkinstalldirs \
|
||||||
|
Makefile.in \
|
||||||
|
aclocal.m4 \
|
||||||
|
config.guess \
|
||||||
|
config.h.in \
|
||||||
|
config.sub \
|
||||||
|
configure \
|
||||||
|
ltmain.sh \
|
||||||
|
stamp-h.in
|
||||||
|
|
||||||
|
all: config.h
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
am--refresh:
|
||||||
|
@:
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
|
||||||
|
cd $(srcdir) && $(AUTOMAKE) --gnu \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
echo ' $(SHELL) ./config.status'; \
|
||||||
|
$(SHELL) ./config.status;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
$(SHELL) ./config.status --recheck
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(srcdir) && $(AUTOCONF)
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||||
|
|
||||||
|
config.h: stamp-h1
|
||||||
|
@if test ! -f $@; then \
|
||||||
|
rm -f stamp-h1; \
|
||||||
|
$(MAKE) stamp-h1; \
|
||||||
|
else :; fi
|
||||||
|
|
||||||
|
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||||
|
@rm -f stamp-h1
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||||
|
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_srcdir) && $(AUTOHEADER)
|
||||||
|
rm -f stamp-h1
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
distclean-hdr:
|
||||||
|
-rm -f config.h stamp-h1
|
||||||
|
veejay-config: $(top_builddir)/config.status $(srcdir)/veejay-config.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
veejay.pc: $(top_builddir)/config.status $(srcdir)/veejay.pc.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
|
uninstall-info-am:
|
||||||
|
install-pkgconfigDATA: $(pkgconfig_DATA)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(pkgconfigdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfigdir)"
|
||||||
|
@list='$(pkgconfig_DATA)'; for p in $$list; do \
|
||||||
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
f=$(am__strip_dir) \
|
||||||
|
echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
|
||||||
|
$(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-pkgconfigDATA:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(pkgconfig_DATA)'; for p in $$list; do \
|
||||||
|
f=$(am__strip_dir) \
|
||||||
|
echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
|
||||||
|
rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
|
||||||
|
done
|
||||||
|
|
||||||
|
# This directory's subdirectories are mostly independent; you can cd
|
||||||
|
# into them and run `make' without going through this Makefile.
|
||||||
|
# To change the values of `make' variables: instead of editing Makefiles,
|
||||||
|
# (1) if the variable is set in `config.status', edit `config.status'
|
||||||
|
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||||
|
# (2) otherwise, pass the desired values on the `make' command line.
|
||||||
|
$(RECURSIVE_TARGETS):
|
||||||
|
@failcom='exit 1'; \
|
||||||
|
for f in x $$MAKEFLAGS; do \
|
||||||
|
case $$f in \
|
||||||
|
*=* | --[!k]*);; \
|
||||||
|
*k*) failcom='fail=yes';; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
dot_seen=no; \
|
||||||
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
dot_seen=yes; \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| eval $$failcom; \
|
||||||
|
done; \
|
||||||
|
if test "$$dot_seen" = "no"; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||||
|
fi; test -z "$$fail"
|
||||||
|
|
||||||
|
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||||
|
maintainer-clean-recursive:
|
||||||
|
@failcom='exit 1'; \
|
||||||
|
for f in x $$MAKEFLAGS; do \
|
||||||
|
case $$f in \
|
||||||
|
*=* | --[!k]*);; \
|
||||||
|
*k*) failcom='fail=yes';; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
dot_seen=no; \
|
||||||
|
case "$@" in \
|
||||||
|
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||||
|
*) list='$(SUBDIRS)' ;; \
|
||||||
|
esac; \
|
||||||
|
rev=''; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = "."; then :; else \
|
||||||
|
rev="$$subdir $$rev"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
rev="$$rev ."; \
|
||||||
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
|
for subdir in $$rev; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| eval $$failcom; \
|
||||||
|
done && test -z "$$fail"
|
||||||
|
tags-recursive:
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||||
|
done
|
||||||
|
ctags-recursive:
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||||
|
done
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||||
|
include_option=--etags-include; \
|
||||||
|
empty_fix=.; \
|
||||||
|
else \
|
||||||
|
include_option=--include; \
|
||||||
|
empty_fix=; \
|
||||||
|
fi; \
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
test ! -f $$subdir/TAGS || \
|
||||||
|
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$tags $$unique; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$tags $$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
$(am__remove_distdir)
|
||||||
|
mkdir $(distdir)
|
||||||
|
$(mkdir_p) $(distdir)/.
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
test -d "$(distdir)/$$subdir" \
|
||||||
|
|| $(mkdir_p) "$(distdir)/$$subdir" \
|
||||||
|
|| exit 1; \
|
||||||
|
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||||
|
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||||
|
(cd $$subdir && \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
top_distdir="$$top_distdir" \
|
||||||
|
distdir="$$distdir/$$subdir" \
|
||||||
|
distdir) \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||||
|
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||||
|
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||||
|
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|
||||||
|
|| chmod -R a+r $(distdir)
|
||||||
|
dist-gzip: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
dist-bzip2: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-tarZ: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-shar: distdir
|
||||||
|
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-zip: distdir
|
||||||
|
-rm -f $(distdir).zip
|
||||||
|
zip -rq $(distdir).zip $(distdir)
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist dist-all: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||||
|
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
# This target untars the dist file and tries a VPATH configuration. Then
|
||||||
|
# it guarantees that the distribution is self-contained by making another
|
||||||
|
# tarfile.
|
||||||
|
distcheck: dist
|
||||||
|
case '$(DIST_ARCHIVES)' in \
|
||||||
|
*.tar.gz*) \
|
||||||
|
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
|
||||||
|
*.tar.bz2*) \
|
||||||
|
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||||
|
*.tar.Z*) \
|
||||||
|
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||||
|
*.shar.gz*) \
|
||||||
|
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
|
||||||
|
*.zip*) \
|
||||||
|
unzip $(distdir).zip ;;\
|
||||||
|
esac
|
||||||
|
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||||
|
mkdir $(distdir)/_build
|
||||||
|
mkdir $(distdir)/_inst
|
||||||
|
chmod a-w $(distdir)
|
||||||
|
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||||
|
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||||
|
&& cd $(distdir)/_build \
|
||||||
|
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||||
|
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||||
|
distuninstallcheck \
|
||||||
|
&& chmod -R a-w "$$dc_install_base" \
|
||||||
|
&& ({ \
|
||||||
|
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||||
|
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||||
|
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||||
|
&& rm -rf "$$dc_destdir" \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||||
|
&& rm -rf $(DIST_ARCHIVES) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||||
|
$(am__remove_distdir)
|
||||||
|
@(echo "$(distdir) archives ready for distribution: "; \
|
||||||
|
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||||
|
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
|
||||||
|
distuninstallcheck:
|
||||||
|
@cd $(distuninstallcheck_dir) \
|
||||||
|
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||||
|
|| { echo "ERROR: files left after uninstall:" ; \
|
||||||
|
if test -n "$(DESTDIR)"; then \
|
||||||
|
echo " (check DESTDIR support)"; \
|
||||||
|
fi ; \
|
||||||
|
$(distuninstallcheck_listfiles) ; \
|
||||||
|
exit 1; } >&2
|
||||||
|
distcleancheck: distclean
|
||||||
|
@if test '$(srcdir)' = . ; then \
|
||||||
|
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||||
|
exit 1 ; \
|
||||||
|
fi
|
||||||
|
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||||
|
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||||
|
$(distcleancheck_listfiles) ; \
|
||||||
|
exit 1; } >&2
|
||||||
|
check-am: all-am
|
||||||
|
check: check-recursive
|
||||||
|
all-am: Makefile $(DATA) config.h
|
||||||
|
installdirs: installdirs-recursive
|
||||||
|
installdirs-am:
|
||||||
|
for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
|
||||||
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||||
|
done
|
||||||
|
install: install-recursive
|
||||||
|
install-exec: install-exec-recursive
|
||||||
|
install-data: install-data-recursive
|
||||||
|
uninstall: uninstall-recursive
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-recursive
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||||
|
clean: clean-recursive
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-recursive
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-generic distclean-hdr \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-recursive
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-recursive
|
||||||
|
|
||||||
|
info: info-recursive
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am: install-pkgconfigDATA
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-recursive
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-recursive
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -rf $(top_srcdir)/autom4te.cache
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-recursive
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-recursive
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-recursive
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am uninstall-pkgconfigDATA
|
||||||
|
|
||||||
|
uninstall-info: uninstall-info-recursive
|
||||||
|
|
||||||
|
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
|
||||||
|
check-am clean clean-generic clean-libtool clean-recursive \
|
||||||
|
ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
|
||||||
|
dist-shar dist-tarZ dist-zip distcheck distclean \
|
||||||
|
distclean-generic distclean-hdr distclean-libtool \
|
||||||
|
distclean-recursive distclean-tags distcleancheck distdir \
|
||||||
|
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am install-man \
|
||||||
|
install-pkgconfigDATA install-strip installcheck \
|
||||||
|
installcheck-am installdirs installdirs-am maintainer-clean \
|
||||||
|
maintainer-clean-generic maintainer-clean-recursive \
|
||||||
|
mostlyclean mostlyclean-generic mostlyclean-libtool \
|
||||||
|
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
|
||||||
|
uninstall uninstall-am uninstall-info-am \
|
||||||
|
uninstall-pkgconfigDATA
|
||||||
|
|
||||||
|
|
||||||
|
#install-data-local:
|
||||||
|
# @$(NORMAL_INSTALL)
|
||||||
|
# if test -d $(srcdir)/share; then \
|
||||||
|
# $(mkinstalldirs) $(DESTDIR)$(pkgdatadir); \
|
||||||
|
# for dialog in $(srcdir)/share/*; do \
|
||||||
|
# if test -f $$dialog; then \
|
||||||
|
# $(INSTALL_DATA) $$dialog $(DESTDIR)$(pkgdatadir); \
|
||||||
|
# fi \
|
||||||
|
# done \
|
||||||
|
# fi
|
||||||
|
|
||||||
|
#gveejay-path.h: gveejay-paths.sh
|
||||||
|
# @sh $< > $@.tmp ;
|
||||||
|
# if cmp -s $@.tmp $@; then
|
||||||
|
# rm $@.tmp;
|
||||||
|
# else
|
||||||
|
# mv $@.tmp $@ ; echo updated gveejay-paths.h;
|
||||||
|
# fi
|
||||||
|
|
||||||
|
#dist-hook:
|
||||||
|
# rm -f %(distdir)/gveejay-paths.sh \
|
||||||
|
# if test -d share; then \
|
||||||
|
# mkdir $(distdir)/dialogs; \
|
||||||
|
# for dialog in share/*; do \
|
||||||
|
# if test -f $$dialog; then \
|
||||||
|
# cp -p $$dialog $(distdir)/dialogs; \
|
||||||
|
# fi \
|
||||||
|
# done \
|
||||||
|
# fi
|
||||||
|
|
||||||
|
rpm: Makefile
|
||||||
|
$(MAKE) dist
|
||||||
|
rpmbuild -ta --clean $(PACKAGE)-$(VERSION).tar.gz
|
||||||
|
|
||||||
|
deb: Makefile dist
|
||||||
|
-chmod -R +w $(PACKAGE)-$(VERSION)
|
||||||
|
rm -rf $(PACKAGE)-$(VERSION)
|
||||||
|
tar xzf $(PACKAGE)-$(VERSION).tar.gz
|
||||||
|
cd $(PACKAGE)-$(VERSION); dpkg-buildpackage -rfakeroot
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
0
veejay-ng/NEWS
Normal file
0
veejay-ng/NEWS
Normal file
57
veejay-ng/README
Normal file
57
veejay-ng/README
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
10x0 0x x10x0x10x0x10x 10x0x10x0x10x0 x0x1 x0x1 10x0 x0x1
|
||||||
|
0x10x0 0x0x x10x0x10x0x10x 10x0x10x0x10x0 x0x1 10x0x10x 10x0x1 10x0x1
|
||||||
|
0x0x10 0x0x10 x10x 10x0 x0x1 10x0x10x x0x10x 10x0
|
||||||
|
0x0x10x0 0x0x10 x10x0x10x0x1 10x0x10x0x10 x0x1 0x10 0x0 x10x0x10
|
||||||
|
0x10x0 x10x0x x10x0x10x0x10x 10x0x10x0x10 x0x1 0x10x0x10x0 x10x0x10
|
||||||
|
10x0x1 x0x10x x10x 10x0 x0x1 0x10x0x10x0 0x0x
|
||||||
|
x0x10x0x10x0x1 x10x 10x0 x10x x0x1 0x10x0x10x0x10 0x0x
|
||||||
|
x10x0x10x0 x10x0x10x0x10x 10x0x10x0x10x0 x10x 10x0 0x0x 0x10 0x0x
|
||||||
|
0x0x10 x10x0x10x0x10x 10x0x10x0x10x0 0x010x0 0x0x 0x10 0x0x
|
||||||
|
|
||||||
|
|
||||||
|
:: Veejay, a visual instrument for GNU ::
|
||||||
|
http://veejay.dyne.org
|
||||||
|
|
||||||
|
|
||||||
|
v. 0.99.x
|
||||||
|
|
||||||
|
|
||||||
|
- work in progress. you are on your own. -
|
||||||
|
|
||||||
|
|
||||||
|
Install
|
||||||
|
=======
|
||||||
|
|
||||||
|
See file 'INSTALL'
|
||||||
|
|
||||||
|
|
||||||
|
Running
|
||||||
|
=======
|
||||||
|
|
||||||
|
-
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CONTACT / FEEDBACK & HELP
|
||||||
|
=========================
|
||||||
|
|
||||||
|
Niels Elburg <nelburg@looze.net>
|
||||||
|
|
||||||
|
Please use the mailinglist on
|
||||||
|
http://veejay.sourceforge.net
|
||||||
|
|
||||||
|
BUG REPORTS / BLEEDING EDGE SOURCE CODE
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
Please use the ticket system !
|
||||||
|
|
||||||
|
http://veejay.dyne.org
|
||||||
|
|
||||||
|
|
||||||
|
ENJOY! And let us know about your performances/installations with veejay!
|
||||||
|
|
||||||
|
|
||||||
7533
veejay-ng/aclocal.m4
vendored
Normal file
7533
veejay-ng/aclocal.m4
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3
veejay-ng/autogen.sh
Executable file
3
veejay-ng/autogen.sh
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Run this to generate all the initial makefiles, etc.
|
||||||
|
autoreconf -v -f -i
|
||||||
28899
veejay-ng/autom4te.cache/output.0
Normal file
28899
veejay-ng/autom4te.cache/output.0
Normal file
File diff suppressed because it is too large
Load Diff
28887
veejay-ng/autom4te.cache/output.1
Normal file
28887
veejay-ng/autom4te.cache/output.1
Normal file
File diff suppressed because it is too large
Load Diff
363
veejay-ng/autom4te.cache/requests
Normal file
363
veejay-ng/autom4te.cache/requests
Normal file
@@ -0,0 +1,363 @@
|
|||||||
|
# This file was generated by Autom4te Thu Apr 14 05:08:07 UTC 2005.
|
||||||
|
# It contains the lists of macros which have been traced.
|
||||||
|
# It can be safely removed.
|
||||||
|
|
||||||
|
@request = (
|
||||||
|
bless( [
|
||||||
|
'0',
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf/autoconf/autoconf.m4f',
|
||||||
|
'/usr/share/aclocal/glib.m4',
|
||||||
|
'/usr/share/aclocal/libtool.m4',
|
||||||
|
'/usr/share/aclocal/libxml2.m4',
|
||||||
|
'/usr/share/aclocal/pkg.m4',
|
||||||
|
'/usr/share/aclocal/sdl.m4',
|
||||||
|
'/usr/share/aclocal-1.9/amversion.m4',
|
||||||
|
'/usr/share/aclocal-1.9/as.m4',
|
||||||
|
'/usr/share/aclocal-1.9/auxdir.m4',
|
||||||
|
'/usr/share/aclocal-1.9/ccstdc.m4',
|
||||||
|
'/usr/share/aclocal-1.9/cond.m4',
|
||||||
|
'/usr/share/aclocal-1.9/depend.m4',
|
||||||
|
'/usr/share/aclocal-1.9/depout.m4',
|
||||||
|
'/usr/share/aclocal-1.9/init.m4',
|
||||||
|
'/usr/share/aclocal-1.9/install-sh.m4',
|
||||||
|
'/usr/share/aclocal-1.9/lead-dot.m4',
|
||||||
|
'/usr/share/aclocal-1.9/maintainer.m4',
|
||||||
|
'/usr/share/aclocal-1.9/make.m4',
|
||||||
|
'/usr/share/aclocal-1.9/missing.m4',
|
||||||
|
'/usr/share/aclocal-1.9/mkdirp.m4',
|
||||||
|
'/usr/share/aclocal-1.9/options.m4',
|
||||||
|
'/usr/share/aclocal-1.9/runlog.m4',
|
||||||
|
'/usr/share/aclocal-1.9/sanity.m4',
|
||||||
|
'/usr/share/aclocal-1.9/strip.m4',
|
||||||
|
'/usr/share/aclocal-1.9/tar.m4',
|
||||||
|
'configure.ac'
|
||||||
|
],
|
||||||
|
{
|
||||||
|
'AM_ENABLE_STATIC' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
|
||||||
|
'AC_C_VOLATILE' => 1,
|
||||||
|
'AC_TYPE_OFF_T' => 1,
|
||||||
|
'_LT_AC_SHELL_INIT' => 1,
|
||||||
|
'AC_FUNC_CLOSEDIR_VOID' => 1,
|
||||||
|
'AC_REPLACE_FNMATCH' => 1,
|
||||||
|
'AC_DEFUN' => 1,
|
||||||
|
'AC_PROG_LIBTOOL' => 1,
|
||||||
|
'_LT_AC_LANG_CXX_CONFIG' => 1,
|
||||||
|
'AM_PROG_MKDIR_P' => 1,
|
||||||
|
'AC_FUNC_STAT' => 1,
|
||||||
|
'AC_FUNC_WAIT3' => 1,
|
||||||
|
'AM_AUTOMAKE_VERSION' => 1,
|
||||||
|
'AC_FUNC_LSTAT' => 1,
|
||||||
|
'AC_STRUCT_TM' => 1,
|
||||||
|
'AC_CHECK_HEADERS' => 1,
|
||||||
|
'AC_FUNC_STRTOD' => 1,
|
||||||
|
'AM_MISSING_PROG' => 1,
|
||||||
|
'AC_FUNC_STRNLEN' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
|
||||||
|
'AC_PROG_CXX' => 1,
|
||||||
|
'_LT_AC_LANG_C_CONFIG' => 1,
|
||||||
|
'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
|
||||||
|
'AM_PROG_INSTALL_STRIP' => 1,
|
||||||
|
'AC_PROG_AWK' => 1,
|
||||||
|
'_m4_warn' => 1,
|
||||||
|
'AC_LIBTOOL_OBJDIR' => 1,
|
||||||
|
'AC_HEADER_MAJOR' => 1,
|
||||||
|
'AM_SANITY_CHECK' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
|
||||||
|
'_LT_AC_CHECK_DLFCN' => 1,
|
||||||
|
'AM_PATH_SDL' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
|
||||||
|
'_AM_PROG_TAR' => 1,
|
||||||
|
'AC_LIBTOOL_GCJ' => 1,
|
||||||
|
'AC_PROG_GCC_TRADITIONAL' => 1,
|
||||||
|
'AC_LIBSOURCE' => 1,
|
||||||
|
'AC_STRUCT_ST_BLOCKS' => 1,
|
||||||
|
'_LT_AC_LANG_F77' => 1,
|
||||||
|
'AC_LIBTOOL_CONFIG' => 1,
|
||||||
|
'AC_PROG_MAKE_SET' => 1,
|
||||||
|
'AC_CONFIG_AUX_DIR' => 1,
|
||||||
|
'sinclude' => 1,
|
||||||
|
'AM_DISABLE_SHARED' => 1,
|
||||||
|
'_LT_AC_LANG_CXX' => 1,
|
||||||
|
'AM_PROG_LIBTOOL' => 1,
|
||||||
|
'_LT_AC_FILE_LTDLL_C' => 1,
|
||||||
|
'AM_PROG_LD' => 1,
|
||||||
|
'AC_FUNC_STRERROR_R' => 1,
|
||||||
|
'AC_DECL_SYS_SIGLIST' => 1,
|
||||||
|
'AC_FUNC_FORK' => 1,
|
||||||
|
'AU_DEFUN' => 1,
|
||||||
|
'AC_FUNC_VPRINTF' => 1,
|
||||||
|
'AC_PROG_NM' => 1,
|
||||||
|
'AC_LIBTOOL_DLOPEN' => 1,
|
||||||
|
'AC_PROG_LD' => 1,
|
||||||
|
'AC_PROG_LD_GNU' => 1,
|
||||||
|
'AC_ENABLE_FAST_INSTALL' => 1,
|
||||||
|
'AC_INIT' => 1,
|
||||||
|
'AC_STRUCT_TIMEZONE' => 1,
|
||||||
|
'AC_SUBST' => 1,
|
||||||
|
'AC_FUNC_ALLOCA' => 1,
|
||||||
|
'_AM_SET_OPTION' => 1,
|
||||||
|
'AC_CANONICAL_HOST' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_CC_C_O' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
|
||||||
|
'AC_PROG_RANLIB' => 1,
|
||||||
|
'AC_FUNC_SETPGRP' => 1,
|
||||||
|
'AC_CONFIG_SUBDIRS' => 1,
|
||||||
|
'AC_FUNC_MMAP' => 1,
|
||||||
|
'AC_TYPE_SIZE_T' => 1,
|
||||||
|
'AC_CHECK_TYPES' => 1,
|
||||||
|
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
||||||
|
'AC_CHECK_MEMBERS' => 1,
|
||||||
|
'AC_DEFUN_ONCE' => 1,
|
||||||
|
'AC_FUNC_UTIME_NULL' => 1,
|
||||||
|
'AC_FUNC_SELECT_ARGTYPES' => 1,
|
||||||
|
'_LT_AC_LANG_GCJ' => 1,
|
||||||
|
'fp_PROG_CC_STDC' => 1,
|
||||||
|
'AC_FUNC_STRFTIME' => 1,
|
||||||
|
'AC_HEADER_STAT' => 1,
|
||||||
|
'AC_C_INLINE' => 1,
|
||||||
|
'AC_LIBTOOL_RC' => 1,
|
||||||
|
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
|
||||||
|
'AC_DISABLE_FAST_INSTALL' => 1,
|
||||||
|
'AC_CONFIG_FILES' => 1,
|
||||||
|
'_LT_AC_TRY_DLOPEN_SELF' => 1,
|
||||||
|
'_LT_AC_SYS_LIBPATH_AIX' => 1,
|
||||||
|
'include' => 1,
|
||||||
|
'LT_AC_PROG_SED' => 1,
|
||||||
|
'AM_ENABLE_SHARED' => 1,
|
||||||
|
'AM_GNU_GETTEXT' => 1,
|
||||||
|
'_LT_AC_LANG_GCJ_CONFIG' => 1,
|
||||||
|
'AC_ENABLE_SHARED' => 1,
|
||||||
|
'AC_CHECK_LIB' => 1,
|
||||||
|
'AC_FUNC_OBSTACK' => 1,
|
||||||
|
'AC_FUNC_MALLOC' => 1,
|
||||||
|
'AC_FUNC_GETGROUPS' => 1,
|
||||||
|
'AC_FUNC_GETLOADAVG' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
|
||||||
|
'AC_ENABLE_STATIC' => 1,
|
||||||
|
'AC_FUNC_FSEEKO' => 1,
|
||||||
|
'_LT_AC_TAGVAR' => 1,
|
||||||
|
'AM_PROG_CC_C_O' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
|
||||||
|
'AM_CONDITIONAL' => 1,
|
||||||
|
'AC_FUNC_MKTIME' => 1,
|
||||||
|
'AC_HEADER_SYS_WAIT' => 1,
|
||||||
|
'AC_FUNC_MEMCMP' => 1,
|
||||||
|
'AC_PROG_LN_S' => 1,
|
||||||
|
'AM_PROG_INSTALL_SH' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'AC_PROG_EGREP' => 1,
|
||||||
|
'AC_HEADER_DIRENT' => 1,
|
||||||
|
'AC_PATH_MAGIC' => 1,
|
||||||
|
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
|
||||||
|
'AM_MAKE_INCLUDE' => 1,
|
||||||
|
'_LT_AC_TAGCONFIG' => 1,
|
||||||
|
'm4_pattern_forbid' => 1,
|
||||||
|
'AC_CONFIG_LIBOBJ_DIR' => 1,
|
||||||
|
'AC_LIBTOOL_COMPILER_OPTION' => 1,
|
||||||
|
'AC_DISABLE_SHARED' => 1,
|
||||||
|
'AC_LIBTOOL_SETUP' => 1,
|
||||||
|
'AC_LIBTOOL_WIN32_DLL' => 1,
|
||||||
|
'AC_PROG_LD_RELOAD_FLAG' => 1,
|
||||||
|
'AM_PATH_XML2' => 1,
|
||||||
|
'AC_HEADER_TIME' => 1,
|
||||||
|
'AM_MISSING_HAS_RUN' => 1,
|
||||||
|
'AC_FUNC_GETMNTENT' => 1,
|
||||||
|
'AC_TYPE_MODE_T' => 1,
|
||||||
|
'AC_LIBTOOL_DLOPEN_SELF' => 1,
|
||||||
|
'm4_sinclude' => 1,
|
||||||
|
'AC_PATH_X' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
|
||||||
|
'AC_HEADER_STDC' => 1,
|
||||||
|
'AC_LIBTOOL_LINKER_OPTION' => 1,
|
||||||
|
'PKG_CHECK_EXISTS' => 1,
|
||||||
|
'AM_PATH_GLIB' => 1,
|
||||||
|
'AC_LIBTOOL_CXX' => 1,
|
||||||
|
'LT_AC_PROG_RC' => 1,
|
||||||
|
'LT_AC_PROG_GCJ' => 1,
|
||||||
|
'AC_FUNC_ERROR_AT_LINE' => 1,
|
||||||
|
'AM_DISABLE_STATIC' => 1,
|
||||||
|
'AM_DEP_TRACK' => 1,
|
||||||
|
'_AC_PROG_LIBTOOL' => 1,
|
||||||
|
'AC_FUNC_MBRTOWC' => 1,
|
||||||
|
'AM_PROG_CC_STDC' => 1,
|
||||||
|
'AC_TYPE_SIGNAL' => 1,
|
||||||
|
'_AM_IF_OPTION' => 1,
|
||||||
|
'AC_TYPE_UID_T' => 1,
|
||||||
|
'AC_PATH_TOOL_PREFIX' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'AC_LIBTOOL_F77' => 1,
|
||||||
|
'AM_SET_LEADING_DOT' => 1,
|
||||||
|
'AC_DEFINE_TRACE_LITERAL' => 1,
|
||||||
|
'_AM_DEPENDENCIES' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
|
||||||
|
'_LT_AC_SYS_COMPILER' => 1,
|
||||||
|
'AC_PROG_CC' => 1,
|
||||||
|
'AM_PROG_NM' => 1,
|
||||||
|
'PKG_CHECK_MODULES' => 1,
|
||||||
|
'AC_FUNC_STRCOLL' => 1,
|
||||||
|
'AC_PROG_YACC' => 1,
|
||||||
|
'AC_LIBLTDL_CONVENIENCE' => 1,
|
||||||
|
'AC_DEPLIBS_CHECK_METHOD' => 1,
|
||||||
|
'AC_LIBLTDL_INSTALLABLE' => 1,
|
||||||
|
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
|
||||||
|
'jm_MAINTAINER_MODE' => 1,
|
||||||
|
'AC_FUNC_CHOWN' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
|
||||||
|
'AC_FUNC_GETPGRP' => 1,
|
||||||
|
'AM_INIT_AUTOMAKE' => 1,
|
||||||
|
'AC_FUNC_REALLOC' => 1,
|
||||||
|
'AC_DISABLE_STATIC' => 1,
|
||||||
|
'AC_CONFIG_LINKS' => 1,
|
||||||
|
'AM_MAINTAINER_MODE' => 1,
|
||||||
|
'_LT_AC_LOCK' => 1,
|
||||||
|
'_LT_AC_LANG_RC_CONFIG' => 1,
|
||||||
|
'AC_PROG_CPP' => 1,
|
||||||
|
'AC_C_CONST' => 1,
|
||||||
|
'AC_PROG_LEX' => 1,
|
||||||
|
'AC_TYPE_PID_T' => 1,
|
||||||
|
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
|
||||||
|
'AC_FUNC_SETVBUF_REVERSED' => 1,
|
||||||
|
'AM_PROG_AS' => 1,
|
||||||
|
'AM_AUX_DIR_EXPAND' => 1,
|
||||||
|
'AC_PROG_INSTALL' => 1,
|
||||||
|
'_LT_AC_LANG_F77_CONFIG' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
|
||||||
|
'_AM_SET_OPTIONS' => 1,
|
||||||
|
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
||||||
|
'AM_RUN_LOG' => 1,
|
||||||
|
'AC_LIBTOOL_PICMODE' => 1,
|
||||||
|
'AH_OUTPUT' => 1,
|
||||||
|
'AC_CHECK_LIBM' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
|
||||||
|
'_AM_MANGLE_OPTION' => 1,
|
||||||
|
'AC_CANONICAL_SYSTEM' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
|
||||||
|
'AC_CONFIG_HEADERS' => 1,
|
||||||
|
'AM_SET_DEPDIR' => 1,
|
||||||
|
'PKG_PROG_PKG_CONFIG' => 1,
|
||||||
|
'AC_CHECK_FUNCS' => 1
|
||||||
|
}
|
||||||
|
], 'Autom4te::Request' ),
|
||||||
|
bless( [
|
||||||
|
'1',
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf/autoconf/autoconf.m4f',
|
||||||
|
'aclocal.m4',
|
||||||
|
'configure.ac'
|
||||||
|
],
|
||||||
|
{
|
||||||
|
'_LT_AC_TAGCONFIG' => 1,
|
||||||
|
'm4_pattern_forbid' => 1,
|
||||||
|
'AC_CANONICAL_TARGET' => 1,
|
||||||
|
'AC_CONFIG_LIBOBJ_DIR' => 1,
|
||||||
|
'AC_TYPE_OFF_T' => 1,
|
||||||
|
'AC_C_VOLATILE' => 1,
|
||||||
|
'AC_FUNC_CLOSEDIR_VOID' => 1,
|
||||||
|
'AC_REPLACE_FNMATCH' => 1,
|
||||||
|
'AC_PROG_LIBTOOL' => 1,
|
||||||
|
'AC_FUNC_STAT' => 1,
|
||||||
|
'AC_HEADER_TIME' => 1,
|
||||||
|
'AC_FUNC_WAIT3' => 1,
|
||||||
|
'AM_AUTOMAKE_VERSION' => 1,
|
||||||
|
'AC_STRUCT_TM' => 1,
|
||||||
|
'AC_FUNC_LSTAT' => 1,
|
||||||
|
'AC_TYPE_MODE_T' => 1,
|
||||||
|
'AC_FUNC_GETMNTENT' => 1,
|
||||||
|
'AC_FUNC_STRTOD' => 1,
|
||||||
|
'AC_CHECK_HEADERS' => 1,
|
||||||
|
'AC_FUNC_STRNLEN' => 1,
|
||||||
|
'm4_sinclude' => 1,
|
||||||
|
'AC_PROG_CXX' => 1,
|
||||||
|
'AC_PATH_X' => 1,
|
||||||
|
'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
|
||||||
|
'AC_PROG_AWK' => 1,
|
||||||
|
'_m4_warn' => 1,
|
||||||
|
'AC_HEADER_STDC' => 1,
|
||||||
|
'AC_HEADER_MAJOR' => 1,
|
||||||
|
'AC_FUNC_ERROR_AT_LINE' => 1,
|
||||||
|
'AC_PROG_GCC_TRADITIONAL' => 1,
|
||||||
|
'AC_LIBSOURCE' => 1,
|
||||||
|
'AC_FUNC_MBRTOWC' => 1,
|
||||||
|
'AC_STRUCT_ST_BLOCKS' => 1,
|
||||||
|
'AC_CANONICAL_BUILD' => 1,
|
||||||
|
'AC_TYPE_SIGNAL' => 1,
|
||||||
|
'AC_TYPE_UID_T' => 1,
|
||||||
|
'AC_PROG_MAKE_SET' => 1,
|
||||||
|
'AC_CONFIG_AUX_DIR' => 1,
|
||||||
|
'sinclude' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'AC_DEFINE_TRACE_LITERAL' => 1,
|
||||||
|
'AC_FUNC_STRERROR_R' => 1,
|
||||||
|
'AC_PROG_CC' => 1,
|
||||||
|
'AC_DECL_SYS_SIGLIST' => 1,
|
||||||
|
'AC_FUNC_FORK' => 1,
|
||||||
|
'AC_FUNC_VPRINTF' => 1,
|
||||||
|
'AC_FUNC_STRCOLL' => 1,
|
||||||
|
'AC_PROG_YACC' => 1,
|
||||||
|
'AC_STRUCT_TIMEZONE' => 1,
|
||||||
|
'AC_INIT' => 1,
|
||||||
|
'AC_FUNC_CHOWN' => 1,
|
||||||
|
'AC_SUBST' => 1,
|
||||||
|
'AC_FUNC_ALLOCA' => 1,
|
||||||
|
'AC_CANONICAL_HOST' => 1,
|
||||||
|
'AC_FUNC_GETPGRP' => 1,
|
||||||
|
'AC_PROG_RANLIB' => 1,
|
||||||
|
'AM_INIT_AUTOMAKE' => 1,
|
||||||
|
'AC_FUNC_SETPGRP' => 1,
|
||||||
|
'AC_CONFIG_SUBDIRS' => 1,
|
||||||
|
'AC_FUNC_MMAP' => 1,
|
||||||
|
'AC_FUNC_REALLOC' => 1,
|
||||||
|
'AC_TYPE_SIZE_T' => 1,
|
||||||
|
'AC_CONFIG_LINKS' => 1,
|
||||||
|
'AC_CHECK_TYPES' => 1,
|
||||||
|
'LT_SUPPORTED_TAG' => 1,
|
||||||
|
'AC_CHECK_MEMBERS' => 1,
|
||||||
|
'AM_MAINTAINER_MODE' => 1,
|
||||||
|
'AC_FUNC_UTIME_NULL' => 1,
|
||||||
|
'AC_FUNC_SELECT_ARGTYPES' => 1,
|
||||||
|
'AC_FUNC_STRFTIME' => 1,
|
||||||
|
'AC_HEADER_STAT' => 1,
|
||||||
|
'AC_C_INLINE' => 1,
|
||||||
|
'AC_PROG_CPP' => 1,
|
||||||
|
'AM_ENABLE_MULTILIB' => 1,
|
||||||
|
'AC_TYPE_PID_T' => 1,
|
||||||
|
'AC_C_CONST' => 1,
|
||||||
|
'AC_PROG_LEX' => 1,
|
||||||
|
'AC_CONFIG_FILES' => 1,
|
||||||
|
'include' => 1,
|
||||||
|
'AC_FUNC_SETVBUF_REVERSED' => 1,
|
||||||
|
'AC_PROG_INSTALL' => 1,
|
||||||
|
'AM_GNU_GETTEXT' => 1,
|
||||||
|
'AC_CHECK_LIB' => 1,
|
||||||
|
'AC_FUNC_OBSTACK' => 1,
|
||||||
|
'AC_FUNC_MALLOC' => 1,
|
||||||
|
'AC_FUNC_GETGROUPS' => 1,
|
||||||
|
'AC_FUNC_GETLOADAVG' => 1,
|
||||||
|
'AH_OUTPUT' => 1,
|
||||||
|
'AC_FUNC_FSEEKO' => 1,
|
||||||
|
'AM_PROG_CC_C_O' => 1,
|
||||||
|
'AM_CONDITIONAL' => 1,
|
||||||
|
'AC_CANONICAL_SYSTEM' => 1,
|
||||||
|
'AC_FUNC_MKTIME' => 1,
|
||||||
|
'AC_CONFIG_HEADERS' => 1,
|
||||||
|
'AC_HEADER_SYS_WAIT' => 1,
|
||||||
|
'AC_PROG_LN_S' => 1,
|
||||||
|
'AC_FUNC_MEMCMP' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'AC_HEADER_DIRENT' => 1,
|
||||||
|
'AC_CHECK_FUNCS' => 1
|
||||||
|
}
|
||||||
|
], 'Autom4te::Request' )
|
||||||
|
);
|
||||||
|
|
||||||
9839
veejay-ng/autom4te.cache/traces.0
Normal file
9839
veejay-ng/autom4te.cache/traces.0
Normal file
File diff suppressed because it is too large
Load Diff
964
veejay-ng/autom4te.cache/traces.1
Normal file
964
veejay-ng/autom4te.cache/traces.1
Normal file
@@ -0,0 +1,964 @@
|
|||||||
|
m4trace:configure.ac:3: -1- AC_INIT([veejay], [0.99.1], [veejay-users@lissts.sourceforge.net])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_forbid([^_?A[CHUM]_])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_forbid([_AC_])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^AS_FLAGS$])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_forbid([^_?m4_])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_forbid([^dnl$])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_forbid([^_?AS_])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([PATH_SEPARATOR])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([exec_prefix], [NONE])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([prefix], [NONE])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([program_transform_name], [s,x,x,])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([datadir], ['${prefix}/share'])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([includedir], ['${prefix}/include'])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([oldincludedir], ['/usr/include'])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([infodir], ['${prefix}/info'])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([mandir], ['${prefix}/man'])
|
||||||
|
m4trace:configure.ac:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
|
||||||
|
m4trace:configure.ac:3: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME])
|
||||||
|
m4trace:configure.ac:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.ac:3: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.ac:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
|
||||||
|
m4trace:configure.ac:3: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION])
|
||||||
|
m4trace:configure.ac:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
|
||||||
|
m4trace:configure.ac:3: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING])
|
||||||
|
m4trace:configure.ac:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.ac:3: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([build_alias])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([host_alias])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([target_alias])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([DEFS])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([ECHO_C])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([ECHO_N])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([ECHO_T])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([LIBS])
|
||||||
|
m4trace:configure.ac:12: -1- AC_CONFIG_HEADERS([config.h])
|
||||||
|
m4trace:configure.ac:15: -1- AC_CANONICAL_HOST
|
||||||
|
m4trace:configure.ac:15: -1- AC_CANONICAL_BUILD
|
||||||
|
m4trace:configure.ac:15: -1- AC_SUBST([build], [$ac_cv_build])
|
||||||
|
m4trace:configure.ac:15: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
|
||||||
|
m4trace:configure.ac:15: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
|
||||||
|
m4trace:configure.ac:15: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
|
||||||
|
m4trace:configure.ac:15: -1- AC_SUBST([host], [$ac_cv_host])
|
||||||
|
m4trace:configure.ac:15: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
|
||||||
|
m4trace:configure.ac:15: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
|
||||||
|
m4trace:configure.ac:15: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
|
||||||
|
m4trace:configure.ac:16: -1- AC_CANONICAL_TARGET
|
||||||
|
m4trace:configure.ac:16: -1- AC_SUBST([target], [$ac_cv_target])
|
||||||
|
m4trace:configure.ac:16: -1- AC_SUBST([target_cpu], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
|
||||||
|
m4trace:configure.ac:16: -1- AC_SUBST([target_vendor], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
|
||||||
|
m4trace:configure.ac:16: -1- AC_SUBST([target_os], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
|
||||||
|
m4trace:configure.ac:17: -1- AM_INIT_AUTOMAKE([1.7])
|
||||||
|
m4trace:configure.ac:17: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
|
||||||
|
m4trace:configure.ac:17: -1- AM_AUTOMAKE_VERSION([1.9.5])
|
||||||
|
m4trace:configure.ac:17: -1- AC_PROG_INSTALL
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([INSTALL_PROGRAM])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([INSTALL_SCRIPT])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([INSTALL_DATA])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([CYGPATH_W])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
|
||||||
|
m4trace:configure.ac:17: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
|
||||||
|
m4trace:configure.ac:17: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
|
||||||
|
#undef PACKAGE])
|
||||||
|
m4trace:configure.ac:17: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
|
||||||
|
m4trace:configure.ac:17: -1- AH_OUTPUT([VERSION], [/* Version number of package */
|
||||||
|
#undef VERSION])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([ACLOCAL])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([AUTOCONF])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([AUTOMAKE])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([AUTOHEADER])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([MAKEINFO])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([install_sh])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([STRIP])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([ac_ct_STRIP])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([mkdir_p])
|
||||||
|
m4trace:configure.ac:17: -1- AC_PROG_AWK
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([AWK])
|
||||||
|
m4trace:configure.ac:17: -1- AC_PROG_MAKE_SET
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([SET_MAKE])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([am__leading_dot])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([AMTAR])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([am__tar])
|
||||||
|
m4trace:configure.ac:17: -1- AC_SUBST([am__untar])
|
||||||
|
m4trace:configure.ac:18: -1- AM_MAINTAINER_MODE
|
||||||
|
m4trace:configure.ac:18: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
|
||||||
|
m4trace:configure.ac:18: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
|
||||||
|
m4trace:configure.ac:18: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
|
||||||
|
m4trace:configure.ac:18: -1- AC_SUBST([MAINT])
|
||||||
|
m4trace:configure.ac:19: -1- AM_INIT_AUTOMAKE([dist-bzip2])
|
||||||
|
m4trace:configure.ac:19: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([CYGPATH_W])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
|
||||||
|
m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
|
||||||
|
m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
|
||||||
|
#undef PACKAGE])
|
||||||
|
m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
|
||||||
|
m4trace:configure.ac:19: -1- AH_OUTPUT([VERSION], [/* Version number of package */
|
||||||
|
#undef VERSION])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([ACLOCAL])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([AUTOCONF])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([AUTOMAKE])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([AUTOHEADER])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([MAKEINFO])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([install_sh])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([STRIP])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([ac_ct_STRIP])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([AMTAR])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([am__tar])
|
||||||
|
m4trace:configure.ac:19: -1- AC_SUBST([am__untar])
|
||||||
|
m4trace:configure.ac:27: -1- AC_SUBST([LT_RELEASE])
|
||||||
|
m4trace:configure.ac:28: -1- AC_SUBST([LT_CURRENT])
|
||||||
|
m4trace:configure.ac:29: -1- AC_SUBST([LT_REVISION])
|
||||||
|
m4trace:configure.ac:30: -1- AC_SUBST([LT_AGE])
|
||||||
|
m4trace:configure.ac:42: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
configure.ac:42: the top level])
|
||||||
|
m4trace:configure.ac:45: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
configure.ac:45: the top level])
|
||||||
|
m4trace:configure.ac:50: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
configure.ac:50: the top level])
|
||||||
|
m4trace:configure.ac:53: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
configure.ac:53: the top level])
|
||||||
|
m4trace:configure.ac:56: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
configure.ac:56: the top level])
|
||||||
|
m4trace:configure.ac:60: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
configure.ac:60: the top level])
|
||||||
|
m4trace:configure.ac:62: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
configure.ac:62: the top level])
|
||||||
|
m4trace:configure.ac:65: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
configure.ac:65: the top level])
|
||||||
|
m4trace:configure.ac:68: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
configure.ac:68: the top level])
|
||||||
|
m4trace:configure.ac:71: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
configure.ac:71: the top level])
|
||||||
|
m4trace:configure.ac:74: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
configure.ac:74: the top level])
|
||||||
|
m4trace:configure.ac:81: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
configure.ac:81: the top level])
|
||||||
|
m4trace:configure.ac:84: -1- AH_OUTPUT([_GNU_SOURCE], [/* Enable GNU extensions on systems that have them. */
|
||||||
|
#ifndef _GNU_SOURCE
|
||||||
|
# undef _GNU_SOURCE
|
||||||
|
#endif])
|
||||||
|
m4trace:configure.ac:84: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE])
|
||||||
|
m4trace:configure.ac:87: -1- AC_PROG_LIBTOOL
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
|
||||||
|
aclocal.m4:1971: AC_ENABLE_SHARED is expanded from...
|
||||||
|
configure.ac:87: AC_ENABLE_SHARED is required by...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
|
||||||
|
aclocal.m4:2010: AC_ENABLE_STATIC is expanded from...
|
||||||
|
configure.ac:87: AC_ENABLE_STATIC is required by...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
|
||||||
|
aclocal.m4:2049: AC_ENABLE_FAST_INSTALL is expanded from...
|
||||||
|
configure.ac:87: AC_ENABLE_FAST_INSTALL is required by...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- AC_PROG_CC
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CFLAGS])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([am__include])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([am__quote])
|
||||||
|
m4trace:configure.ac:87: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([AMDEP_TRUE])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([AMDEP_FALSE])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([AMDEPBACKSLASH])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
|
||||||
|
m4trace:configure.ac:87: -1- AM_CONDITIONAL([am__fastdepCC], [
|
||||||
|
test "x$enable_dependency_tracking" != xno \
|
||||||
|
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([am__fastdepCC_TRUE])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([am__fastdepCC_FALSE])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
|
||||||
|
m4trace:configure.ac:87: -1- AM_CONDITIONAL([am__fastdepCC], [
|
||||||
|
test "x$enable_dependency_tracking" != xno \
|
||||||
|
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([am__fastdepCC_TRUE])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([am__fastdepCC_FALSE])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
aclocal.m4:2246: AC_PROG_LD is expanded from...
|
||||||
|
configure.ac:87: AC_PROG_LD is required by...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([EGREP])
|
||||||
|
m4trace:configure.ac:87: -1- AC_PROG_LN_S
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([LN_S], [$as_ln_s])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([ECHO])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([AR])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([ac_ct_AR])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([RANLIB])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([ac_ct_RANLIB])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([STRIP])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([ac_ct_STRIP])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
|
||||||
|
autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
|
||||||
|
autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
|
||||||
|
aclocal.m4:748: _LT_AC_LOCK is expanded from...
|
||||||
|
configure.ac:87: _LT_AC_LOCK is required by...
|
||||||
|
aclocal.m4:1179: AC_LIBTOOL_SYS_HARD_LINK_LOCKS is expanded from...
|
||||||
|
aclocal.m4:2793: _LT_AC_LANG_C_CONFIG is expanded from...
|
||||||
|
aclocal.m4:2660: AC_LIBTOOL_LANG_C_CONFIG is expanded from...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_HEADERS([dlfcn.h])
|
||||||
|
m4trace:configure.ac:87: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#undef HAVE_DLFCN_H])
|
||||||
|
m4trace:configure.ac:87: -1- AC_HEADER_STDC
|
||||||
|
m4trace:configure.ac:87: -1- AC_PROG_CPP
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CPP])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CPP])
|
||||||
|
m4trace:configure.ac:87: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
|
||||||
|
m4trace:configure.ac:87: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
|
||||||
|
inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
|
||||||
|
m4trace:configure.ac:87: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H])
|
||||||
|
m4trace:configure.ac:87: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H])
|
||||||
|
m4trace:configure.ac:87: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H])
|
||||||
|
m4trace:configure.ac:87: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H])
|
||||||
|
m4trace:configure.ac:87: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H])
|
||||||
|
m4trace:configure.ac:87: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H])
|
||||||
|
m4trace:configure.ac:87: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H])
|
||||||
|
m4trace:configure.ac:87: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H])
|
||||||
|
m4trace:configure.ac:87: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [
|
||||||
|
lt_cv_dlopen="dyld"
|
||||||
|
lt_cv_dlopen_libs=
|
||||||
|
lt_cv_dlopen_self=yes
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen"],
|
||||||
|
[AC_CHECK_LIB([dl], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
|
||||||
|
[AC_CHECK_LIB([svld], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
|
||||||
|
[AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
|
||||||
|
[AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
m4trace:configure.ac:87: -1- _LT_AC_TAGCONFIG
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: error: tag name \"$tagname\" already exists], [aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: error: tag name \"$tagname\" already exists], [aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- AC_PROG_CXX
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CXX])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CXXFLAGS])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CXX])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([ac_ct_CXX])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
|
||||||
|
m4trace:configure.ac:87: -1- AM_CONDITIONAL([am__fastdepCXX], [
|
||||||
|
test "x$enable_dependency_tracking" != xno \
|
||||||
|
&& test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([am__fastdepCXX_TRUE])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([am__fastdepCXX_FALSE])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
|
||||||
|
m4trace:configure.ac:87: -1- AM_CONDITIONAL([am__fastdepCXX], [
|
||||||
|
test "x$enable_dependency_tracking" != xno \
|
||||||
|
&& test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([am__fastdepCXX_TRUE])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([am__fastdepCXX_FALSE])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CXXCPP])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([CXXCPP])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [
|
||||||
|
lt_cv_dlopen="dyld"
|
||||||
|
lt_cv_dlopen_libs=
|
||||||
|
lt_cv_dlopen_self=yes
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen"],
|
||||||
|
[AC_CHECK_LIB([dl], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
|
||||||
|
[AC_CHECK_LIB([svld], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
|
||||||
|
[AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
|
||||||
|
[AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([F77])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([FFLAGS])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([F77])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([ac_ct_F77])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
|
||||||
|
aclocal.m4:3970: _LT_AC_LANG_GCJ_CONFIG is expanded from...
|
||||||
|
aclocal.m4:3927: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from...
|
||||||
|
aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE',
|
||||||
|
and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
|
||||||
|
aclocal.m4:3970: _LT_AC_LANG_GCJ_CONFIG is expanded from...
|
||||||
|
aclocal.m4:3927: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from...
|
||||||
|
aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [
|
||||||
|
lt_cv_dlopen="dyld"
|
||||||
|
lt_cv_dlopen_libs=
|
||||||
|
lt_cv_dlopen_self=yes
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen"],
|
||||||
|
[AC_CHECK_LIB([dl], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
|
||||||
|
[AC_CHECK_LIB([svld], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
|
||||||
|
[AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
|
||||||
|
[AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:87: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from...
|
||||||
|
aclocal.m4:3970: _LT_AC_LANG_GCJ_CONFIG is expanded from...
|
||||||
|
aclocal.m4:3927: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from...
|
||||||
|
aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
|
||||||
|
aclocal.m4:4009: _LT_AC_LANG_RC_CONFIG is expanded from...
|
||||||
|
aclocal.m4:3978: AC_LIBTOOL_LANG_RC_CONFIG is expanded from...
|
||||||
|
aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE',
|
||||||
|
and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
|
||||||
|
aclocal.m4:4009: _LT_AC_LANG_RC_CONFIG is expanded from...
|
||||||
|
aclocal.m4:3978: AC_LIBTOOL_LANG_RC_CONFIG is expanded from...
|
||||||
|
aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from...
|
||||||
|
aclocal.m4:4009: _LT_AC_LANG_RC_CONFIG is expanded from...
|
||||||
|
aclocal.m4:3978: AC_LIBTOOL_LANG_RC_CONFIG is expanded from...
|
||||||
|
aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:421: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:87: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:279: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:259: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:87: the top level])
|
||||||
|
m4trace:configure.ac:87: -1- AC_SUBST([LIBTOOL])
|
||||||
|
m4trace:configure.ac:90: -1- AC_PROG_AWK
|
||||||
|
m4trace:configure.ac:90: -1- AC_SUBST([AWK])
|
||||||
|
m4trace:configure.ac:91: -1- AC_PROG_CC
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([CFLAGS])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
|
||||||
|
m4trace:configure.ac:91: -1- AM_CONDITIONAL([am__fastdepCC], [
|
||||||
|
test "x$enable_dependency_tracking" != xno \
|
||||||
|
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([am__fastdepCC_TRUE])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([am__fastdepCC_FALSE])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
|
||||||
|
m4trace:configure.ac:91: -1- AM_CONDITIONAL([am__fastdepCC], [
|
||||||
|
test "x$enable_dependency_tracking" != xno \
|
||||||
|
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([am__fastdepCC_TRUE])
|
||||||
|
m4trace:configure.ac:91: -1- AC_SUBST([am__fastdepCC_FALSE])
|
||||||
|
m4trace:configure.ac:92: -1- _m4_warn([obsolete], [The macro `AM_PROG_CC_STDC' is obsolete.
|
||||||
|
You should run autoupdate.], [aclocal.m4:6737: AM_PROG_CC_STDC is expanded from...
|
||||||
|
configure.ac:92: the top level])
|
||||||
|
m4trace:configure.ac:92: -1- AC_PROG_CC
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([CFLAGS])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
|
||||||
|
m4trace:configure.ac:92: -1- AM_CONDITIONAL([am__fastdepCC], [
|
||||||
|
test "x$enable_dependency_tracking" != xno \
|
||||||
|
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([am__fastdepCC_TRUE])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([am__fastdepCC_FALSE])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
|
||||||
|
m4trace:configure.ac:92: -1- AM_CONDITIONAL([am__fastdepCC], [
|
||||||
|
test "x$enable_dependency_tracking" != xno \
|
||||||
|
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([am__fastdepCC_TRUE])
|
||||||
|
m4trace:configure.ac:92: -1- AC_SUBST([am__fastdepCC_FALSE])
|
||||||
|
m4trace:configure.ac:92: -1- _m4_warn([obsolete], [AM_PROG_CC_STDC:
|
||||||
|
your code should no longer depend upon `am_cv_prog_cc_stdc', but upon
|
||||||
|
`ac_cv_prog_cc_stdc'. Remove this warning and the assignment when
|
||||||
|
you adjust the code. You can also remove the above call to
|
||||||
|
AC_PROG_CC if you already called it elsewhere.], [aclocal.m4:6737: AM_PROG_CC_STDC is expanded from...
|
||||||
|
configure.ac:92: the top level])
|
||||||
|
m4trace:configure.ac:93: -1- AC_PROG_CXX
|
||||||
|
m4trace:configure.ac:93: -1- AC_SUBST([CXX])
|
||||||
|
m4trace:configure.ac:93: -1- AC_SUBST([CXXFLAGS])
|
||||||
|
m4trace:configure.ac:93: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.ac:93: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:93: -1- AC_SUBST([CXX])
|
||||||
|
m4trace:configure.ac:93: -1- AC_SUBST([ac_ct_CXX])
|
||||||
|
m4trace:configure.ac:93: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
|
||||||
|
m4trace:configure.ac:93: -1- AM_CONDITIONAL([am__fastdepCXX], [
|
||||||
|
test "x$enable_dependency_tracking" != xno \
|
||||||
|
&& test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
|
||||||
|
m4trace:configure.ac:93: -1- AC_SUBST([am__fastdepCXX_TRUE])
|
||||||
|
m4trace:configure.ac:93: -1- AC_SUBST([am__fastdepCXX_FALSE])
|
||||||
|
m4trace:configure.ac:93: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
|
||||||
|
m4trace:configure.ac:93: -1- AM_CONDITIONAL([am__fastdepCXX], [
|
||||||
|
test "x$enable_dependency_tracking" != xno \
|
||||||
|
&& test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
|
||||||
|
m4trace:configure.ac:93: -1- AC_SUBST([am__fastdepCXX_TRUE])
|
||||||
|
m4trace:configure.ac:93: -1- AC_SUBST([am__fastdepCXX_FALSE])
|
||||||
|
m4trace:configure.ac:94: -1- AC_PROG_INSTALL
|
||||||
|
m4trace:configure.ac:94: -1- AC_SUBST([INSTALL_PROGRAM])
|
||||||
|
m4trace:configure.ac:94: -1- AC_SUBST([INSTALL_SCRIPT])
|
||||||
|
m4trace:configure.ac:94: -1- AC_SUBST([INSTALL_DATA])
|
||||||
|
m4trace:configure.ac:95: -1- AC_PROG_LN_S
|
||||||
|
m4trace:configure.ac:95: -1- AC_SUBST([LN_S], [$as_ln_s])
|
||||||
|
m4trace:configure.ac:96: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN])
|
||||||
|
m4trace:configure.ac:96: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte
|
||||||
|
first (like Motorola and SPARC, unlike Intel and VAX). */
|
||||||
|
#undef WORDS_BIGENDIAN])
|
||||||
|
m4trace:configure.ac:97: -1- AC_C_CONST
|
||||||
|
m4trace:configure.ac:97: -1- AC_DEFINE_TRACE_LITERAL([const])
|
||||||
|
m4trace:configure.ac:97: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */
|
||||||
|
#undef const])
|
||||||
|
m4trace:configure.ac:98: -1- AC_C_INLINE
|
||||||
|
m4trace:configure.ac:98: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler
|
||||||
|
calls it, or to nothing if \'inline\' is not supported under any name. */
|
||||||
|
#ifndef __cplusplus
|
||||||
|
#undef inline
|
||||||
|
#endif])
|
||||||
|
m4trace:configure.ac:99: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
|
||||||
|
m4trace:configure.ac:99: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
|
||||||
|
#undef _FILE_OFFSET_BITS])
|
||||||
|
m4trace:configure.ac:99: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
|
||||||
|
m4trace:configure.ac:99: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
|
||||||
|
#undef _LARGE_FILES])
|
||||||
|
m4trace:configure.ac:102: -1- AC_SUBST([CCAS])
|
||||||
|
m4trace:configure.ac:102: -1- AC_SUBST([CCASFLAGS])
|
||||||
|
m4trace:configure.ac:104: -1- AC_CHECK_HEADERS([fenv.h stdint.h inttypes.h sys/types.h alloca.h])
|
||||||
|
m4trace:configure.ac:104: -1- AH_OUTPUT([HAVE_FENV_H], [/* Define to 1 if you have the <fenv.h> header file. */
|
||||||
|
#undef HAVE_FENV_H])
|
||||||
|
m4trace:configure.ac:104: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H])
|
||||||
|
m4trace:configure.ac:104: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H])
|
||||||
|
m4trace:configure.ac:104: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H])
|
||||||
|
m4trace:configure.ac:104: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have the <alloca.h> header file. */
|
||||||
|
#undef HAVE_ALLOCA_H])
|
||||||
|
m4trace:configure.ac:109: -1- AC_CHECK_FUNCS([posix_memalign memalign pow bzero gettimeofday memset mmap strndup strstr strncasecmp])
|
||||||
|
m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_POSIX_MEMALIGN], [/* Define to 1 if you have the `posix_memalign\' function. */
|
||||||
|
#undef HAVE_POSIX_MEMALIGN])
|
||||||
|
m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_MEMALIGN], [/* Define to 1 if you have the `memalign\' function. */
|
||||||
|
#undef HAVE_MEMALIGN])
|
||||||
|
m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_POW], [/* Define to 1 if you have the `pow\' function. */
|
||||||
|
#undef HAVE_POW])
|
||||||
|
m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */
|
||||||
|
#undef HAVE_BZERO])
|
||||||
|
m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */
|
||||||
|
#undef HAVE_GETTIMEOFDAY])
|
||||||
|
m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */
|
||||||
|
#undef HAVE_MEMSET])
|
||||||
|
m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have the `mmap\' function. */
|
||||||
|
#undef HAVE_MMAP])
|
||||||
|
m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_STRNDUP], [/* Define to 1 if you have the `strndup\' function. */
|
||||||
|
#undef HAVE_STRNDUP])
|
||||||
|
m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */
|
||||||
|
#undef HAVE_STRSTR])
|
||||||
|
m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_STRNCASECMP], [/* Define to 1 if you have the `strncasecmp\' function. */
|
||||||
|
#undef HAVE_STRNCASECMP])
|
||||||
|
m4trace:configure.ac:110: -1- AC_CHECK_FUNCS([sched_get_priority_max])
|
||||||
|
m4trace:configure.ac:110: -1- AH_OUTPUT([HAVE_SCHED_GET_PRIORITY_MAX], [/* Define to 1 if you have the `sched_get_priority_max\' function. */
|
||||||
|
#undef HAVE_SCHED_GET_PRIORITY_MAX])
|
||||||
|
m4trace:configure.ac:111: -1- AC_CHECK_FUNCS([select socket getpagesize memcpy])
|
||||||
|
m4trace:configure.ac:111: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */
|
||||||
|
#undef HAVE_SELECT])
|
||||||
|
m4trace:configure.ac:111: -1- AH_OUTPUT([HAVE_SOCKET], [/* Define to 1 if you have the `socket\' function. */
|
||||||
|
#undef HAVE_SOCKET])
|
||||||
|
m4trace:configure.ac:111: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
|
||||||
|
#undef HAVE_GETPAGESIZE])
|
||||||
|
m4trace:configure.ac:111: -1- AH_OUTPUT([HAVE_MEMCPY], [/* Define to 1 if you have the `memcpy\' function. */
|
||||||
|
#undef HAVE_MEMCPY])
|
||||||
|
m4trace:configure.ac:120: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETOPT_LONG])
|
||||||
|
m4trace:configure.ac:120: -1- AH_OUTPUT([HAVE_GETOPT_LONG], [/* long getopt support */
|
||||||
|
#undef HAVE_GETOPT_LONG])
|
||||||
|
m4trace:configure.ac:120: -1- AC_CHECK_LIB([gnugetopt], [getopt_long], [AC_DEFINE(HAVE_GETOPT_LONG, 1,
|
||||||
|
[long getopt support])
|
||||||
|
LIBGETOPT_LIB="-lgnugetopt"])
|
||||||
|
m4trace:configure.ac:120: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETOPT_LONG])
|
||||||
|
m4trace:configure.ac:120: -1- AH_OUTPUT([HAVE_GETOPT_LONG], [/* long getopt support */
|
||||||
|
#undef HAVE_GETOPT_LONG])
|
||||||
|
m4trace:configure.ac:121: -1- AC_SUBST([LIBGETOPT_LIB])
|
||||||
|
m4trace:configure.ac:123: -1- AC_TYPE_SIGNAL
|
||||||
|
m4trace:configure.ac:123: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
|
||||||
|
m4trace:configure.ac:123: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
|
||||||
|
#undef RETSIGTYPE])
|
||||||
|
m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([USE_DISPLAY])
|
||||||
|
m4trace:configure.ac:132: -1- AH_OUTPUT([USE_DISPLAY], [/* Compiling in a video output X screen */
|
||||||
|
#undef USE_DISPLAY])
|
||||||
|
m4trace:configure.ac:134: -1- AC_CHECK_HEADERS([GL/gl.h ], [], [AC_MSG_ERROR([Cannot find OpenGL headers]) ])
|
||||||
|
m4trace:configure.ac:134: -1- AH_OUTPUT([HAVE_GL_GL_H], [/* Define to 1 if you have the <GL/gl.h> header file. */
|
||||||
|
#undef HAVE_GL_GL_H])
|
||||||
|
m4trace:configure.ac:139: -1- AC_SUBST([SDL_CONFIG], [$ac_cv_path_SDL_CONFIG])
|
||||||
|
m4trace:configure.ac:139: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
|
||||||
|
aclocal.m4:6622: AM_PATH_SDL is expanded from...
|
||||||
|
configure.ac:139: the top level])
|
||||||
|
m4trace:configure.ac:139: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SDL])
|
||||||
|
m4trace:configure.ac:139: -1- AH_OUTPUT([HAVE_SDL], [/* SDL library present */
|
||||||
|
#undef HAVE_SDL])
|
||||||
|
m4trace:configure.ac:139: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
|
||||||
|
aclocal.m4:6622: AM_PATH_SDL is expanded from...
|
||||||
|
configure.ac:139: the top level])
|
||||||
|
m4trace:configure.ac:139: -1- AC_SUBST([SDL_CFLAGS])
|
||||||
|
m4trace:configure.ac:139: -1- AC_SUBST([SDL_LIBS])
|
||||||
|
m4trace:configure.ac:145: -1- AC_CHECK_LIB([GL], [main], [have_gl=true])
|
||||||
|
m4trace:configure.ac:153: -1- AC_CHECK_HEADERS([GL/glut.h ], [], [AC_MSG_ERROR([Cannot find Glut headers]) ])
|
||||||
|
m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_GL_GLUT_H], [/* Define to 1 if you have the <GL/glut.h> header file. */
|
||||||
|
#undef HAVE_GL_GLUT_H])
|
||||||
|
m4trace:configure.ac:155: -1- AC_CHECK_LIB([glut], [glutInit], [have_glut=true])
|
||||||
|
m4trace:configure.ac:161: -1- AC_CHECK_LIB([GLU], [gluProject], [have_glu=true])
|
||||||
|
m4trace:configure.ac:167: -1- AC_SUBST([GL_LIBS ])
|
||||||
|
m4trace:configure.ac:168: -1- AC_SUBST([GL_CFLAGS ])
|
||||||
|
m4trace:configure.ac:192: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX])
|
||||||
|
m4trace:configure.ac:192: -1- AH_OUTPUT([HAVE_LINUX], [/* Linux platform */
|
||||||
|
#undef HAVE_LINUX])
|
||||||
|
m4trace:configure.ac:196: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DARWIN])
|
||||||
|
m4trace:configure.ac:196: -1- AH_OUTPUT([HAVE_DARWIN], [/* MAC OS X Darin */
|
||||||
|
#undef HAVE_DARWIN])
|
||||||
|
m4trace:configure.ac:208: -1- AC_SUBST([LIBM_LIBS])
|
||||||
|
m4trace:configure.ac:220: -1- AC_DEFINE_TRACE_LITERAL([HAVE_V4L])
|
||||||
|
m4trace:configure.ac:220: -1- AH_OUTPUT([HAVE_V4L], [/* Building for Linux - using the video4linux API */
|
||||||
|
#undef HAVE_V4L])
|
||||||
|
m4trace:configure.ac:227: -1- AC_SUBST([PTHREAD_LIBS])
|
||||||
|
m4trace:configure.ac:232: -1- AC_CHECK_LIB([pthread], [pthread_create], [ PTHREAD_LIBS="-lpthread"
|
||||||
|
AC_DEFINE(HAVE_LIBPTHREAD,,[Compiling with pthread library])
|
||||||
|
have_pthread=true ], [], [])
|
||||||
|
m4trace:configure.ac:232: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPTHREAD])
|
||||||
|
m4trace:configure.ac:232: -1- AH_OUTPUT([HAVE_LIBPTHREAD], [/* Compiling with pthread library */
|
||||||
|
#undef HAVE_LIBPTHREAD])
|
||||||
|
m4trace:configure.ac:237: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PTHREADSTACKSIZE])
|
||||||
|
m4trace:configure.ac:237: -1- AH_OUTPUT([HAVE_PTHREADSTACKSIZE], [/* Using pthread stack size */
|
||||||
|
#undef HAVE_PTHREADSTACKSIZE])
|
||||||
|
m4trace:configure.ac:240: -1- AC_CHECK_LIB([dl], [dlopen])
|
||||||
|
m4trace:configure.ac:240: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the `dl\' library (-ldl). */
|
||||||
|
#undef HAVE_LIBDL])
|
||||||
|
m4trace:configure.ac:240: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL])
|
||||||
|
m4trace:configure.ac:242: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DL_DLOPEN])
|
||||||
|
m4trace:configure.ac:242: -1- AH_OUTPUT([HAVE_DL_DLOPEN], [/* Compile with dlopen support */
|
||||||
|
#undef HAVE_DL_DLOPEN])
|
||||||
|
m4trace:configure.ac:255: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$])
|
||||||
|
m4trace:configure.ac:255: -1- m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
|
||||||
|
m4trace:configure.ac:255: -1- AC_SUBST([PKG_CONFIG])
|
||||||
|
m4trace:configure.ac:255: -1- AC_SUBST([PKG_CONFIG], [$ac_cv_path_PKG_CONFIG])
|
||||||
|
m4trace:configure.ac:255: -1- AC_SUBST([ac_pt_PKG_CONFIG], [$ac_cv_path_ac_pt_PKG_CONFIG])
|
||||||
|
m4trace:configure.ac:255: -1- AC_SUBST([FFMPEG_AVCODEC_CFLAGS])
|
||||||
|
m4trace:configure.ac:255: -1- AC_SUBST([FFMPEG_AVCODEC_LIBS])
|
||||||
|
m4trace:configure.ac:255: -1- AC_SUBST([FFMPEG_AVCODEC_CFLAGS ])
|
||||||
|
m4trace:configure.ac:255: -1- AC_SUBST([FFMPEG_AVCODEC_LIBS ])
|
||||||
|
m4trace:configure.ac:255: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AVCODEC])
|
||||||
|
m4trace:configure.ac:255: -1- AH_OUTPUT([HAVE_AVCODEC], [/* use avcodec */
|
||||||
|
#undef HAVE_AVCODEC])
|
||||||
|
m4trace:configure.ac:264: -1- AC_SUBST([FFMPEG_AVCODEC_CFLAGS])
|
||||||
|
m4trace:configure.ac:264: -1- AC_SUBST([FFMPEG_AVCODEC_LIBS])
|
||||||
|
m4trace:configure.ac:264: -1- AC_SUBST([FFMPEG_AVFORMAT_CFLAGS ])
|
||||||
|
m4trace:configure.ac:264: -1- AC_SUBST([FFMPEG_AVFORMAT_LIBS ])
|
||||||
|
m4trace:configure.ac:264: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AVFORMAT])
|
||||||
|
m4trace:configure.ac:264: -1- AH_OUTPUT([HAVE_AVFORMAT], [/* use avformat */
|
||||||
|
#undef HAVE_AVFORMAT])
|
||||||
|
m4trace:configure.ac:281: -1- AC_SUBST([LIBDV_CFLAGS])
|
||||||
|
m4trace:configure.ac:281: -1- AC_SUBST([LIBDV_LIBS])
|
||||||
|
m4trace:configure.ac:281: -1- AC_DEFINE_TRACE_LITERAL([SUPPORT_READ_DV2])
|
||||||
|
m4trace:configure.ac:281: -1- AH_OUTPUT([SUPPORT_READ_DV2], [/* libdv is present */
|
||||||
|
#undef SUPPORT_READ_DV2])
|
||||||
|
m4trace:configure.ac:295: -1- AC_SUBST([MJPEGTOOLS_CFLAGS])
|
||||||
|
m4trace:configure.ac:295: -1- AC_SUBST([MJPEGTOOLS_LIBS])
|
||||||
|
m4trace:configure.ac:295: -1- AC_SUBST([MJPEGTOOLS_CFLAGS ])
|
||||||
|
m4trace:configure.ac:295: -1- AC_SUBST([MJPEGTOOLS_LIBS ])
|
||||||
|
m4trace:configure.ac:295: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MJPEGTOOLS])
|
||||||
|
m4trace:configure.ac:295: -1- AH_OUTPUT([HAVE_MJPEGTOOLS], [/* MJPEGTools installed */
|
||||||
|
#undef HAVE_MJPEGTOOLS])
|
||||||
|
m4trace:configure.ac:312: -1- AC_DEFINE_TRACE_LITERAL([HAVE___PROGNAME])
|
||||||
|
m4trace:configure.ac:312: -1- AH_OUTPUT([HAVE___PROGNAME], [/* Is __progname defined by system? */
|
||||||
|
#undef HAVE___PROGNAME])
|
||||||
|
m4trace:configure.ac:318: -1- AC_SUBST([V4LCONF_LIBS])
|
||||||
|
m4trace:configure.ac:321: -2- AC_DEFINE_TRACE_LITERAL([HAVE_LIBXXF86DGA])
|
||||||
|
m4trace:configure.ac:321: -2- AH_OUTPUT([HAVE_LIBXXF86DGA], [/* libxf86dga is present */
|
||||||
|
#undef HAVE_LIBXXF86DGA])
|
||||||
|
m4trace:configure.ac:322: -1- AC_CHECK_LIB([Xxf86dga], [XF86DGAQueryExtension], [V4LCONF_LIBS="$X_LIBS -lXxf86dga"
|
||||||
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
@%:@define HAVE_LIBXXF86DGA 1
|
||||||
|
_ACEOF
|
||||||
|
], [], [$X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS])
|
||||||
|
m4trace:configure.ac:335: -1- AC_SUBST([GLIB_CONFIG], [$ac_cv_path_GLIB_CONFIG])
|
||||||
|
m4trace:configure.ac:335: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
|
||||||
|
aclocal.m4:209: AM_PATH_GLIB is expanded from...
|
||||||
|
configure.ac:335: the top level])
|
||||||
|
m4trace:configure.ac:335: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GLIB])
|
||||||
|
m4trace:configure.ac:335: -1- AH_OUTPUT([HAVE_GLIB], [/* Glib library present */
|
||||||
|
#undef HAVE_GLIB])
|
||||||
|
m4trace:configure.ac:335: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
|
||||||
|
aclocal.m4:209: AM_PATH_GLIB is expanded from...
|
||||||
|
configure.ac:335: the top level])
|
||||||
|
m4trace:configure.ac:335: -1- AC_SUBST([GLIB_CFLAGS])
|
||||||
|
m4trace:configure.ac:335: -1- AC_SUBST([GLIB_LIBS])
|
||||||
|
m4trace:configure.ac:362: -1- AC_SUBST([XML2_CONFIG], [$ac_cv_path_XML2_CONFIG])
|
||||||
|
m4trace:configure.ac:362: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
|
||||||
|
aclocal.m4:6314: AM_PATH_XML2 is expanded from...
|
||||||
|
configure.ac:362: the top level])
|
||||||
|
m4trace:configure.ac:362: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XML2])
|
||||||
|
m4trace:configure.ac:362: -1- AH_OUTPUT([HAVE_XML2], [/* Compiling with XML2 */
|
||||||
|
#undef HAVE_XML2])
|
||||||
|
m4trace:configure.ac:362: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
|
||||||
|
aclocal.m4:6314: AM_PATH_XML2 is expanded from...
|
||||||
|
configure.ac:362: the top level])
|
||||||
|
m4trace:configure.ac:362: -1- AC_SUBST([XML_CPPFLAGS])
|
||||||
|
m4trace:configure.ac:362: -1- AC_SUBST([XML_LIBS])
|
||||||
|
m4trace:configure.ac:403: -1- AC_DEFINE_TRACE_LITERAL([HAVE_X86CPU])
|
||||||
|
m4trace:configure.ac:403: -1- AH_OUTPUT([HAVE_X86CPU], [/* Compiling for x86 architecture CPU */
|
||||||
|
#undef HAVE_X86CPU])
|
||||||
|
m4trace:configure.ac:404: -1- AC_DEFINE_TRACE_LITERAL([ARCH_X86])
|
||||||
|
m4trace:configure.ac:404: -1- AH_OUTPUT([ARCH_X86], [/* Compiling for x86 architecture */
|
||||||
|
#undef ARCH_X86])
|
||||||
|
m4trace:configure.ac:427: -1- AC_DEFINE_TRACE_LITERAL([HAVE_X86_CPU])
|
||||||
|
m4trace:configure.ac:427: -1- AH_OUTPUT([HAVE_X86_CPU], [/* Compiling for x86-64 architecture CPU */
|
||||||
|
#undef HAVE_X86_CPU])
|
||||||
|
m4trace:configure.ac:428: -1- AC_DEFINE_TRACE_LITERAL([ARCH_X86_64])
|
||||||
|
m4trace:configure.ac:428: -1- AH_OUTPUT([ARCH_X86_64], [/* Compiling for x86-64 architecture CPU */
|
||||||
|
#undef ARCH_X86_64])
|
||||||
|
m4trace:configure.ac:435: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PPCCPU])
|
||||||
|
m4trace:configure.ac:435: -1- AH_OUTPUT([HAVE_PPCCPU], [/* Compiling for PowerPC CPU */
|
||||||
|
#undef HAVE_PPCCPU])
|
||||||
|
m4trace:configure.ac:436: -1- AC_DEFINE_TRACE_LITERAL([ARCH_PPC])
|
||||||
|
m4trace:configure.ac:436: -1- AH_OUTPUT([ARCH_PPC], [/* Compiling for PowerPC */
|
||||||
|
#undef ARCH_PPC])
|
||||||
|
m4trace:configure.ac:451: -1- AC_DEFINE_TRACE_LITERAL([ARCH_MIPS])
|
||||||
|
m4trace:configure.ac:451: -1- AH_OUTPUT([ARCH_MIPS], [/* Compiling for MIPS CPU */
|
||||||
|
#undef ARCH_MIPS])
|
||||||
|
m4trace:configure.ac:452: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MIPS])
|
||||||
|
m4trace:configure.ac:452: -1- AH_OUTPUT([HAVE_MIPS], [/* Compiling for MIPS CPU */
|
||||||
|
#undef HAVE_MIPS])
|
||||||
|
m4trace:configure.ac:464: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PS2])
|
||||||
|
m4trace:configure.ac:464: -1- AH_OUTPUT([HAVE_PS2], [/* Compile for playstation2 */
|
||||||
|
#undef HAVE_PS2])
|
||||||
|
m4trace:configure.ac:480: -1- AC_SUBST([PROGRAM_NOPIC])
|
||||||
|
m4trace:configure.ac:487: -1- AC_SUBST([AS], [$ac_cv_path_AS])
|
||||||
|
m4trace:configure.ac:491: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_NASM])
|
||||||
|
m4trace:configure.ac:491: -1- AH_OUTPUT([HAVE_ASM_NASM], [/* Compiling with nasm */
|
||||||
|
#undef HAVE_ASM_NASM])
|
||||||
|
m4trace:configure.ac:494: -1- AC_SUBST([ASFLAGS])
|
||||||
|
m4trace:configure.ac:507: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_MMX])
|
||||||
|
m4trace:configure.ac:507: -1- AH_OUTPUT([HAVE_ASM_MMX], [/* Compiling in MMX support */
|
||||||
|
#undef HAVE_ASM_MMX])
|
||||||
|
m4trace:configure.ac:508: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMX])
|
||||||
|
m4trace:configure.ac:508: -1- AH_OUTPUT([HAVE_MMX], [/* Compiling in MMX support in ffmpeg */
|
||||||
|
#undef HAVE_MMX])
|
||||||
|
m4trace:configure.ac:522: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_SSE])
|
||||||
|
m4trace:configure.ac:522: -1- AH_OUTPUT([HAVE_ASM_SSE], [/* Compiling in SSE support */
|
||||||
|
#undef HAVE_ASM_SSE])
|
||||||
|
m4trace:configure.ac:523: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SSE])
|
||||||
|
m4trace:configure.ac:523: -1- AH_OUTPUT([HAVE_SSE], [/* Compiling in SSE support */
|
||||||
|
#undef HAVE_SSE])
|
||||||
|
m4trace:configure.ac:538: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_SSE2])
|
||||||
|
m4trace:configure.ac:538: -1- AH_OUTPUT([HAVE_ASM_SSE2], [/* Compiling in SSE2 support */
|
||||||
|
#undef HAVE_ASM_SSE2])
|
||||||
|
m4trace:configure.ac:539: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SSE2])
|
||||||
|
m4trace:configure.ac:539: -1- AH_OUTPUT([HAVE_SSE2], [/* Compiling in SSE2 support */
|
||||||
|
#undef HAVE_SSE2])
|
||||||
|
m4trace:configure.ac:553: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_3DNOW])
|
||||||
|
m4trace:configure.ac:553: -1- AH_OUTPUT([HAVE_ASM_3DNOW], [/* Compiling in 3Dnow */
|
||||||
|
#undef HAVE_ASM_3DNOW])
|
||||||
|
m4trace:configure.ac:567: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CMOV])
|
||||||
|
m4trace:configure.ac:567: -1- AH_OUTPUT([HAVE_CMOV], [/* Compiling in CMOV */
|
||||||
|
#undef HAVE_CMOV])
|
||||||
|
m4trace:configure.ac:582: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_MMX2])
|
||||||
|
m4trace:configure.ac:582: -1- AH_OUTPUT([HAVE_ASM_MMX2], [/* Compiling in MMX2 */
|
||||||
|
#undef HAVE_ASM_MMX2])
|
||||||
|
m4trace:configure.ac:583: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMX2])
|
||||||
|
m4trace:configure.ac:583: -1- AH_OUTPUT([HAVE_MMX2], [/* Compiling in MMX2 */
|
||||||
|
#undef HAVE_MMX2])
|
||||||
|
m4trace:configure.ac:628: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALTIVEC])
|
||||||
|
m4trace:configure.ac:628: -1- AH_OUTPUT([HAVE_ALTIVEC], [/* Inline PPC Altivec primitives available */
|
||||||
|
#undef HAVE_ALTIVEC])
|
||||||
|
m4trace:configure.ac:629: -1- AC_SUBST([ALTIVEC_CFLAGS])
|
||||||
|
m4trace:configure.ac:656: -1- AM_CONDITIONAL([HAVE_SDL], [test x$have_sdl = xtrue ])
|
||||||
|
m4trace:configure.ac:656: -1- AC_SUBST([HAVE_SDL_TRUE])
|
||||||
|
m4trace:configure.ac:656: -1- AC_SUBST([HAVE_SDL_FALSE])
|
||||||
|
m4trace:configure.ac:657: -1- AM_CONDITIONAL([HAVE_ASM_MMX], [test x$have_asm_mmx = xtrue])
|
||||||
|
m4trace:configure.ac:657: -1- AC_SUBST([HAVE_ASM_MMX_TRUE])
|
||||||
|
m4trace:configure.ac:657: -1- AC_SUBST([HAVE_ASM_MMX_FALSE])
|
||||||
|
m4trace:configure.ac:658: -1- AM_CONDITIONAL([HAVE_X86CPU], [test x$have_x86cpu = xtrue])
|
||||||
|
m4trace:configure.ac:658: -1- AC_SUBST([HAVE_X86CPU_TRUE])
|
||||||
|
m4trace:configure.ac:658: -1- AC_SUBST([HAVE_X86CPU_FALSE])
|
||||||
|
m4trace:configure.ac:659: -1- AM_CONDITIONAL([HAVE_PPCCPU], [test x$have_ppccpu = xtrue])
|
||||||
|
m4trace:configure.ac:659: -1- AC_SUBST([HAVE_PPCCPU_TRUE])
|
||||||
|
m4trace:configure.ac:659: -1- AC_SUBST([HAVE_PPCCPU_FALSE])
|
||||||
|
m4trace:configure.ac:660: -1- AM_CONDITIONAL([HAVE_ALTIVEC], [test x$have_altivec = xtrue])
|
||||||
|
m4trace:configure.ac:660: -1- AC_SUBST([HAVE_ALTIVEC_TRUE])
|
||||||
|
m4trace:configure.ac:660: -1- AC_SUBST([HAVE_ALTIVEC_FALSE])
|
||||||
|
m4trace:configure.ac:661: -1- AM_CONDITIONAL([HAVE_ASM_MMX2], [test x$have_asm_mmx2 = xtrue])
|
||||||
|
m4trace:configure.ac:661: -1- AC_SUBST([HAVE_ASM_MMX2_TRUE])
|
||||||
|
m4trace:configure.ac:661: -1- AC_SUBST([HAVE_ASM_MMX2_FALSE])
|
||||||
|
m4trace:configure.ac:662: -1- AM_CONDITIONAL([HAVE_ASM_SSE], [test x$have_asm_sse = xtrue])
|
||||||
|
m4trace:configure.ac:662: -1- AC_SUBST([HAVE_ASM_SSE_TRUE])
|
||||||
|
m4trace:configure.ac:662: -1- AC_SUBST([HAVE_ASM_SSE_FALSE])
|
||||||
|
m4trace:configure.ac:663: -1- AM_CONDITIONAL([HAVE_ASM_SSE2], [test x$have_asm_sse2 = xtrue])
|
||||||
|
m4trace:configure.ac:663: -1- AC_SUBST([HAVE_ASM_SSE2_TRUE])
|
||||||
|
m4trace:configure.ac:663: -1- AC_SUBST([HAVE_ASM_SSE2_FALSE])
|
||||||
|
m4trace:configure.ac:664: -1- AM_CONDITIONAL([HAVE_ASM_NASM], [test x$have_asm_nasm = xtrue])
|
||||||
|
m4trace:configure.ac:664: -1- AC_SUBST([HAVE_ASM_NASM_TRUE])
|
||||||
|
m4trace:configure.ac:664: -1- AC_SUBST([HAVE_ASM_NASM_FALSE])
|
||||||
|
m4trace:configure.ac:665: -1- AM_CONDITIONAL([HAVE_MMX], [test x$have_asm_mmx = xtrue])
|
||||||
|
m4trace:configure.ac:665: -1- AC_SUBST([HAVE_MMX_TRUE])
|
||||||
|
m4trace:configure.ac:665: -1- AC_SUBST([HAVE_MMX_FALSE])
|
||||||
|
m4trace:configure.ac:666: -1- AM_CONDITIONAL([HAVE_SSE], [test x$have_asm_sse = xtrue])
|
||||||
|
m4trace:configure.ac:666: -1- AC_SUBST([HAVE_SSE_TRUE])
|
||||||
|
m4trace:configure.ac:666: -1- AC_SUBST([HAVE_SSE_FALSE])
|
||||||
|
m4trace:configure.ac:667: -1- AM_CONDITIONAL([HAVE_SSE2], [test x$have_asm_sse2 = xtrue])
|
||||||
|
m4trace:configure.ac:667: -1- AC_SUBST([HAVE_SSE2_TRUE])
|
||||||
|
m4trace:configure.ac:667: -1- AC_SUBST([HAVE_SSE2_FALSE])
|
||||||
|
m4trace:configure.ac:668: -1- AM_CONDITIONAL([HAVE_MMX2], [test x$have_asm_mmx2 = xtrue])
|
||||||
|
m4trace:configure.ac:668: -1- AC_SUBST([HAVE_MMX2_TRUE])
|
||||||
|
m4trace:configure.ac:668: -1- AC_SUBST([HAVE_MMX2_FALSE])
|
||||||
|
m4trace:configure.ac:669: -1- AM_CONDITIONAL([HAVE_XML2], [test x$have_xml2 = xtrue])
|
||||||
|
m4trace:configure.ac:669: -1- AC_SUBST([HAVE_XML2_TRUE])
|
||||||
|
m4trace:configure.ac:669: -1- AC_SUBST([HAVE_XML2_FALSE])
|
||||||
|
m4trace:configure.ac:670: -1- AM_CONDITIONAL([HAVE_JACK], [test x$have_jack = xtrue])
|
||||||
|
m4trace:configure.ac:670: -1- AC_SUBST([HAVE_JACK_TRUE])
|
||||||
|
m4trace:configure.ac:670: -1- AC_SUBST([HAVE_JACK_FALSE])
|
||||||
|
m4trace:configure.ac:671: -1- AM_CONDITIONAL([HAVE_V4L], [test x$have_v4l = xtrue])
|
||||||
|
m4trace:configure.ac:671: -1- AC_SUBST([HAVE_V4L_TRUE])
|
||||||
|
m4trace:configure.ac:671: -1- AC_SUBST([HAVE_V4L_FALSE])
|
||||||
|
m4trace:configure.ac:672: -1- AM_CONDITIONAL([SUPPORT_READ_DV2], [test x$have_libdv = xtrue])
|
||||||
|
m4trace:configure.ac:672: -1- AC_SUBST([SUPPORT_READ_DV2_TRUE])
|
||||||
|
m4trace:configure.ac:672: -1- AC_SUBST([SUPPORT_READ_DV2_FALSE])
|
||||||
|
m4trace:configure.ac:673: -1- AM_CONDITIONAL([HAVE_DL_DLOPEN], [test x$have_dl_dlopen = xtrue])
|
||||||
|
m4trace:configure.ac:673: -1- AC_SUBST([HAVE_DL_DLOPEN_TRUE])
|
||||||
|
m4trace:configure.ac:673: -1- AC_SUBST([HAVE_DL_DLOPEN_FALSE])
|
||||||
|
m4trace:configure.ac:725: -1- AC_DEFINE_TRACE_LITERAL([VEEJAY])
|
||||||
|
m4trace:configure.ac:725: -1- AH_OUTPUT([VEEJAY], [/* Building veejay */
|
||||||
|
#undef VEEJAY])
|
||||||
|
m4trace:configure.ac:747: -1- AC_CONFIG_FILES([
|
||||||
|
Makefile
|
||||||
|
libOSC/Makefile
|
||||||
|
libhash/Makefile
|
||||||
|
libvjmsg/Makefile
|
||||||
|
libvevo/Makefile
|
||||||
|
libvjmem/Makefile
|
||||||
|
libplugger/Makefile
|
||||||
|
libvjnet/Makefile
|
||||||
|
libyuv/Makefile
|
||||||
|
libel/Makefile
|
||||||
|
bio2jack/Makefile
|
||||||
|
vevosample/Makefile
|
||||||
|
veejay/Makefile
|
||||||
|
man/Makefile
|
||||||
|
veejay-config
|
||||||
|
veejay.pc
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:748: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
|
||||||
|
m4trace:configure.ac:748: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
|
||||||
|
m4trace:configure.ac:750: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
|
||||||
4
veejay-ng/bio2jack/AUTHORS
Normal file
4
veejay-ng/bio2jack/AUTHORS
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
bio2jack - a library for porting blocked io(OSS/ALSA) apps to jack
|
||||||
|
---------------------------------------------------------
|
||||||
|
|
||||||
|
Chris Morgan <cmorgan@alum.wpi.edu>
|
||||||
339
veejay-ng/bio2jack/COPYING
Normal file
339
veejay-ng/bio2jack/COPYING
Normal file
@@ -0,0 +1,339 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
675 Mass Ave, Cambridge, MA 02139, 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
|
||||||
|
|
||||||
|
Appendix: 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) 19yy <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., 675 Mass Ave, Cambridge, MA 02139, 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) 19yy 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.
|
||||||
6
veejay-ng/bio2jack/INSTALL
Normal file
6
veejay-ng/bio2jack/INSTALL
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
Installing bio2jack
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
This library is intended only for static linking as it is small and there
|
||||||
|
is no need to require yet another library for a user to install. So
|
||||||
|
please, statically link to this library.
|
||||||
4
veejay-ng/bio2jack/Makefile.am
Normal file
4
veejay-ng/bio2jack/Makefile.am
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
noinst_LTLIBRARIES = libbio2jack.la
|
||||||
|
AM_CFLAGS = -Wall
|
||||||
|
LIBS = @LIBS@ @PTHREAD_LIBS@ @JACK_LIBS@
|
||||||
|
libbio2jack_la_SOURCES = bio2jack.c bio2jack.h
|
||||||
501
veejay-ng/bio2jack/Makefile.in
Normal file
501
veejay-ng/bio2jack/Makefile.in
Normal file
@@ -0,0 +1,501 @@
|
|||||||
|
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
SOURCES = $(libbio2jack_la_SOURCES)
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
target_triplet = @target@
|
||||||
|
subdir = bio2jack
|
||||||
|
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||||
|
AUTHORS COPYING INSTALL NEWS
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||||
|
libbio2jack_la_LIBADD =
|
||||||
|
am_libbio2jack_la_OBJECTS = bio2jack.lo
|
||||||
|
libbio2jack_la_OBJECTS = $(am_libbio2jack_la_OBJECTS)
|
||||||
|
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(libbio2jack_la_SOURCES)
|
||||||
|
DIST_SOURCES = $(libbio2jack_la_SOURCES)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
ALTIVEC_CFLAGS = @ALTIVEC_CFLAGS@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AS = @AS@
|
||||||
|
ASFLAGS = @ASFLAGS@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCAS = @CCAS@
|
||||||
|
CCASFLAGS = @CCASFLAGS@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
FFLAGS = @FFLAGS@
|
||||||
|
FFMPEG_AVCODEC_CFLAGS = @FFMPEG_AVCODEC_CFLAGS@
|
||||||
|
FFMPEG_AVCODEC_LIBS = @FFMPEG_AVCODEC_LIBS@
|
||||||
|
FFMPEG_AVFORMAT_CFLAGS = @FFMPEG_AVFORMAT_CFLAGS@
|
||||||
|
FFMPEG_AVFORMAT_LIBS = @FFMPEG_AVFORMAT_LIBS@
|
||||||
|
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||||
|
GLIB_CONFIG = @GLIB_CONFIG@
|
||||||
|
GLIB_LIBS = @GLIB_LIBS@
|
||||||
|
GL_CFLAGS = @GL_CFLAGS@
|
||||||
|
GL_LIBS = @GL_LIBS@
|
||||||
|
HAVE_ALTIVEC_FALSE = @HAVE_ALTIVEC_FALSE@
|
||||||
|
HAVE_ALTIVEC_TRUE = @HAVE_ALTIVEC_TRUE@
|
||||||
|
HAVE_ASM_MMX2_FALSE = @HAVE_ASM_MMX2_FALSE@
|
||||||
|
HAVE_ASM_MMX2_TRUE = @HAVE_ASM_MMX2_TRUE@
|
||||||
|
HAVE_ASM_MMX_FALSE = @HAVE_ASM_MMX_FALSE@
|
||||||
|
HAVE_ASM_MMX_TRUE = @HAVE_ASM_MMX_TRUE@
|
||||||
|
HAVE_ASM_NASM_FALSE = @HAVE_ASM_NASM_FALSE@
|
||||||
|
HAVE_ASM_NASM_TRUE = @HAVE_ASM_NASM_TRUE@
|
||||||
|
HAVE_ASM_SSE2_FALSE = @HAVE_ASM_SSE2_FALSE@
|
||||||
|
HAVE_ASM_SSE2_TRUE = @HAVE_ASM_SSE2_TRUE@
|
||||||
|
HAVE_ASM_SSE_FALSE = @HAVE_ASM_SSE_FALSE@
|
||||||
|
HAVE_ASM_SSE_TRUE = @HAVE_ASM_SSE_TRUE@
|
||||||
|
HAVE_DL_DLOPEN_FALSE = @HAVE_DL_DLOPEN_FALSE@
|
||||||
|
HAVE_DL_DLOPEN_TRUE = @HAVE_DL_DLOPEN_TRUE@
|
||||||
|
HAVE_JACK_FALSE = @HAVE_JACK_FALSE@
|
||||||
|
HAVE_JACK_TRUE = @HAVE_JACK_TRUE@
|
||||||
|
HAVE_MMX2_FALSE = @HAVE_MMX2_FALSE@
|
||||||
|
HAVE_MMX2_TRUE = @HAVE_MMX2_TRUE@
|
||||||
|
HAVE_MMX_FALSE = @HAVE_MMX_FALSE@
|
||||||
|
HAVE_MMX_TRUE = @HAVE_MMX_TRUE@
|
||||||
|
HAVE_PPCCPU_FALSE = @HAVE_PPCCPU_FALSE@
|
||||||
|
HAVE_PPCCPU_TRUE = @HAVE_PPCCPU_TRUE@
|
||||||
|
HAVE_SDL_FALSE = @HAVE_SDL_FALSE@
|
||||||
|
HAVE_SDL_TRUE = @HAVE_SDL_TRUE@
|
||||||
|
HAVE_SSE2_FALSE = @HAVE_SSE2_FALSE@
|
||||||
|
HAVE_SSE2_TRUE = @HAVE_SSE2_TRUE@
|
||||||
|
HAVE_SSE_FALSE = @HAVE_SSE_FALSE@
|
||||||
|
HAVE_SSE_TRUE = @HAVE_SSE_TRUE@
|
||||||
|
HAVE_V4L_FALSE = @HAVE_V4L_FALSE@
|
||||||
|
HAVE_V4L_TRUE = @HAVE_V4L_TRUE@
|
||||||
|
HAVE_X86CPU_FALSE = @HAVE_X86CPU_FALSE@
|
||||||
|
HAVE_X86CPU_TRUE = @HAVE_X86CPU_TRUE@
|
||||||
|
HAVE_XML2_FALSE = @HAVE_XML2_FALSE@
|
||||||
|
HAVE_XML2_TRUE = @HAVE_XML2_TRUE@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBDV_CFLAGS = @LIBDV_CFLAGS@
|
||||||
|
LIBDV_LIBS = @LIBDV_LIBS@
|
||||||
|
LIBGETOPT_LIB = @LIBGETOPT_LIB@
|
||||||
|
LIBM_LIBS = @LIBM_LIBS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@ @PTHREAD_LIBS@ @JACK_LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
LT_AGE = @LT_AGE@
|
||||||
|
LT_CURRENT = @LT_CURRENT@
|
||||||
|
LT_RELEASE = @LT_RELEASE@
|
||||||
|
LT_REVISION = @LT_REVISION@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MJPEGTOOLS_CFLAGS = @MJPEGTOOLS_CFLAGS@
|
||||||
|
MJPEGTOOLS_LIBS = @MJPEGTOOLS_LIBS@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PROGRAM_NOPIC = @PROGRAM_NOPIC@
|
||||||
|
PTHREAD_LIBS = @PTHREAD_LIBS@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SDL_CFLAGS = @SDL_CFLAGS@
|
||||||
|
SDL_CONFIG = @SDL_CONFIG@
|
||||||
|
SDL_LIBS = @SDL_LIBS@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
SUPPORT_READ_DV2_FALSE = @SUPPORT_READ_DV2_FALSE@
|
||||||
|
SUPPORT_READ_DV2_TRUE = @SUPPORT_READ_DV2_TRUE@
|
||||||
|
V4LCONF_LIBS = @V4LCONF_LIBS@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
XML2_CONFIG = @XML2_CONFIG@
|
||||||
|
XML_CPPFLAGS = @XML_CPPFLAGS@
|
||||||
|
XML_LIBS = @XML_LIBS@
|
||||||
|
ac_ct_AR = @ac_ct_AR@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||||
|
ac_ct_STRIP = @ac_ct_STRIP@
|
||||||
|
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target = @target@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
target_cpu = @target_cpu@
|
||||||
|
target_os = @target_os@
|
||||||
|
target_vendor = @target_vendor@
|
||||||
|
noinst_LTLIBRARIES = libbio2jack.la
|
||||||
|
AM_CFLAGS = -Wall
|
||||||
|
libbio2jack_la_SOURCES = bio2jack.c bio2jack.h
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .c .lo .o .obj
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bio2jack/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu bio2jack/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
clean-noinstLTLIBRARIES:
|
||||||
|
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||||
|
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
|
rm -f "$${dir}/so_locations"; \
|
||||||
|
done
|
||||||
|
libbio2jack.la: $(libbio2jack_la_OBJECTS) $(libbio2jack_la_DEPENDENCIES)
|
||||||
|
$(LINK) $(libbio2jack_la_LDFLAGS) $(libbio2jack_la_OBJECTS) $(libbio2jack_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bio2jack.Plo@am__quote@
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||||
|
|
||||||
|
.c.obj:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
|
uninstall-info-am:
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$tags $$unique; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$tags $$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(LTLIBRARIES)
|
||||||
|
installdirs:
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
|
||||||
|
mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||||
|
clean-libtool clean-noinstLTLIBRARIES ctags distclean \
|
||||||
|
distclean-compile distclean-generic distclean-libtool \
|
||||||
|
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am install-man \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
|
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||||
|
pdf pdf-am ps ps-am tags uninstall uninstall-am \
|
||||||
|
uninstall-info-am
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
10
veejay-ng/bio2jack/NEWS
Normal file
10
veejay-ng/bio2jack/NEWS
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
bio2jack - NEWS
|
||||||
|
--------
|
||||||
|
9/12/2004 - Check out ChangeLog for news ;-)
|
||||||
|
10/26/2003 - Updated to the new jack api, fixed a bunch of bugs
|
||||||
|
Removed all blocking functions, blocking is BAD as it could potentially
|
||||||
|
hold off the callback function.
|
||||||
|
1/13/2003 - Continuing to refine the api by working on the xine plugin.
|
||||||
|
Fixed a few bugs in the code. Uploaded newer packages to
|
||||||
|
sourceforge.
|
||||||
|
12/31/2002 - Sourceforge project is setup.
|
||||||
30
veejay-ng/bio2jack/README
Normal file
30
veejay-ng/bio2jack/README
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
bio2jack
|
||||||
|
-----------
|
||||||
|
|
||||||
|
To Build:
|
||||||
|
----------
|
||||||
|
run ./autogen.sh
|
||||||
|
run ./configure
|
||||||
|
run make
|
||||||
|
enjoy ;-)
|
||||||
|
|
||||||
|
|
||||||
|
Bio(blocked i/o) 2 jack.
|
||||||
|
|
||||||
|
A library for enabling easy porting of blocked io(OSS/ALSA) applications to
|
||||||
|
the jack sound server(http://jackit.sourceforge.net). This library allows the
|
||||||
|
person porting the code to simply replace the calls into OSS/ALSA with
|
||||||
|
calls into interface functions of this library. The library buffers a
|
||||||
|
small amount of audio data and takes care of the rest of the jack
|
||||||
|
implementation including the linked list of audio data buffers and the jack
|
||||||
|
callback.
|
||||||
|
|
||||||
|
Interface functions:
|
||||||
|
TODO: once these become stable copy and paste from the header file
|
||||||
|
|
||||||
|
|
||||||
|
Currently these drivers use the bio2jack library:
|
||||||
|
---------------------------------------------------
|
||||||
|
xmms-jack: Written in conjunction with this library
|
||||||
|
xine:
|
||||||
|
|
||||||
1738
veejay-ng/bio2jack/bio2jack.c
Normal file
1738
veejay-ng/bio2jack/bio2jack.c
Normal file
File diff suppressed because it is too large
Load Diff
103
veejay-ng/bio2jack/bio2jack.h
Normal file
103
veejay-ng/bio2jack/bio2jack.h
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2003 Chris Morgan <cmorgan@alum.wpi.edu>
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _H_JACK_OUT_H
|
||||||
|
#define _H_JACK_OUT_H
|
||||||
|
|
||||||
|
#include <jack/jack.h>
|
||||||
|
|
||||||
|
#define bool long
|
||||||
|
|
||||||
|
#ifndef TRUE
|
||||||
|
#define TRUE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef FALSE
|
||||||
|
#define FALSE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ERR_SUCCESS 0
|
||||||
|
#define ERR_OPENING_JACK 1
|
||||||
|
#define ERR_RATE_MISMATCH 2
|
||||||
|
#define ERR_BYTES_PER_OUTPUT_FRAME_INVALID 3
|
||||||
|
#define ERR_BYTES_PER_INPUT_FRAME_INVALID 4
|
||||||
|
#define ERR_TOO_MANY_OUTPUT_CHANNELS 5
|
||||||
|
#define ERR_PORT_NAME_OUTPUT_CHANNEL_MISMATCH 6
|
||||||
|
#define ERR_PORT_NOT_FOUND 7
|
||||||
|
|
||||||
|
enum status_enum { PLAYING, PAUSED, STOPPED, CLOSED, RESET };
|
||||||
|
enum pos_enum { BYTES, MILLISECONDS };
|
||||||
|
|
||||||
|
#define PLAYED 1 /* played out of the speakers(estimated value but should be close */
|
||||||
|
#define WRITTEN_TO_JACK 2 /* amount written out to jack */
|
||||||
|
#define WRITTEN 3 /* amount written to the bio2jack device */
|
||||||
|
|
||||||
|
/**********************/
|
||||||
|
/* External functions */
|
||||||
|
void JACK_Init(void); /* call this before any other bio2jack calls */
|
||||||
|
int JACK_Open(int *deviceID, unsigned int bits_per_sample, unsigned long *rate, int channels);
|
||||||
|
int JACK_OpenEx(int *deviceID, unsigned int bits_per_channel,
|
||||||
|
unsigned long *rate,
|
||||||
|
unsigned int input_channels, unsigned int output_channels,
|
||||||
|
char **jack_port_name, unsigned int jack_port_name_count,
|
||||||
|
unsigned long jack_port_flags);
|
||||||
|
int JACK_Close(int deviceID); /* return 0 for success */
|
||||||
|
void JACK_Reset(int deviceID); /* free all buffered data and reset several values in the device */
|
||||||
|
long JACK_Write(int deviceID, char *data, unsigned long bytes); /* returns the number of bytes written */
|
||||||
|
|
||||||
|
/* state setting values */
|
||||||
|
/* set/get the written/played/buffered value based on a byte or millisecond input value */
|
||||||
|
long JACK_GetPosition(int deviceID, enum pos_enum position, int type);
|
||||||
|
void JACK_SetPosition(int deviceID, enum pos_enum position, long value);
|
||||||
|
|
||||||
|
long JACK_GetJackLatency(int deviceID); /* return the latency in milliseconds of jack */
|
||||||
|
|
||||||
|
int JACK_SetState(int deviceID, enum status_enum state); /* playing, paused, stopped */
|
||||||
|
enum status_enum JACK_GetState(int deviceID);
|
||||||
|
|
||||||
|
long JACK_GetMaxBufferedBytes(int deviceID);
|
||||||
|
void JACK_SetMaxBufferedBytes(int deviceID, long max_buffered_bytes); /* set the max number of bytes the jack driver should buffer */
|
||||||
|
|
||||||
|
/* Properties of the jack driver */
|
||||||
|
|
||||||
|
/* linear means 0 volume is silence, 100 is full volume */
|
||||||
|
/* dbAttenuation means 0 volume is 0dB attenuation */
|
||||||
|
/* Bio2jack defaults to linear */
|
||||||
|
enum JACK_VOLUME_TYPE { linear, dbAttenuation };
|
||||||
|
enum JACK_VOLUME_TYPE JACK_SetVolumeEffectType(int deviceID,
|
||||||
|
enum JACK_VOLUME_TYPE type);
|
||||||
|
|
||||||
|
int JACK_SetAllVolume(int deviceID, unsigned int volume); /* returns 0 on success */
|
||||||
|
int JACK_SetVolumeForChannel(int deviceID, unsigned int channel, unsigned int volume);
|
||||||
|
void JACK_GetVolumeForChannel(int deviceID, unsigned int channel, unsigned int *volume);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
long JACK_GetOutputBytesPerSecond(int deviceID); /* bytes_per_frame * sample_rate */
|
||||||
|
long JACK_GetInputBytesPerSecond(int deviceID); /* bytes_per_frame * sample_rate */
|
||||||
|
long JACK_GetBytesStored(int deviceID); /* bytes currently buffered in the device */
|
||||||
|
long JACK_GetBytesFreeSpace(int deviceID); /* bytes of free space in the buffers */
|
||||||
|
long JACK_GetBytesPerOutputFrame(int deviceID);
|
||||||
|
int JACK_GetNumInputChannels(int deviceID);
|
||||||
|
int JACK_SetNumInputChannels(int deviceID, int channels);
|
||||||
|
int JACK_GetNumOutputChannels(int deviceID);
|
||||||
|
int JACK_SetNumOutputChannels(int deviceID, int channels);
|
||||||
|
long JACK_GetSampleRate(int deviceID); /* samples per second */
|
||||||
|
long JACK_OutputStatus(int deviceID, long int *sec, long int *usec);
|
||||||
|
#endif /* #ifndef JACK_OUT_H */
|
||||||
|
|
||||||
142
veejay-ng/compile
Executable file
142
veejay-ng/compile
Executable file
@@ -0,0 +1,142 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Wrapper for compilers which do not understand `-c -o'.
|
||||||
|
|
||||||
|
scriptversion=2005-02-03.08
|
||||||
|
|
||||||
|
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
|
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||||
|
#
|
||||||
|
# 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, 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.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# This file is maintained in Automake, please report
|
||||||
|
# bugs to <bug-automake@gnu.org> or send patches to
|
||||||
|
# <automake-patches@gnu.org>.
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
'')
|
||||||
|
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
-h | --h*)
|
||||||
|
cat <<\EOF
|
||||||
|
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||||
|
|
||||||
|
Wrapper for compilers which do not understand `-c -o'.
|
||||||
|
Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||||
|
arguments, and rename the output as expected.
|
||||||
|
|
||||||
|
If you are trying to build a whole package this is not the
|
||||||
|
right script to run: please start by reading the file `INSTALL'.
|
||||||
|
|
||||||
|
Report bugs to <bug-automake@gnu.org>.
|
||||||
|
EOF
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
-v | --v*)
|
||||||
|
echo "compile $scriptversion"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
ofile=
|
||||||
|
cfile=
|
||||||
|
eat=
|
||||||
|
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$eat"; then
|
||||||
|
eat=
|
||||||
|
else
|
||||||
|
case $1 in
|
||||||
|
-o)
|
||||||
|
# configure might choose to run compile as `compile cc -o foo foo.c'.
|
||||||
|
# So we strip `-o arg' only if arg is an object.
|
||||||
|
eat=1
|
||||||
|
case $2 in
|
||||||
|
*.o | *.obj)
|
||||||
|
ofile=$2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" -o "$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*.c)
|
||||||
|
cfile=$1
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -z "$ofile" || test -z "$cfile"; then
|
||||||
|
# If no `-o' option was seen then we might have been invoked from a
|
||||||
|
# pattern rule where we don't need one. That is ok -- this is a
|
||||||
|
# normal compilation that the losing compiler can handle. If no
|
||||||
|
# `.c' file was seen then we are probably linking. That is also
|
||||||
|
# ok.
|
||||||
|
exec "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Name of file we expect compiler to create.
|
||||||
|
cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
|
||||||
|
|
||||||
|
# Create the lock directory.
|
||||||
|
# Note: use `[/.-]' here to ensure that we don't use the same name
|
||||||
|
# that we are using for the .o file. Also, base the name on the expected
|
||||||
|
# object file name, since that is what matters with a parallel build.
|
||||||
|
lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
|
||||||
|
while true; do
|
||||||
|
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
# FIXME: race condition here if user kills between mkdir and trap.
|
||||||
|
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||||
|
|
||||||
|
# Run the compile.
|
||||||
|
"$@"
|
||||||
|
ret=$?
|
||||||
|
|
||||||
|
if test -f "$cofile"; then
|
||||||
|
mv "$cofile" "$ofile"
|
||||||
|
elif test -f "${cofile}bj"; then
|
||||||
|
mv "${cofile}bj" "$ofile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rmdir "$lockdir"
|
||||||
|
exit $ret
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-end: "$"
|
||||||
|
# End:
|
||||||
1465
veejay-ng/config.guess
vendored
Executable file
1465
veejay-ng/config.guess
vendored
Executable file
File diff suppressed because it is too large
Load Diff
259
veejay-ng/config.h.in
Normal file
259
veejay-ng/config.h.in
Normal file
@@ -0,0 +1,259 @@
|
|||||||
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
/* Compiling for MIPS CPU */
|
||||||
|
#undef ARCH_MIPS
|
||||||
|
|
||||||
|
/* Compiling for PowerPC */
|
||||||
|
#undef ARCH_PPC
|
||||||
|
|
||||||
|
/* Compiling for x86 architecture */
|
||||||
|
#undef ARCH_X86
|
||||||
|
|
||||||
|
/* Compiling for x86-64 architecture CPU */
|
||||||
|
#undef ARCH_X86_64
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <alloca.h> header file. */
|
||||||
|
#undef HAVE_ALLOCA_H
|
||||||
|
|
||||||
|
/* Inline PPC Altivec primitives available */
|
||||||
|
#undef HAVE_ALTIVEC
|
||||||
|
|
||||||
|
/* Compiling in 3Dnow */
|
||||||
|
#undef HAVE_ASM_3DNOW
|
||||||
|
|
||||||
|
/* Compiling in MMX support */
|
||||||
|
#undef HAVE_ASM_MMX
|
||||||
|
|
||||||
|
/* Compiling in MMX2 */
|
||||||
|
#undef HAVE_ASM_MMX2
|
||||||
|
|
||||||
|
/* Compiling with nasm */
|
||||||
|
#undef HAVE_ASM_NASM
|
||||||
|
|
||||||
|
/* Compiling in SSE support */
|
||||||
|
#undef HAVE_ASM_SSE
|
||||||
|
|
||||||
|
/* Compiling in SSE2 support */
|
||||||
|
#undef HAVE_ASM_SSE2
|
||||||
|
|
||||||
|
/* use avcodec */
|
||||||
|
#undef HAVE_AVCODEC
|
||||||
|
|
||||||
|
/* use avformat */
|
||||||
|
#undef HAVE_AVFORMAT
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `bzero' function. */
|
||||||
|
#undef HAVE_BZERO
|
||||||
|
|
||||||
|
/* Compiling in CMOV */
|
||||||
|
#undef HAVE_CMOV
|
||||||
|
|
||||||
|
/* MAC OS X Darin */
|
||||||
|
#undef HAVE_DARWIN
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#undef HAVE_DLFCN_H
|
||||||
|
|
||||||
|
/* Compile with dlopen support */
|
||||||
|
#undef HAVE_DL_DLOPEN
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fenv.h> header file. */
|
||||||
|
#undef HAVE_FENV_H
|
||||||
|
|
||||||
|
/* long getopt support */
|
||||||
|
#undef HAVE_GETOPT_LONG
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `getpagesize' function. */
|
||||||
|
#undef HAVE_GETPAGESIZE
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `gettimeofday' function. */
|
||||||
|
#undef HAVE_GETTIMEOFDAY
|
||||||
|
|
||||||
|
/* Glib library present */
|
||||||
|
#undef HAVE_GLIB
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <GL/glut.h> header file. */
|
||||||
|
#undef HAVE_GL_GLUT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <GL/gl.h> header file. */
|
||||||
|
#undef HAVE_GL_GL_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `dl' library (-ldl). */
|
||||||
|
#undef HAVE_LIBDL
|
||||||
|
|
||||||
|
/* Compiling with pthread library */
|
||||||
|
#undef HAVE_LIBPTHREAD
|
||||||
|
|
||||||
|
/* libxf86dga is present */
|
||||||
|
#undef HAVE_LIBXXF86DGA
|
||||||
|
|
||||||
|
/* Linux platform */
|
||||||
|
#undef HAVE_LINUX
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `memalign' function. */
|
||||||
|
#undef HAVE_MEMALIGN
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `memcpy' function. */
|
||||||
|
#undef HAVE_MEMCPY
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `memset' function. */
|
||||||
|
#undef HAVE_MEMSET
|
||||||
|
|
||||||
|
/* Compiling for MIPS CPU */
|
||||||
|
#undef HAVE_MIPS
|
||||||
|
|
||||||
|
/* MJPEGTools installed */
|
||||||
|
#undef HAVE_MJPEGTOOLS
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `mmap' function. */
|
||||||
|
#undef HAVE_MMAP
|
||||||
|
|
||||||
|
/* Compiling in MMX support in ffmpeg */
|
||||||
|
#undef HAVE_MMX
|
||||||
|
|
||||||
|
/* Compiling in MMX2 */
|
||||||
|
#undef HAVE_MMX2
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `posix_memalign' function. */
|
||||||
|
#undef HAVE_POSIX_MEMALIGN
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `pow' function. */
|
||||||
|
#undef HAVE_POW
|
||||||
|
|
||||||
|
/* Compiling for PowerPC CPU */
|
||||||
|
#undef HAVE_PPCCPU
|
||||||
|
|
||||||
|
/* Compile for playstation2 */
|
||||||
|
#undef HAVE_PS2
|
||||||
|
|
||||||
|
/* Using pthread stack size */
|
||||||
|
#undef HAVE_PTHREADSTACKSIZE
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sched_get_priority_max' function. */
|
||||||
|
#undef HAVE_SCHED_GET_PRIORITY_MAX
|
||||||
|
|
||||||
|
/* SDL library present */
|
||||||
|
#undef HAVE_SDL
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `select' function. */
|
||||||
|
#undef HAVE_SELECT
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `socket' function. */
|
||||||
|
#undef HAVE_SOCKET
|
||||||
|
|
||||||
|
/* Compiling in SSE support */
|
||||||
|
#undef HAVE_SSE
|
||||||
|
|
||||||
|
/* Compiling in SSE2 support */
|
||||||
|
#undef HAVE_SSE2
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strncasecmp' function. */
|
||||||
|
#undef HAVE_STRNCASECMP
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strndup' function. */
|
||||||
|
#undef HAVE_STRNDUP
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strstr' function. */
|
||||||
|
#undef HAVE_STRSTR
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/* Building for Linux - using the video4linux API */
|
||||||
|
#undef HAVE_V4L
|
||||||
|
|
||||||
|
/* Compiling for x86 architecture CPU */
|
||||||
|
#undef HAVE_X86CPU
|
||||||
|
|
||||||
|
/* Compiling for x86-64 architecture CPU */
|
||||||
|
#undef HAVE_X86_CPU
|
||||||
|
|
||||||
|
/* Compiling with XML2 */
|
||||||
|
#undef HAVE_XML2
|
||||||
|
|
||||||
|
/* Is __progname defined by system? */
|
||||||
|
#undef HAVE___PROGNAME
|
||||||
|
|
||||||
|
/* Name of package */
|
||||||
|
#undef PACKAGE
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION
|
||||||
|
|
||||||
|
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||||
|
#undef RETSIGTYPE
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
|
/* libdv is present */
|
||||||
|
#undef SUPPORT_READ_DV2
|
||||||
|
|
||||||
|
/* Compiling in a video output X screen */
|
||||||
|
#undef USE_DISPLAY
|
||||||
|
|
||||||
|
/* Building veejay */
|
||||||
|
#undef VEEJAY
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
#undef VERSION
|
||||||
|
|
||||||
|
/* Define to 1 if your processor stores words with the most significant byte
|
||||||
|
first (like Motorola and SPARC, unlike Intel and VAX). */
|
||||||
|
#undef WORDS_BIGENDIAN
|
||||||
|
|
||||||
|
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||||
|
#undef _FILE_OFFSET_BITS
|
||||||
|
|
||||||
|
/* Enable GNU extensions on systems that have them. */
|
||||||
|
#ifndef _GNU_SOURCE
|
||||||
|
# undef _GNU_SOURCE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Define for large files, on AIX-style hosts. */
|
||||||
|
#undef _LARGE_FILES
|
||||||
|
|
||||||
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
|
#undef const
|
||||||
|
|
||||||
|
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||||
|
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||||
|
#ifndef __cplusplus
|
||||||
|
#undef inline
|
||||||
|
#endif
|
||||||
513
veejay-ng/config.rpath
Executable file
513
veejay-ng/config.rpath
Executable file
@@ -0,0 +1,513 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Output a system dependent set of variables, describing how to set the
|
||||||
|
# run time search path of shared libraries in an executable.
|
||||||
|
#
|
||||||
|
# Copyright 1996-2002 Free Software Foundation, Inc.
|
||||||
|
# Taken from GNU libtool, 2001
|
||||||
|
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
#
|
||||||
|
# The first argument passed to this file is the canonical host specification,
|
||||||
|
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
||||||
|
# or
|
||||||
|
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||||
|
# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
|
||||||
|
# should be set by the caller.
|
||||||
|
#
|
||||||
|
# The set of defined variables is at the end of this script.
|
||||||
|
|
||||||
|
# All known linkers require a `.a' archive for static linking (except M$VC,
|
||||||
|
# which needs '.lib').
|
||||||
|
libext=a
|
||||||
|
shlibext=
|
||||||
|
|
||||||
|
host="$1"
|
||||||
|
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
||||||
|
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
|
||||||
|
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
||||||
|
|
||||||
|
wl=
|
||||||
|
if test "$GCC" = yes; then
|
||||||
|
wl='-Wl,'
|
||||||
|
else
|
||||||
|
case "$host_os" in
|
||||||
|
aix3* | aix4* | aix5*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
hpux9* | hpux10* | hpux11*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
irix5* | irix6*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
linux*)
|
||||||
|
echo '__INTEL_COMPILER' > conftest.$ac_ext
|
||||||
|
if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null
|
||||||
|
then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
# Intel icc
|
||||||
|
wl='-Qoption,ld,'
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
osf3* | osf4* | osf5*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
solaris*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
sunos4*)
|
||||||
|
wl='-Qoption ld '
|
||||||
|
;;
|
||||||
|
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
|
||||||
|
if test "x$host_vendor" = xsni; then
|
||||||
|
wl='-LD'
|
||||||
|
else
|
||||||
|
wl='-Wl,'
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
hardcode_libdir_flag_spec=
|
||||||
|
hardcode_libdir_separator=
|
||||||
|
hardcode_direct=no
|
||||||
|
hardcode_minus_L=no
|
||||||
|
|
||||||
|
case "$host_os" in
|
||||||
|
cygwin* | mingw* | pw32*)
|
||||||
|
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
||||||
|
# When not using gcc, we currently assume that we are using
|
||||||
|
# Microsoft Visual C++.
|
||||||
|
if test "$GCC" != yes; then
|
||||||
|
with_gnu_ld=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
openbsd*)
|
||||||
|
with_gnu_ld=no
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
ld_shlibs=yes
|
||||||
|
if test "$with_gnu_ld" = yes; then
|
||||||
|
case "$host_os" in
|
||||||
|
aix3* | aix4* | aix5*)
|
||||||
|
# On AIX, the GNU linker is very broken
|
||||||
|
ld_shlibs=no
|
||||||
|
;;
|
||||||
|
amigaos*)
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
# Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
|
||||||
|
# that the semantics of dynamic libraries on AmigaOS, at least up
|
||||||
|
# to version 4, is to share data among multiple programs linked
|
||||||
|
# with the same dynamic library. Since this doesn't match the
|
||||||
|
# behavior of shared libraries on other platforms, we can use
|
||||||
|
# them.
|
||||||
|
ld_shlibs=no
|
||||||
|
;;
|
||||||
|
beos*)
|
||||||
|
if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
ld_shlibs=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
cygwin* | mingw* | pw32*)
|
||||||
|
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||||
|
# no search path for DLLs.
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
;;
|
||||||
|
solaris* | sysv5*)
|
||||||
|
if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
|
||||||
|
ld_shlibs=no
|
||||||
|
elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
ld_shlibs=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
sunos4*)
|
||||||
|
hardcode_direct=yes
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
ld_shlibs=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if test "$ld_shlibs" = yes; then
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
case "$host_os" in
|
||||||
|
aix3*)
|
||||||
|
# Note: this linker hardcodes the directories in LIBPATH if there
|
||||||
|
# are no directories specified by -L.
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
if test "$GCC" = yes; then
|
||||||
|
# Neither direct hardcoding nor static linking is supported with a
|
||||||
|
# broken collect2.
|
||||||
|
hardcode_direct=unsupported
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
aix4* | aix5*)
|
||||||
|
if test "$host_cpu" = ia64; then
|
||||||
|
# On IA64, the linker does run time linking by default, so we don't
|
||||||
|
# have to do anything special.
|
||||||
|
aix_use_runtimelinking=no
|
||||||
|
else
|
||||||
|
aix_use_runtimelinking=no
|
||||||
|
# Test if we are trying to use run time linking or normal
|
||||||
|
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
|
||||||
|
# need to do runtime linking.
|
||||||
|
case $host_os in aix4.[23]|aix4.[23].*|aix5*)
|
||||||
|
for ld_flag in $LDFLAGS; do
|
||||||
|
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
|
||||||
|
aix_use_runtimelinking=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
hardcode_direct=yes
|
||||||
|
hardcode_libdir_separator=':'
|
||||||
|
if test "$GCC" = yes; then
|
||||||
|
case $host_os in aix4.[012]|aix4.[012].*)
|
||||||
|
collect2name=`${CC} -print-prog-name=collect2`
|
||||||
|
if test -f "$collect2name" && \
|
||||||
|
strings "$collect2name" | grep resolve_lib_name >/dev/null
|
||||||
|
then
|
||||||
|
# We have reworked collect2
|
||||||
|
hardcode_direct=yes
|
||||||
|
else
|
||||||
|
# We have old collect2
|
||||||
|
hardcode_direct=unsupported
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
hardcode_libdir_separator=
|
||||||
|
fi
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if test "$aix_use_runtimelinking" = yes; then
|
||||||
|
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
|
||||||
|
else
|
||||||
|
if test "$host_cpu" = ia64; then
|
||||||
|
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
|
||||||
|
else
|
||||||
|
hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
amigaos*)
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
# see comment about different semantics on the GNU ld section
|
||||||
|
ld_shlibs=no
|
||||||
|
;;
|
||||||
|
cygwin* | mingw* | pw32*)
|
||||||
|
# When not using gcc, we currently assume that we are using
|
||||||
|
# Microsoft Visual C++.
|
||||||
|
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||||
|
# no search path for DLLs.
|
||||||
|
hardcode_libdir_flag_spec=' '
|
||||||
|
libext=lib
|
||||||
|
;;
|
||||||
|
darwin* | rhapsody*)
|
||||||
|
hardcode_direct=yes
|
||||||
|
;;
|
||||||
|
freebsd1*)
|
||||||
|
ld_shlibs=no
|
||||||
|
;;
|
||||||
|
freebsd2.2*)
|
||||||
|
hardcode_libdir_flag_spec='-R$libdir'
|
||||||
|
hardcode_direct=yes
|
||||||
|
;;
|
||||||
|
freebsd2*)
|
||||||
|
hardcode_direct=yes
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
;;
|
||||||
|
freebsd*)
|
||||||
|
hardcode_libdir_flag_spec='-R$libdir'
|
||||||
|
hardcode_direct=yes
|
||||||
|
;;
|
||||||
|
hpux9* | hpux10* | hpux11*)
|
||||||
|
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||||
|
hardcode_libdir_separator=:
|
||||||
|
hardcode_direct=yes
|
||||||
|
hardcode_minus_L=yes # Not in the search PATH, but as the default
|
||||||
|
# location of the library.
|
||||||
|
;;
|
||||||
|
irix5* | irix6*)
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||||
|
hardcode_libdir_separator=:
|
||||||
|
;;
|
||||||
|
netbsd*)
|
||||||
|
hardcode_libdir_flag_spec='-R$libdir'
|
||||||
|
hardcode_direct=yes
|
||||||
|
;;
|
||||||
|
newsos6)
|
||||||
|
hardcode_direct=yes
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||||
|
hardcode_libdir_separator=:
|
||||||
|
;;
|
||||||
|
openbsd*)
|
||||||
|
hardcode_direct=yes
|
||||||
|
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||||
|
else
|
||||||
|
case "$host_os" in
|
||||||
|
openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
|
||||||
|
hardcode_libdir_flag_spec='-R$libdir'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
os2*)
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
;;
|
||||||
|
osf3*)
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||||
|
hardcode_libdir_separator=:
|
||||||
|
;;
|
||||||
|
osf4* | osf5*)
|
||||||
|
if test "$GCC" = yes; then
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||||
|
else
|
||||||
|
# Both cc and cxx compiler support -rpath directly
|
||||||
|
hardcode_libdir_flag_spec='-rpath $libdir'
|
||||||
|
fi
|
||||||
|
hardcode_libdir_separator=:
|
||||||
|
;;
|
||||||
|
sco3.2v5*)
|
||||||
|
;;
|
||||||
|
solaris*)
|
||||||
|
hardcode_libdir_flag_spec='-R$libdir'
|
||||||
|
;;
|
||||||
|
sunos4*)
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
hardcode_direct=yes
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
;;
|
||||||
|
sysv4)
|
||||||
|
if test "x$host_vendor" = xsno; then
|
||||||
|
hardcode_direct=yes # is this really true???
|
||||||
|
else
|
||||||
|
hardcode_direct=no # Motorola manual says yes, but my tests say they lie
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
sysv4.3*)
|
||||||
|
;;
|
||||||
|
sysv5*)
|
||||||
|
hardcode_libdir_flag_spec=
|
||||||
|
;;
|
||||||
|
uts4*)
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
;;
|
||||||
|
dgux*)
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
;;
|
||||||
|
sysv4*MP*)
|
||||||
|
if test -d /usr/nec; then
|
||||||
|
ld_shlibs=yes
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
sysv4.2uw2*)
|
||||||
|
hardcode_direct=yes
|
||||||
|
hardcode_minus_L=no
|
||||||
|
;;
|
||||||
|
sysv5uw7* | unixware7*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ld_shlibs=no
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check dynamic linker characteristics
|
||||||
|
libname_spec='lib$name'
|
||||||
|
sys_lib_dlsearch_path_spec="/lib /usr/lib"
|
||||||
|
sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
|
||||||
|
case "$host_os" in
|
||||||
|
aix3*)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
aix4* | aix5*)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
amigaos*)
|
||||||
|
shlibext=ixlibrary
|
||||||
|
;;
|
||||||
|
beos*)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
bsdi4*)
|
||||||
|
shlibext=so
|
||||||
|
sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
|
||||||
|
sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
|
||||||
|
;;
|
||||||
|
cygwin* | mingw* | pw32*)
|
||||||
|
case $GCC,$host_os in
|
||||||
|
yes,cygwin*)
|
||||||
|
shlibext=dll.a
|
||||||
|
;;
|
||||||
|
yes,mingw*)
|
||||||
|
shlibext=dll
|
||||||
|
sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
|
||||||
|
;;
|
||||||
|
yes,pw32*)
|
||||||
|
shlibext=dll
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
shlibext=dll
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
darwin* | rhapsody*)
|
||||||
|
shlibext=dylib
|
||||||
|
;;
|
||||||
|
freebsd1*)
|
||||||
|
;;
|
||||||
|
freebsd*)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
gnu*)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
hpux9* | hpux10* | hpux11*)
|
||||||
|
shlibext=sl
|
||||||
|
;;
|
||||||
|
irix5* | irix6*)
|
||||||
|
shlibext=so
|
||||||
|
case "$host_os" in
|
||||||
|
irix5*)
|
||||||
|
libsuff= shlibsuff=
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
case $LD in
|
||||||
|
*-32|*"-32 ") libsuff= shlibsuff= ;;
|
||||||
|
*-n32|*"-n32 ") libsuff=32 shlibsuff=N32 ;;
|
||||||
|
*-64|*"-64 ") libsuff=64 shlibsuff=64 ;;
|
||||||
|
*) libsuff= shlibsuff= ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
|
||||||
|
sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
|
||||||
|
;;
|
||||||
|
linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
|
||||||
|
;;
|
||||||
|
linux-gnu*)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
netbsd*)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
newsos6)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
openbsd*)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
os2*)
|
||||||
|
libname_spec='$name'
|
||||||
|
shlibext=dll
|
||||||
|
;;
|
||||||
|
osf3* | osf4* | osf5*)
|
||||||
|
shlibext=so
|
||||||
|
sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
|
||||||
|
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
|
||||||
|
;;
|
||||||
|
sco3.2v5*)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
solaris*)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
sunos4*)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
|
||||||
|
shlibext=so
|
||||||
|
case "$host_vendor" in
|
||||||
|
motorola)
|
||||||
|
sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
uts4*)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
dgux*)
|
||||||
|
shlibext=so
|
||||||
|
;;
|
||||||
|
sysv4*MP*)
|
||||||
|
if test -d /usr/nec; then
|
||||||
|
shlibext=so
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
|
||||||
|
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||||
|
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||||
|
escaped_sys_lib_search_path_spec=`echo "X$sys_lib_search_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||||
|
escaped_sys_lib_dlsearch_path_spec=`echo "X$sys_lib_dlsearch_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||||
|
|
||||||
|
sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
|
||||||
|
|
||||||
|
# How to pass a linker flag through the compiler.
|
||||||
|
wl="$escaped_wl"
|
||||||
|
|
||||||
|
# Static library suffix (normally "a").
|
||||||
|
libext="$libext"
|
||||||
|
|
||||||
|
# Shared library suffix (normally "so").
|
||||||
|
shlibext="$shlibext"
|
||||||
|
|
||||||
|
# Flag to hardcode \$libdir into a binary during linking.
|
||||||
|
# This must work even if \$libdir does not exist.
|
||||||
|
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
|
||||||
|
|
||||||
|
# Whether we need a single -rpath flag with a separated argument.
|
||||||
|
hardcode_libdir_separator="$hardcode_libdir_separator"
|
||||||
|
|
||||||
|
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
|
||||||
|
# resulting binary.
|
||||||
|
hardcode_direct="$hardcode_direct"
|
||||||
|
|
||||||
|
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
|
||||||
|
# resulting binary.
|
||||||
|
hardcode_minus_L="$hardcode_minus_L"
|
||||||
|
|
||||||
|
# Compile-time system search path for libraries
|
||||||
|
sys_lib_search_path_spec="$escaped_sys_lib_search_path_spec"
|
||||||
|
|
||||||
|
# Run-time system search path for libraries
|
||||||
|
sys_lib_dlsearch_path_spec="$escaped_sys_lib_dlsearch_path_spec"
|
||||||
|
|
||||||
|
EOF
|
||||||
1569
veejay-ng/config.sub
vendored
Executable file
1569
veejay-ng/config.sub
vendored
Executable file
File diff suppressed because it is too large
Load Diff
28887
veejay-ng/configure
vendored
Executable file
28887
veejay-ng/configure
vendored
Executable file
File diff suppressed because it is too large
Load Diff
804
veejay-ng/configure.ac
Normal file
804
veejay-ng/configure.ac
Normal file
@@ -0,0 +1,804 @@
|
|||||||
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
|
dnl AC_INIT
|
||||||
|
AC_INIT([veejay],[0.99.1],[veejay-users@lissts.sourceforge.net])
|
||||||
|
AC_PREREQ(2.57)
|
||||||
|
AC_CONFIG_SRCDIR([veejay/veejay.c])
|
||||||
|
|
||||||
|
VEEJAY_MAJOR_VERSION=0
|
||||||
|
VEEJAY_MINOR_VERSION=99
|
||||||
|
VEEJAY_MICRO_VERSION=1
|
||||||
|
VEEJAY_VERSION=$VEEJAY_MAJOR_VERSION.$VEEJAY_MINOR_VERSION.$VEEJAY_MICRO_VERSION
|
||||||
|
VEEJAY_CODENAME="Resurrection - build $VEEJAY_MINOR_VERSION $VEEJAY_MICRO_VERSION"
|
||||||
|
AC_CONFIG_HEADERS([config.h])
|
||||||
|
dnl AX_CONFIG_PREFIXED_HEADER([veejay-config.h], [VEEJAY], [config.h])
|
||||||
|
|
||||||
|
AC_CANONICAL_HOST
|
||||||
|
AC_CANONICAL_TARGET
|
||||||
|
AM_INIT_AUTOMAKE([1.7])
|
||||||
|
AM_MAINTAINER_MODE
|
||||||
|
AM_INIT_AUTOMAKE([dist-bzip2])
|
||||||
|
|
||||||
|
|
||||||
|
# libtool versioning
|
||||||
|
LT_RELEASE=$VEEJAY_MAJOR_VERSION.$VEEJAY_MINOR_VERSION
|
||||||
|
LT_CURRENT=$VEEJAY_MICRO_VERSION
|
||||||
|
LT_REVISION=$VEEJAY_MICRO_VERSION
|
||||||
|
LT_AGE=$VEEJAY_MICRO_VERSION
|
||||||
|
AC_SUBST(LT_RELEASE)
|
||||||
|
AC_SUBST(LT_CURRENT)
|
||||||
|
AC_SUBST(LT_REVISION)
|
||||||
|
AC_SUBST(LT_AGE)
|
||||||
|
dnl **********************************************************************
|
||||||
|
dnl Options
|
||||||
|
|
||||||
|
|
||||||
|
dnl kill CFLAGS
|
||||||
|
CFLAGS=""
|
||||||
|
GLU_LIB_PATH=""
|
||||||
|
GLU_INC_PATH=""
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(debug,
|
||||||
|
AC_HELP_STRING([--enable-debug],
|
||||||
|
[Compile in debugging information]))
|
||||||
|
AC_ARG_ENABLE(strict,
|
||||||
|
AC_HELP_STRING([--enable-strict],
|
||||||
|
[Compile in assertion checking]))
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(compile-warnings,
|
||||||
|
AC_HELP_STRING([--enable-compile-warnings],
|
||||||
|
[Turn on compiler warnings.]))
|
||||||
|
AC_ARG_ENABLE(warnings_as_errors,
|
||||||
|
AC_HELP_STRING([--enable-warnings_as_errors],
|
||||||
|
[Compiler warnings are errors.]))
|
||||||
|
AC_ARG_ENABLE(simd-accel,
|
||||||
|
AC_HELP_STRING([--enable-simd-accel],
|
||||||
|
[use SIMD multimedia instructions such as MMX, AltiVec, etc.if possible]))
|
||||||
|
|
||||||
|
AC_ARG_WITH(extra-cflags,
|
||||||
|
AC_HELP_STRING([--with-extra-cflags=flags],
|
||||||
|
[Options to be added to CFLAGS (optional)]))
|
||||||
|
AC_ARG_WITH(libdv,
|
||||||
|
AC_HELP_STRING([--without-libdv], [Do not use libdv.]),
|
||||||
|
[], [with_libdv=yes])
|
||||||
|
AC_ARG_WITH(jack,
|
||||||
|
AC_HELP_STRING([--without-jack], [Do not use jack.]),
|
||||||
|
[], [with_jack=yes])
|
||||||
|
AC_ARG_WITH(v4l,
|
||||||
|
AC_HELP_STRING([--without-v4l], [Do not use video4linux]),
|
||||||
|
[], [with_v4l=yes])
|
||||||
|
AC_ARG_WITH(xml2,
|
||||||
|
AC_HELP_STRING([--without-xml2], [Do not use the XML library for Gnome]),
|
||||||
|
[], [with_xml2=yes])
|
||||||
|
AC_ARG_WITH(sdl,
|
||||||
|
AC_HELP_STRING([--without-sdl], [Do not use SDL]),
|
||||||
|
[], [with_sdl=yes])
|
||||||
|
|
||||||
|
AC_ARG_WITH(gl-libs,[ --with-gl-libs=DIR Specify GLU/GL library location], GL_LIB_PATH="-L$withval")
|
||||||
|
AC_ARG_WITH(gl-inc, [ --with-gl-inc=DIR Specify GLU/GL header file location],GL_INC_PATH="-I$withval")
|
||||||
|
|
||||||
|
AC_ARG_WITH(display,
|
||||||
|
AC_HELP_STRING([--without-display], [Do not use SDL/OpenGL]),
|
||||||
|
[], [use_display=yes])
|
||||||
|
|
||||||
|
AC_GNU_SOURCE
|
||||||
|
|
||||||
|
dnl Initialize libtool
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
|
|
||||||
|
dnl Checks for programs.
|
||||||
|
AC_PROG_AWK
|
||||||
|
AC_PROG_CC
|
||||||
|
AM_PROG_CC_STDC
|
||||||
|
AC_PROG_CXX
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
AC_PROG_LN_S
|
||||||
|
AC_C_BIGENDIAN
|
||||||
|
AC_C_CONST
|
||||||
|
AC_C_INLINE
|
||||||
|
AC_SYS_LARGEFILE
|
||||||
|
|
||||||
|
dnl configure AS and ASFLAGS...
|
||||||
|
AM_PROG_AS
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS([fenv.h stdint.h inttypes.h sys/types.h alloca.h])
|
||||||
|
|
||||||
|
dnl AX_PREFIXED_DEFINE([VEEJAY], [HAVE_STDINT_H])
|
||||||
|
dnl AX_PREFIXED_DEFINE([VEEJAY], [HAVE_INTTYPES_H])
|
||||||
|
|
||||||
|
AC_CHECK_FUNCS([posix_memalign memalign pow bzero gettimeofday memset mmap strndup strstr strncasecmp])
|
||||||
|
AC_CHECK_FUNCS([sched_get_priority_max])
|
||||||
|
AC_CHECK_FUNCS([select socket getpagesize memcpy])
|
||||||
|
|
||||||
|
AC_CHECK_FUNC(getopt_long,
|
||||||
|
[AC_DEFINE(HAVE_GETOPT_LONG, 1, [long getopt support])],
|
||||||
|
[ # FreeBSD and BSD/OS have a gnugetopt library for this:
|
||||||
|
AC_CHECK_LIB([gnugetopt], [getopt_long],
|
||||||
|
[AC_DEFINE(HAVE_GETOPT_LONG, 1,
|
||||||
|
[long getopt support])
|
||||||
|
LIBGETOPT_LIB="-lgnugetopt"])
|
||||||
|
])
|
||||||
|
AC_SUBST(LIBGETOPT_LIB)
|
||||||
|
|
||||||
|
AC_TYPE_SIGNAL
|
||||||
|
|
||||||
|
AC_MSG_NOTICE([The host is $host $host_cpu $host_vendor $host_os .])
|
||||||
|
have_glut=false
|
||||||
|
have_glu=false
|
||||||
|
have_sdl=false
|
||||||
|
have_gl=false
|
||||||
|
have_display=false
|
||||||
|
if test x$use_display != xno ; then
|
||||||
|
AC_DEFINE(USE_DISPLAY,,[Compiling in a video output X screen])
|
||||||
|
AC_CHECK_HEADERS(GL/gl.h ,,
|
||||||
|
[AC_MSG_ERROR([Cannot find OpenGL headers]) ])
|
||||||
|
|
||||||
|
if test x$with_sdl != xno ; then
|
||||||
|
AM_PATH_SDL(1.2.3,[
|
||||||
|
have_sdl=true
|
||||||
|
AC_DEFINE(HAVE_SDL,, [SDL library present])],,)
|
||||||
|
fi
|
||||||
|
|
||||||
|
GL_LIBS=""
|
||||||
|
GL_CFLAGS="$GL_INC_PATH"
|
||||||
|
|
||||||
|
AC_CHECK_LIB([GL], [main], have_gl=true)
|
||||||
|
if test x$have_gl = xtrue ; then
|
||||||
|
GL_LIBS="$GL_LIB_PATH -lGL"
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([Cannot find openGL library])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS(GL/glut.h ,,
|
||||||
|
[AC_MSG_ERROR([Cannot find Glut headers]) ])
|
||||||
|
|
||||||
|
AC_CHECK_LIB([glut], [glutInit], have_glut=true)
|
||||||
|
if test x$have_glut = xtrue; then
|
||||||
|
GL_LIBS="$GL_LIBS -lglut"
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([Cannot find glut library])
|
||||||
|
fi
|
||||||
|
AC_CHECK_LIB([GLU], [gluProject], have_glu=true)
|
||||||
|
if test x$have_glu = xtrue; then
|
||||||
|
GL_LIBS="$GL_LIBS -lGLU"
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([Cannot find GLU library])
|
||||||
|
fi
|
||||||
|
AC_SUBST( GL_LIBS )
|
||||||
|
AC_SUBST( GL_CFLAGS )
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl *********************************************************************
|
||||||
|
dnl Test whether we're linux or not. If so, define HAVE_V4L and build the
|
||||||
|
dnl video4linux/hardware dependent tools. Else, undefine HAVE_V4L
|
||||||
|
have_v4l=false
|
||||||
|
have_linux=false
|
||||||
|
have_darwin=false
|
||||||
|
use_gveejayreloaded=false
|
||||||
|
use_gveejay=false
|
||||||
|
case $host in
|
||||||
|
*-*-linux*)
|
||||||
|
AC_CHECK_HEADER(linux/version.h,
|
||||||
|
[have_linux=true
|
||||||
|
if test x$with_gveejayreloaded != xno ; then
|
||||||
|
use_gveejayreloaded=true
|
||||||
|
fi
|
||||||
|
if test x$with_gveejay != xno ; then
|
||||||
|
use_gveejay=true
|
||||||
|
fi
|
||||||
|
AC_DEFINE(HAVE_LINUX,,[Linux platform])
|
||||||
|
],
|
||||||
|
[AC_MSG_ERROR([version.h not found - please install the linux kernel headers])
|
||||||
|
])
|
||||||
|
LIBM_LIBS="-lm"
|
||||||
|
;;
|
||||||
|
*-apple-darwin*)
|
||||||
|
AC_DEFINE(HAVE_DARWIN,,[MAC OS X Darin])
|
||||||
|
dnl OS-X/Darwin needs no-cpp-precomp
|
||||||
|
CFLAGS="$CFLAGS -no-cpp-precomp"
|
||||||
|
have_darwin=true
|
||||||
|
LIBM_LIBS=""
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
AC_MSG_WARN([Alien platform - Good Luck!])
|
||||||
|
LIBM_LIBS=""
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
AC_SUBST(LIBM_LIBS)
|
||||||
|
|
||||||
|
if test x$with_v4l != xno ; then
|
||||||
|
if test x$have_linux != xfalse ; then
|
||||||
|
|
||||||
|
AC_CHECK_HEADER(linux/videodev.h,
|
||||||
|
[have_v4l=true
|
||||||
|
if test x$with_v4l != xno; then
|
||||||
|
AC_DEFINE(HAVE_V4L, 1,
|
||||||
|
[Building for Linux - using the video4linux API])
|
||||||
|
fi
|
||||||
|
],
|
||||||
|
[AC_MSG_ERROR([videodev.h not found - please install the linux kernel headers])])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl *********************************************************************
|
||||||
|
dnl Check for the pthread lib
|
||||||
|
dnl
|
||||||
|
AC_SUBST(PTHREAD_LIBS)
|
||||||
|
have_pthread=false
|
||||||
|
AC_CHECK_LIB(pthread, pthread_create,
|
||||||
|
[ PTHREAD_LIBS="-lpthread"
|
||||||
|
AC_DEFINE(HAVE_LIBPTHREAD,,[Compiling with pthread library])
|
||||||
|
have_pthread=true ],,)
|
||||||
|
|
||||||
|
AC_CHECK_FUNC(pthread_attr_getstacksize,
|
||||||
|
[
|
||||||
|
AC_DEFINE(HAVE_PTHREADSTACKSIZE,,[Using pthread stack size])
|
||||||
|
] )
|
||||||
|
|
||||||
|
have_dl_dlopen=false
|
||||||
|
AC_CHECK_LIB(dl,dlopen)
|
||||||
|
if test "$ac_cv_lib_dl_dlopen" = "yes"; then
|
||||||
|
AC_DEFINE(HAVE_DL_DLOPEN,,[Compile with dlopen support])
|
||||||
|
have_dl_dlopen=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
dnl
|
||||||
|
|
||||||
|
PKG_CHECK_MODULES(FFMPEG_AVCODEC, [libavcodec],
|
||||||
|
[
|
||||||
|
AC_SUBST( FFMPEG_AVCODEC_CFLAGS )
|
||||||
|
AC_SUBST( FFMPEG_AVCODEC_LIBS )
|
||||||
|
have_avcodec=true
|
||||||
|
AC_DEFINE(HAVE_AVCODEC, 1, [use avcodec])],
|
||||||
|
[have_avcodec=false])
|
||||||
|
|
||||||
|
|
||||||
|
PKG_CHECK_MODULES(FFMPEG_AVCODEC, [libavformat],
|
||||||
|
[
|
||||||
|
AC_SUBST( FFMPEG_AVFORMAT_CFLAGS )
|
||||||
|
AC_SUBST( FFMPEG_AVFORMAT_LIBS )
|
||||||
|
have_avformat=true
|
||||||
|
AC_DEFINE(HAVE_AVFORMAT, 1, [use avformat])],
|
||||||
|
[have_avformat=false])
|
||||||
|
|
||||||
|
if test x$have_avcodec != xtrue ; then
|
||||||
|
AC_MSG_ERROR([ FFmpeg not found. Get it from http://ffmpeg.sourceforge.net ] )
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
dnl *********************************************************************
|
||||||
|
dnl Check for libdv
|
||||||
|
dnl (creates LIBDV_CFLAGS, LIBDV_LIBS; defines HAVE_LIBDV)
|
||||||
|
dnl *********************************************************************
|
||||||
|
have_libdv=false
|
||||||
|
if test x$with_libdv != xno ; then
|
||||||
|
PKG_CHECK_MODULES(LIBDV, [libdv >= 0.102],
|
||||||
|
[have_libdv=true
|
||||||
|
AC_DEFINE(SUPPORT_READ_DV2, 1, [libdv is present])],
|
||||||
|
[have_libdv=false])
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl *********************************************************************
|
||||||
|
dnl Check for mjpegtools
|
||||||
|
dnl (creates MJPEGYTOOLS_CFLAGS,
|
||||||
|
dnl *********************************************************************
|
||||||
|
have_mjpegtools=false
|
||||||
|
PKG_CHECK_MODULES(MJPEGTOOLS, [mjpegtools >= 1.6 ],
|
||||||
|
[
|
||||||
|
AC_SUBST( MJPEGTOOLS_CFLAGS )
|
||||||
|
AC_SUBST( MJPEGTOOLS_LIBS )
|
||||||
|
have_mjpegtools=true
|
||||||
|
AC_DEFINE(HAVE_MJPEGTOOLS, 1, [MJPEGTools installed])],
|
||||||
|
[have_mjpegtools=false])
|
||||||
|
|
||||||
|
if test x$have_mjpegtools != xtrue ; then
|
||||||
|
AC_MSG_ERROR([The MJPEGTools not found. Get it from http://mjpeg.sourceforge.net])
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl ********************************************************************
|
||||||
|
dnl Check to see if __progname is provided by the system
|
||||||
|
dnl ********************************************************************
|
||||||
|
AC_CACHE_CHECK([for __progname],
|
||||||
|
[mjt_cv_extern___progname],
|
||||||
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
|
||||||
|
[[extern char *__progname;
|
||||||
|
puts(__progname);]])],
|
||||||
|
[mjt_cv_extern___progname=yes],
|
||||||
|
[mjt_cv_extern___progname=no])])
|
||||||
|
if test x$mjt_cv_extern___progname = xyes ; then
|
||||||
|
AC_DEFINE(HAVE___PROGNAME, 1, [Is __progname defined by system?])
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl ********************************************************************
|
||||||
|
dnl Check for DGA (for v4l-conf)
|
||||||
|
dnl ********************************************************************
|
||||||
|
AC_SUBST(V4LCONF_LIBS)
|
||||||
|
AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension,
|
||||||
|
V4LCONF_LIBS="$X_LIBS -lXxf86dga"
|
||||||
|
AC_DEFINE(HAVE_LIBXXF86DGA,1, [libxf86dga is present]),,
|
||||||
|
$X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS)
|
||||||
|
dnl ** Check for DPMS
|
||||||
|
dnl have_xdpms=no
|
||||||
|
dnl AC_CHECK_HEADERS(X11/extensions/dpms.h,
|
||||||
|
dnl AC_DEFINE(HAVE_XDPMS, 1, [If we have xdpms])],,)
|
||||||
|
|
||||||
|
dnl ********************************************************************
|
||||||
|
dnl Check for the GLIB library (for software playback)
|
||||||
|
dnl (defines SDL_CFLAGS and SDL_LIBS)
|
||||||
|
dnl ********************************************************************
|
||||||
|
have_glib=false
|
||||||
|
AM_PATH_GLIB(2.0,[
|
||||||
|
have_glib=true
|
||||||
|
AC_DEFINE(HAVE_GLIB,, [Glib library present])],,)
|
||||||
|
|
||||||
|
dnl *********************************************************************
|
||||||
|
dnl Check for the Jack Audio connection kit
|
||||||
|
dnl
|
||||||
|
|
||||||
|
have_jack=false
|
||||||
|
dnl dnl if test x$with_jack != xno ; then
|
||||||
|
dnl PKG_CHECK_MODULES(JACK, jack >= 0.98.1 , have_jack=true, have_jack=false)
|
||||||
|
dnl if test x$have_jack = xtrue ; then
|
||||||
|
dnl AC_SUBST(JACK_LIBS)
|
||||||
|
dnl AC_SUBST(JACK_CFLAGS)
|
||||||
|
dnl AC_DEFINE(HAVE_JACK,,[Compiling with support for Jack])
|
||||||
|
dnl else
|
||||||
|
dnl AC_MSG_WARN([Jack >= 0.981.1 is required, get it at http://jackit.sourceforge.net]);
|
||||||
|
dnl fi
|
||||||
|
dnlfi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
dnl ********************************************************************
|
||||||
|
dnl Check for the libxml2 library (for saving/loading project files)
|
||||||
|
dnl
|
||||||
|
have_xml2=false
|
||||||
|
if test x$with_xml2 != xno; then
|
||||||
|
AM_PATH_XML2(2.5.4, [
|
||||||
|
have_xml2=true
|
||||||
|
AC_DEFINE(HAVE_XML2,,[Compiling with XML2])],,)
|
||||||
|
|
||||||
|
if test x$have_xml2 = xfalse ; then
|
||||||
|
AC_MSG_WARN([cannot find The XML C library for gnome])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(whether to compile in debugging information)
|
||||||
|
debugCFLAGS=""
|
||||||
|
if test "x$enable_debug" = "xyes" ; then
|
||||||
|
debugCFLAGS="-g "
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
AC_MSG_CHECKING(whether to compile in assertion checking)
|
||||||
|
if test "x$enable_strict" = "xyes" ; then
|
||||||
|
debugCFLAGS="-g -DSTRICT_CHECKING "
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
|
||||||
|
have_asm_nasm=false
|
||||||
|
have_asm_mmx=false
|
||||||
|
have_asm_sse=false
|
||||||
|
have_asm_sse2=false
|
||||||
|
have_asm_mmx2=false
|
||||||
|
have_asm_3dnow=false
|
||||||
|
have_cmov=false
|
||||||
|
have_x86cpu=false
|
||||||
|
have_x86_64cpu=false
|
||||||
|
have_altivec=false
|
||||||
|
have_mips=false
|
||||||
|
have_ppccpu=false
|
||||||
|
have_ps2=false
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([Architecture])
|
||||||
|
case $host_cpu in
|
||||||
|
i[[3-7]]86)
|
||||||
|
AC_MSG_RESULT([x86])
|
||||||
|
AC_DEFINE(HAVE_X86CPU,, [Compiling for x86 architecture CPU])
|
||||||
|
AC_DEFINE(ARCH_X86,1,[Compiling for x86 architecture])
|
||||||
|
have_x86cpu=true
|
||||||
|
|
||||||
|
dnl Programs without PIC!
|
||||||
|
PROGRAM_NOPIC="-fno-PIC"
|
||||||
|
|
||||||
|
if test "x$enable_debug" != "xyes" ; then
|
||||||
|
dnl optimize if not debugging
|
||||||
|
CFLAGS="-fno-common -O2 -fomit-frame-pointer"
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl If the host is pentium, align on double word boundary
|
||||||
|
case $host_cpu in
|
||||||
|
i686)
|
||||||
|
CFLAGS="$CFLAGS -malign-double -mfpmath=sse"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
;;
|
||||||
|
x86_64*)
|
||||||
|
AC_MSG_RESULT([x86-64])
|
||||||
|
AC_DEFINE(HAVE_X86_CPU,, [Compiling for x86-64 architecture CPU])
|
||||||
|
AC_DEFINE(ARCH_X86_64,1, [Compiling for x86-64 architecture CPU])
|
||||||
|
have_x86cpu=true
|
||||||
|
have_x86_64cpu=true
|
||||||
|
PROGRAM_NOPIC="-fno-PIC"
|
||||||
|
;;
|
||||||
|
powerpc | powerpc64)
|
||||||
|
AC_MSG_RESULT([powerpc])
|
||||||
|
AC_DEFINE(HAVE_PPCCPU,, [Compiling for PowerPC CPU])
|
||||||
|
AC_DEFINE(ARCH_PPC,,[Compiling for PowerPC])
|
||||||
|
have_ppccpu=true
|
||||||
|
case $host in
|
||||||
|
*-apple-darwin*)
|
||||||
|
PROGRAM_NOPIC="-mdynamic-no-pic" # dynamic-no-pic is an Apple gcc option
|
||||||
|
dnl PROGRAM_NOPIC="-bundle -flat_namespace -undefined suppress"
|
||||||
|
dnl CFLAGS="$CFLAGS -no-cpp-precomp"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
PROGRAM_NOPIC=""
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
mips | mipsel)
|
||||||
|
AC_MSG_RESULT([mips])
|
||||||
|
AC_DEFINE(ARCH_MIPS,,[Compiling for MIPS CPU])
|
||||||
|
AC_DEFINE(HAVE_MIPS,,[Compiling for MIPS CPU])
|
||||||
|
have_mips=true
|
||||||
|
AC_MSG_CHECKING([if we are compiling on playstation2 hardware])
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
|
||||||
|
[[#include <linux/ps2/dev.h>
|
||||||
|
#include <linux/ps2/gs.h>
|
||||||
|
]])],
|
||||||
|
[have_ps2=true],
|
||||||
|
[have_ps2=false])
|
||||||
|
|
||||||
|
if test x$have_ps2 = xtrue ; then
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(HAVE_PS2,,[Compile for playstation2])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
AC_MSG_RESULT([unknown])
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
dnl This flag is used for PROGRAMS not SHARED LIBRARIES. PIC code is required
|
||||||
|
dnl for shared libraries but is slower than non-pic code. Compute bound
|
||||||
|
dnl programs such as yuvdenoise and y4mspatialfilter can use this flag by
|
||||||
|
dnl simply adding programname_CFLAGS=@PROGRAM_NOPIC@ to the Makefile.am
|
||||||
|
|
||||||
|
AC_SUBST(PROGRAM_NOPIC)
|
||||||
|
|
||||||
|
if test "$enable_simd_accel" != "false" -a "$enable_simd_accel" != "no"
|
||||||
|
then
|
||||||
|
if test x$have_x86cpu = xtrue
|
||||||
|
then
|
||||||
|
|
||||||
|
AC_PATH_PROGS(AS, nasm nasmw)
|
||||||
|
if test x$AS = x -o x$AS = x'"$AS"'; then
|
||||||
|
AC_MSG_NOTICE([NASM not found])
|
||||||
|
else
|
||||||
|
AC_DEFINE(HAVE_ASM_NASM,,[Compiling with nasm])
|
||||||
|
have_asm_nasm=true
|
||||||
|
ASFLAGS="-f elf"
|
||||||
|
AC_SUBST(ASFLAGS)
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl check for mmx
|
||||||
|
AC_CACHE_CHECK(for MMX on processor(s), ac_cv_flag_mxx, [
|
||||||
|
if grep "^flags.* mmx" /proc/cpuinfo > /dev/null; then
|
||||||
|
ac_cv_flag_mmx=yes
|
||||||
|
else
|
||||||
|
ac_cv_flag_mmx=no
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
if test $ac_cv_flag_mmx = yes; then
|
||||||
|
AC_DEFINE(HAVE_ASM_MMX,,[Compiling in MMX support])
|
||||||
|
AC_DEFINE(HAVE_MMX,,[Compiling in MMX support in ffmpeg])
|
||||||
|
have_asm_mmx=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl check for sse
|
||||||
|
AC_CACHE_CHECK(for SSE on processor(s), ac_cv_flag_sse, [
|
||||||
|
if grep "^flags.* sse" /proc/cpuinfo > /dev/null; then
|
||||||
|
ac_cv_flag_sse=yes
|
||||||
|
else
|
||||||
|
ac_cv_flag_sse=no
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
if test $ac_cv_flag_sse = yes; then
|
||||||
|
AC_DEFINE(HAVE_ASM_SSE,,[Compiling in SSE support])
|
||||||
|
AC_DEFINE(HAVE_SSE,,[Compiling in SSE support])
|
||||||
|
have_asm_sse=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
dnl check for sse2
|
||||||
|
AC_CACHE_CHECK(for SSE2 on processor(s), ac_cv_flag_sse2, [
|
||||||
|
if grep "^flags.* sse2" /proc/cpuinfo > /dev/null; then
|
||||||
|
ac_cv_flag_sse2=yes
|
||||||
|
else
|
||||||
|
ac_cv_flag_sse2=no
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
if test $ac_cv_flag_sse2 = yes; then
|
||||||
|
AC_DEFINE(HAVE_ASM_SSE2,,[Compiling in SSE2 support])
|
||||||
|
AC_DEFINE(HAVE_SSE2,,[Compiling in SSE2 support])
|
||||||
|
have_asm_sse2=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl check for 3dnow
|
||||||
|
AC_CACHE_CHECK(for 3DNOW on processor(s), ac_cv_flag_3dnow, [
|
||||||
|
if grep "^flags.* 3dnow" /proc/cpuinfo > /dev/null; then
|
||||||
|
ac_cv_flag_3dnow=yes
|
||||||
|
else
|
||||||
|
ac_cv_flag_3dnow=no
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
if test $ac_cv_flag_3dnow = yes; then
|
||||||
|
AC_DEFINE(HAVE_ASM_3DNOW,,[Compiling in 3Dnow])
|
||||||
|
have_asm_3dnow=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl check for CMOV
|
||||||
|
AC_CACHE_CHECK(for CMOV on processor(s), ac_cv_flag_cmov, [
|
||||||
|
if grep "^flags.* cmov" /proc/cpuinfo > /dev/null; then
|
||||||
|
ac_cv_flag_cmov=yes
|
||||||
|
else
|
||||||
|
ac_cv_flag_cmov=no
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
if test $ac_cv_flag_cmov = yes; then
|
||||||
|
AC_DEFINE(HAVE_CMOV,,[Compiling in CMOV])
|
||||||
|
have_cmov=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
dnl check for MMX2
|
||||||
|
AC_CACHE_CHECK(for MMX2 on processor(s), ac_cv_flag_mmx2, [
|
||||||
|
if grep "^flags.* mmxext" /proc/cpuinfo > /dev/null; then
|
||||||
|
ac_cv_flag_mmx2=yes
|
||||||
|
else
|
||||||
|
ac_cv_flag_mmx2=no
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
if test $ac_cv_flag_mmx2 = yes; then
|
||||||
|
AC_DEFINE(HAVE_ASM_MMX2,,[Compiling in MMX2])
|
||||||
|
AC_DEFINE(HAVE_MMX2,,[Compiling in MMX2])
|
||||||
|
have_asm_mmx2=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x$have_ppccpu = xtrue
|
||||||
|
then
|
||||||
|
AC_MSG_CHECKING([compiler support for AltiVec])
|
||||||
|
cat > conftest.c <<EOF
|
||||||
|
#ifdef HAVE_ALTIVEC_H
|
||||||
|
#include <altivec.h>
|
||||||
|
#endif
|
||||||
|
int main() {
|
||||||
|
union { vector signed int v;
|
||||||
|
signed int i;
|
||||||
|
} vi;
|
||||||
|
vi.v = vec_splat_s32(1);
|
||||||
|
return vi.i;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
ALTIVEC_CFLAGS=""
|
||||||
|
if $CC -o conftest conftest.c >/dev/null 2>&1; then
|
||||||
|
have_altivec=true
|
||||||
|
elif $CC $CFLAGS -faltivec -o conftest conftest.c >/dev/null 2>&1; then
|
||||||
|
# Mac OS X style
|
||||||
|
have_altivec=true
|
||||||
|
ALTIVEC_CFLAGS="-faltivec"
|
||||||
|
elif $CC $CFLAGS -fvec -o conftest conftest.c >/dev/null 2>&1; then
|
||||||
|
# Motorola style
|
||||||
|
have_altivec=true
|
||||||
|
ALTIVEC_CFLAGS="-fvec"
|
||||||
|
elif $CC $CFLAGS -DHAVE_ALTIVEC_H=1 -maltivec -mabi=altivec -o conftest conftest.c >/dev/null 2>&1; then
|
||||||
|
# gcc 3.1 style
|
||||||
|
have_altivec=true
|
||||||
|
ALTIVEC_CFLAGS="-DHAVE_ALTIVEC_H=1 -maltivec -mabi=altivec"
|
||||||
|
fi
|
||||||
|
rm -f conftest*;
|
||||||
|
|
||||||
|
if test x$have_altivec = xtrue
|
||||||
|
then
|
||||||
|
# add -O3 flag
|
||||||
|
ALTIVEC_CFLAGS="-O3 ${ALTIVEC_CFLAGS}"
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(HAVE_ALTIVEC,,
|
||||||
|
[Inline PPC Altivec primitives available])
|
||||||
|
AC_SUBST(ALTIVEC_CFLAGS)
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test ! -r $srcdir/cpuinfo.sh; then
|
||||||
|
AC_MSG_ERROR([cpuinfo.sh script not found - do a cvs update])
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(sub-architecture settings)
|
||||||
|
chmod +x $srcdir/cpuinfo.sh
|
||||||
|
|
||||||
|
if test x$have_x86cpu = xtrue; then
|
||||||
|
ARCHFLAGS=`$srcdir/cpuinfo.sh x86`
|
||||||
|
else
|
||||||
|
if test x$have_ppccpu = xtrue; then
|
||||||
|
ARCHFLAGS=`$srcdir/cpuinfo.sh ppc`
|
||||||
|
else
|
||||||
|
ARCHFLAGS=`$srcdir/cpuinfo.sh mips`
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl **********************************************************************
|
||||||
|
dnl All the conditional stuff for the Makefiles
|
||||||
|
AM_CONDITIONAL(HAVE_SDL, test x$have_sdl = xtrue )
|
||||||
|
AM_CONDITIONAL(HAVE_ASM_MMX, test x$have_asm_mmx = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_X86CPU, test x$have_x86cpu = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_PPCCPU, test x$have_ppccpu = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_ALTIVEC, test x$have_altivec = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_ASM_MMX2, test x$have_asm_mmx2 = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_ASM_SSE, test x$have_asm_sse = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_ASM_SSE2, test x$have_asm_sse2 = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_ASM_NASM, test x$have_asm_nasm = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_MMX, test x$have_asm_mmx = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_SSE, test x$have_asm_sse = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_SSE2, test x$have_asm_sse2 = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_MMX2, test x$have_asm_mmx2 = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_XML2, test x$have_xml2 = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_JACK, test x$have_jack = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_V4L, test x$have_v4l = xtrue)
|
||||||
|
AM_CONDITIONAL(SUPPORT_READ_DV2, test x$have_libdv = xtrue)
|
||||||
|
AM_CONDITIONAL(HAVE_DL_DLOPEN, test x$have_dl_dlopen = xtrue)
|
||||||
|
dnl *********************************************************************
|
||||||
|
dnl Check for what warnings we want gcc to use and adjust the CFLAGS
|
||||||
|
dnl as needed. This only works for GCC.
|
||||||
|
dnl We do this last as it can screw up library detection etc...
|
||||||
|
|
||||||
|
if test "x${GCC}" != "xyes" ; then
|
||||||
|
enable_compile_warnings=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(what warning flags to pass to the C compiler)
|
||||||
|
warnCFLAGS=
|
||||||
|
warnCXXFLAGS=
|
||||||
|
if test "x$enable_compile_warnings" != "xno" ; then
|
||||||
|
if test "x$GCC" = "xyes" ; then
|
||||||
|
case "$CFLAGS" in
|
||||||
|
*-Wall*) ;;
|
||||||
|
*) warnCFLAGS="-Wall -Wunused" ;;
|
||||||
|
esac
|
||||||
|
if test "x$enable_compile_warnings" = "xyes" ; then
|
||||||
|
warnCFLAGS="$warnCFLAGS -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wcast-align -Wwrite-strings -Wcast-qual"
|
||||||
|
warnCXXFLAGS="$warnCXXFLAGS -Wmissing-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -Wcast-qual"
|
||||||
|
fi
|
||||||
|
if test "x$enable_warnings_as_errors" = "xyes" ; then
|
||||||
|
warnCFLAGS="$warnCFLAGS -Werror"
|
||||||
|
warnCXXFLAGS="$warnCXXFLAGS -Werror"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT($warnCFLAGS)
|
||||||
|
AC_MSG_RESULT($warnCXXFLAGS)
|
||||||
|
|
||||||
|
CFLAGS="$ARCHFLAGS $CFLAGS -std=c99"
|
||||||
|
CXXFLAGS="$ARCHFLAGS $CXXFLAGS"
|
||||||
|
|
||||||
|
if test "x$cflags_set" != "xyes" ; then
|
||||||
|
if test "x$enable_debug" = "xyes" ; then
|
||||||
|
CFLAGS="$debugCFLAGS $warnCFLAGS -std=c99"
|
||||||
|
else
|
||||||
|
CFLAGS="$CFLAGS $warnCFLAGS -std=c99"
|
||||||
|
fi
|
||||||
|
CXXFLAGS="$CXXFLAGS $warnCXXFLAGS"
|
||||||
|
cflags_set=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if test x"$with_extra_cflags" != "x"; then
|
||||||
|
CFLAGS="$CFLAGS $with_extra_cflags"
|
||||||
|
CXXFLAGS="$CXXFLAGS $with_extra_cflags"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
AC_DEFINE(VEEJAY,,[Building veejay])
|
||||||
|
|
||||||
|
dnl **********************************************************************
|
||||||
|
dnl Output a Makefile or two and the lib/header descriptor script
|
||||||
|
dnl
|
||||||
|
AC_CONFIG_FILES([
|
||||||
|
Makefile
|
||||||
|
libOSC/Makefile
|
||||||
|
libhash/Makefile
|
||||||
|
libvjmsg/Makefile
|
||||||
|
libvevo/Makefile
|
||||||
|
libvjmem/Makefile
|
||||||
|
libplugger/Makefile
|
||||||
|
libvjnet/Makefile
|
||||||
|
libyuv/Makefile
|
||||||
|
libel/Makefile
|
||||||
|
bio2jack/Makefile
|
||||||
|
vevosample/Makefile
|
||||||
|
veejay/Makefile
|
||||||
|
man/Makefile
|
||||||
|
veejay-config
|
||||||
|
veejay.pc
|
||||||
|
])
|
||||||
|
AC_OUTPUT
|
||||||
|
|
||||||
|
AC_DEFINE(VERSION, ${VERSION})
|
||||||
|
|
||||||
|
AC_MSG_NOTICE([])
|
||||||
|
AC_MSG_NOTICE([ Veejay ${VERSION} build configuration :])
|
||||||
|
AC_MSG_NOTICE([])
|
||||||
|
AC_MSG_NOTICE([ Compiler flags: $CFLAGS])
|
||||||
|
if test "x$enable_strict" = "xyes" ; then
|
||||||
|
AC_MSG_NOTICE([Strict checking enabled])
|
||||||
|
fi
|
||||||
|
if test "x$enable_debug" = "xyes" ; then
|
||||||
|
AC_MSG_NOTICE([Debugging symbols enabled])
|
||||||
|
fi
|
||||||
|
AC_MSG_NOTICE([])
|
||||||
|
AC_MSG_NOTICE([ Architecture: ${host_cpu} ])
|
||||||
|
AC_MSG_NOTICE([])
|
||||||
|
if test "$have_x86cpu" = "true" ; then
|
||||||
|
AC_MSG_NOTICE([ x86 ])
|
||||||
|
AC_MSG_NOTICE([ MMX enabled : ${have_asm_mmx}])
|
||||||
|
AC_MSG_NOTICE([ MMX2 enabled : ${have_asm_mmx2}])
|
||||||
|
AC_MSG_NOTICE([ SSE enabled : ${have_asm_sse}])
|
||||||
|
AC_MSG_NOTICE([ SSE2 enabled : ${have_asm_sse2}])
|
||||||
|
AC_MSG_NOTICE([ 3DNOW enabled : ${have_asm_3dnow}])
|
||||||
|
AC_MSG_NOTICE([ CMOV enabled : ${have_cmov}])
|
||||||
|
AC_MSG_NOTICE([ Nasm enabled : ${have_asm_nasm}])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$have_ppccpu" = "true" ; then
|
||||||
|
AC_MSG_NOTICE([ ppc])
|
||||||
|
AC_MSG_NOTICE([ AltiVec enabled : ${have_altivec}])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$have_mips" = "true" ; then
|
||||||
|
AC_MSG_NOTICE([ mips])
|
||||||
|
AC_MSG_NOTICE([ PS/2 enabled : ${have_ps2}])
|
||||||
|
fi
|
||||||
|
AC_MSG_NOTICE([])
|
||||||
|
if test "$have_linux" = "true" ; then
|
||||||
|
AC_MSG_NOTICE([ Platform: Linux])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$have_darwin" = "true" ; then
|
||||||
|
AC_MSG_NOTICE([ Platform: Darwin])
|
||||||
|
AC_MSG_NOTICE([ Good luck! You can be the first! ])
|
||||||
|
fi
|
||||||
|
AC_MSG_NOTICE([])
|
||||||
|
AC_MSG_NOTICE([ Required dependencies:])
|
||||||
|
AC_MSG_NOTICE([ - POSIX Threads (pthread) : ${have_pthread}])
|
||||||
|
AC_MSG_NOTICE([ - MJPEGTools : ${have_mjpegtools}])
|
||||||
|
AC_MSG_NOTICE([ - SDL Video : ${have_sdl}])
|
||||||
|
AC_MSG_NOTICE([ Optional dependencies])
|
||||||
|
|
||||||
|
AC_MSG_NOTICE([ - video4linux : ${have_v4l}])
|
||||||
|
AC_MSG_NOTICE([ - libDV (digital video) support : ${have_libdv} ])
|
||||||
|
AC_MSG_NOTICE([ - Jack : ${have_jack}])
|
||||||
|
AC_MSG_NOTICE([ - xml c library for gnome : ${have_xml2}])
|
||||||
326
veejay-ng/cpuinfo.sh
Executable file
326
veejay-ng/cpuinfo.sh
Executable file
@@ -0,0 +1,326 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if test x"$CC" = x; then
|
||||||
|
CC=gcc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $# -ne 1; then
|
||||||
|
echo "Please give the arch (ppc or x86) as an argument!" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test `uname -s` = Darwin; then
|
||||||
|
IsDarwin=yes
|
||||||
|
else
|
||||||
|
IsDarwin=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
target=$1
|
||||||
|
|
||||||
|
cc_version=`$CC -dumpversion`
|
||||||
|
_cc_major=`echo $cc_version | cut -d'.' -f1`
|
||||||
|
_cc_minor=`echo $cc_version | cut -d'.' -f2`
|
||||||
|
|
||||||
|
if test $_cc_major -ge 4; then
|
||||||
|
_opt_mcpu="-mtune"
|
||||||
|
else
|
||||||
|
_opt_mcpu="-mcpu"
|
||||||
|
fi
|
||||||
|
|
||||||
|
do_cc()
|
||||||
|
{
|
||||||
|
$CC -o conftest conftest.c $@ >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
extcheck()
|
||||||
|
{
|
||||||
|
cat > conftest.c <<EOF
|
||||||
|
#include <signal.h>
|
||||||
|
void catch() { exit(1); }
|
||||||
|
int main(void){
|
||||||
|
signal(SIGILL, catch);
|
||||||
|
__asm__ __volatile__ ("$1":::"memory");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
do_cc
|
||||||
|
if test -x ./conftest; then
|
||||||
|
./conftest
|
||||||
|
if test $? -ne 0; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
do_x86()
|
||||||
|
{
|
||||||
|
if test -r /proc/cpuinfo; then
|
||||||
|
_cpuinfo="cat /proc/cpuinfo"
|
||||||
|
else
|
||||||
|
$CC -o cpuinfo utils/cpuinfo.c
|
||||||
|
_cpuinfo="./cpuinfo"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Cpu determination logic adapted from the MPlayer configure script.
|
||||||
|
|
||||||
|
pname=`$_cpuinfo | grep 'model name' | cut -d ':' -f 2 | head -n 1`
|
||||||
|
pvendor=`$_cpuinfo | grep 'vendor_id' | cut -d':' -f2 | cut -d' ' -f2 | head -n 1`
|
||||||
|
pfamily=`$_cpuinfo | grep 'cpu family' | cut -d':' -f2 | cut -d' ' -f2 | head -n 1`
|
||||||
|
pmodel=`$_cpuinfo | grep -v 'model name' | grep 'model' | cut -d':' -f2 | cut -d' ' -f2 | head -n 1`
|
||||||
|
pstep=`$_cpuinfo | grep 'stepping' | cut -d':' -f2 | cut -d' ' -f2 | head -n 1`
|
||||||
|
pparam=`$_cpuinfo | grep 'features' | cut -d':' -f2 | head -n 1`
|
||||||
|
|
||||||
|
if test -z "$pparam" ; then
|
||||||
|
pparam=`$_cpuinfo | grep 'flags' | cut -d ':' -f 2 | head -n 1`
|
||||||
|
fi
|
||||||
|
|
||||||
|
_mmx=no
|
||||||
|
_3dnow=no
|
||||||
|
_3dnowex=no
|
||||||
|
_mmx2=no
|
||||||
|
_sse=no
|
||||||
|
_sse2=no
|
||||||
|
_mtrr=no
|
||||||
|
|
||||||
|
for i in $pparam ; do
|
||||||
|
case "$i" in
|
||||||
|
3dnow) _3dnow=yes ;;
|
||||||
|
3dnowext) _3dnow=yes _3dnowex=yes ;;
|
||||||
|
mmx) _mmx=yes ;;
|
||||||
|
mmxext) _mmx2=yes ;;
|
||||||
|
mtrr|k6_mtrr|cyrix_arr) _mtrr=yes ;;
|
||||||
|
xmm|sse|kni) _sse=yes _mmx2=yes ;;
|
||||||
|
sse2) _sse2=yes ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
case "$pvendor" in
|
||||||
|
AuthenticAMD)
|
||||||
|
case "$pfamily" in
|
||||||
|
3)proc=i386
|
||||||
|
;;
|
||||||
|
4) proc=i486
|
||||||
|
;;
|
||||||
|
5) iproc=586
|
||||||
|
# models are: K5/SSA5 K5 K5 K5 ? ? K6 K6 K6-2 K6-3
|
||||||
|
# K6 model 13 are the K6-2+ and K6-III+
|
||||||
|
if test "$pmodel" -eq 9 -o "$pmodel" -eq 13; then
|
||||||
|
proc=k6-3
|
||||||
|
elif test "$pmodel" -ge 8; then
|
||||||
|
proc=k6-2
|
||||||
|
elif test "$pmodel" -ge 6; then
|
||||||
|
proc=k6
|
||||||
|
else
|
||||||
|
proc=i586
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
6) iproc=686
|
||||||
|
if test "$pmodel" -ge 7; then
|
||||||
|
proc=athlon-4
|
||||||
|
elif test "$pmodel" -ge 6; then
|
||||||
|
if test "$_sse" = yes && test "$pstep" -ge 2; then
|
||||||
|
proc=athlon-xp
|
||||||
|
else
|
||||||
|
proc=athlon-4
|
||||||
|
fi
|
||||||
|
elif test "$pmodel" -ge 4; then
|
||||||
|
proc=athlon-tbird
|
||||||
|
else
|
||||||
|
proc=athlon
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
15)
|
||||||
|
# Despite what the gcc into says 'athlon64' is not accepted as
|
||||||
|
# synonym for 'k8'
|
||||||
|
proc=k8
|
||||||
|
;;
|
||||||
|
*) proc=athlon-xp
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
GenuineIntel)
|
||||||
|
case "$pfamily" in
|
||||||
|
3) proc=i386
|
||||||
|
;;
|
||||||
|
4) proc=i486
|
||||||
|
;;
|
||||||
|
5) iproc=586
|
||||||
|
if test "$pmodel" -eq 4 || test "$pmodel" -eq 8; then
|
||||||
|
proc=pentium-mmx # 4 is desktop, 8 is mobile
|
||||||
|
else
|
||||||
|
proc=i586
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
6) iproc=686
|
||||||
|
if test "$pmodel" -ge 7; then
|
||||||
|
proc=pentium3
|
||||||
|
elif test "$pmodel" -ge 3; then
|
||||||
|
proc=pentium2
|
||||||
|
else
|
||||||
|
proc=i686
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
15) proc=pentium4
|
||||||
|
;;
|
||||||
|
*) proc=pentium4
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
unknown)
|
||||||
|
case "$pfamily" in
|
||||||
|
3) proc=i386
|
||||||
|
;;
|
||||||
|
4) proc=i486
|
||||||
|
;;
|
||||||
|
*) proc=i586
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
proc=i586
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# check that gcc supports our CPU, if not, fall back to earlier ones
|
||||||
|
|
||||||
|
cat > conftest.c << EOF
|
||||||
|
int main(void) { return 0; }
|
||||||
|
EOF
|
||||||
|
if test "$proc" = "athlon64" ; then
|
||||||
|
do_cc -march=$proc $_opt_mcpu=$proc || proc=athlon-xp
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$proc" = "athlon-xp" || test "$proc" = "athlon-4" || test "$proc" = "athlon-tbird"; then
|
||||||
|
do_cc -march=$proc $_opt_mcpu=$proc || proc=athlon
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$proc" = "k6-3" || test "$proc" = "k6-2"; then
|
||||||
|
do_cc -march=$proc $_opt_mcpu=$proc || proc=k6
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$proc" = "k6"; then
|
||||||
|
do_cc -march=$proc $_opt_mcpu=$proc
|
||||||
|
if test $? -ne 0; then
|
||||||
|
if do_cc -march=i586 $_opt_mcpu=i686; then
|
||||||
|
proc=i586-i686
|
||||||
|
else
|
||||||
|
proc=i586
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$proc" = "pentium4" || test "$proc" = "pentium3" || test "$proc" = "pentium2" || test "$proc" = "athlon"; then
|
||||||
|
do_cc -march=$proc $_opt_mcpu=$proc || proc=i686
|
||||||
|
fi
|
||||||
|
if test "$proc" = "i686" || test "$proc" = "pentium-mmx"; then
|
||||||
|
do_cc -march=$proc $_opt_mcpu=$proc || proc=i586
|
||||||
|
fi
|
||||||
|
if test "$proc" = "i586" ; then
|
||||||
|
do_cc -march=$proc $_opt_mcpu=$proc || proc=i486
|
||||||
|
fi
|
||||||
|
if test "$proc" = "i486" ; then
|
||||||
|
do_cc -march=$proc $_opt_mcpu=$proc || proc=i386
|
||||||
|
fi
|
||||||
|
if test "$proc" = "i386" ; then
|
||||||
|
do_cc -march=$proc $_opt_mcpu=$proc || proc=error
|
||||||
|
fi
|
||||||
|
if test "$proc" = "error" ; then
|
||||||
|
echo "Your $_cc does not even support \"i386\" for '-march' and $_opt_mcpu."
|
||||||
|
_mcpu=""
|
||||||
|
_march=""
|
||||||
|
elif test "$proc" = "i586-i686"; then
|
||||||
|
_march="-march=i586"
|
||||||
|
_mcpu="$_opt_mcpu=i686"
|
||||||
|
else
|
||||||
|
_march="-march=$proc"
|
||||||
|
_mcpu="$_opt_mcpu=$proc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $_cc_major -ge 3; then
|
||||||
|
extcheck "xorps %%xmm0, %%xmm0" || _gcc3_ext="$_gcc3_ext -mno-sse"
|
||||||
|
extcheck "xorpd %%xmm0, %%xmm0" || _gcc3_ext="$_gcc3_ext -mno-sse2"
|
||||||
|
|
||||||
|
if test x"$_gcc3_ext" != "x"; then
|
||||||
|
# if we had to disable sse/sse2 because the active kernel does not
|
||||||
|
# support this instruction set extension, we also have to tell
|
||||||
|
# gcc3 to not generate sse/sse2 instructions for normal C code
|
||||||
|
cat > conftest.c << EOF
|
||||||
|
int main(void) { return 0; }
|
||||||
|
EOF
|
||||||
|
do_cc $_march $_gcc3_ext && _march="$_march $_gcc3_ext"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $_march $_mcpu
|
||||||
|
rm -f conftest.c conftest cpuinfo
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
do_ppc()
|
||||||
|
{
|
||||||
|
# Linux on a PPC has /proc/info
|
||||||
|
# Darwin (OS/X) has the hostinfo command
|
||||||
|
# If neither of those we have no idea what to do - so do nothing.
|
||||||
|
if test -r /proc/cpuinfo; then
|
||||||
|
proc=`grep cpu /proc/cpuinfo | cut -d':' -f2 | cut -d',' -f1 | cut -b 2- | head -n 1`
|
||||||
|
elif test $IsDarwin = yes; then
|
||||||
|
proc=`hostinfo | grep "Processor type" | cut -f3 -d' ' | sed 's/ppc//'`
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$proc" in
|
||||||
|
601) _march="$_opt_mcpu=601" _mcpu='-mtune=601'
|
||||||
|
;;
|
||||||
|
603) _march="$_opt_mcpu=603" _mcpu='-mtune=603'
|
||||||
|
;;
|
||||||
|
603e|603ev) _march="$_opt_mcpu=603e" _mcpu='-mtune=603e'
|
||||||
|
;;
|
||||||
|
604|604e|604r|604ev) _march="$_opt_mcpu=604" _mcpu='-mtune=604'
|
||||||
|
;;
|
||||||
|
740|740/750|745/755) _march="$_opt_mcpu=740" _mcpu='-mtune=740'
|
||||||
|
;;
|
||||||
|
750|750CX) _march="$_opt_mcpu=750" _mcpu='-mtune=750'
|
||||||
|
;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# gcc 3.1(.1) and up supports 7400 and 7450
|
||||||
|
if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "1" || test "$_cc_major" -ge "4"; then
|
||||||
|
case "$proc" in
|
||||||
|
7400*|7410*) _march="$_opt_mcpu=7400" _mcpu='-mtune=7400' ;;
|
||||||
|
7450*|7455*) _march="$_opt_mcpu=7450" _mcpu='-mtune=7450' ;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# gcc 3.2 and up supports 970
|
||||||
|
if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "3" || test "$_cc_major" -ge "4"; then
|
||||||
|
case "$proc" in
|
||||||
|
970*) if test $IsDarwin = yes; then
|
||||||
|
_march="$_opt_mcpu=G5 -mpowerpc64 -mpowerpc-gpopt -falign-loops=16 -force_cpusubtype_ALL" _mcpu='-mtune=G5'
|
||||||
|
else
|
||||||
|
_march="$_opt_mcpu=970" _mcpu='-mtune=970'
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $_march $_mcpu
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# The script that runs the various functions above
|
||||||
|
#
|
||||||
|
|
||||||
|
if test $target = x86; then
|
||||||
|
do_x86
|
||||||
|
elif test $target = ppc; then
|
||||||
|
do_ppc
|
||||||
|
fi
|
||||||
529
veejay-ng/depcomp
Executable file
529
veejay-ng/depcomp
Executable file
@@ -0,0 +1,529 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
|
||||||
|
scriptversion=2005-02-09.22
|
||||||
|
|
||||||
|
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
# 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, 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.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
'')
|
||||||
|
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
-h | --h*)
|
||||||
|
cat <<\EOF
|
||||||
|
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||||
|
|
||||||
|
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||||
|
as side-effects.
|
||||||
|
|
||||||
|
Environment variables:
|
||||||
|
depmode Dependency tracking mode.
|
||||||
|
source Source file read by `PROGRAMS ARGS'.
|
||||||
|
object Object file output by `PROGRAMS ARGS'.
|
||||||
|
DEPDIR directory where to store dependencies.
|
||||||
|
depfile Dependency file to output.
|
||||||
|
tmpdepfile Temporary file to use when outputing dependencies.
|
||||||
|
libtool Whether libtool is used (yes/no).
|
||||||
|
|
||||||
|
Report bugs to <bug-automake@gnu.org>.
|
||||||
|
EOF
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
-v | --v*)
|
||||||
|
echo "depcomp $scriptversion"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||||
|
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||||
|
depfile=${depfile-`echo "$object" |
|
||||||
|
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||||
|
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||||
|
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
|
||||||
|
# Some modes work just like other modes, but use different flags. We
|
||||||
|
# parameterize here, but still list the modes in the big case below,
|
||||||
|
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||||
|
# here, because this file can only contain one case statement.
|
||||||
|
if test "$depmode" = hp; then
|
||||||
|
# HP compiler uses -M and no extra arg.
|
||||||
|
gccflag=-M
|
||||||
|
depmode=gcc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = dashXmstdout; then
|
||||||
|
# This is just like dashmstdout with a different argument.
|
||||||
|
dashmflag=-xM
|
||||||
|
depmode=dashmstdout
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$depmode" in
|
||||||
|
gcc3)
|
||||||
|
## gcc 3 implements dependency tracking that does exactly what
|
||||||
|
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||||
|
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||||
|
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
mv "$tmpdepfile" "$depfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
gcc)
|
||||||
|
## There are various ways to get dependency output from gcc. Here's
|
||||||
|
## why we pick this rather obscure method:
|
||||||
|
## - Don't want to use -MD because we'd like the dependencies to end
|
||||||
|
## up in a subdir. Having to rename by hand is ugly.
|
||||||
|
## (We might end up doing this anyway to support other compilers.)
|
||||||
|
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||||
|
## -MM, not -M (despite what the docs say).
|
||||||
|
## - Using -M directly means running the compiler twice (even worse
|
||||||
|
## than renaming).
|
||||||
|
if test -z "$gccflag"; then
|
||||||
|
gccflag=-MD,
|
||||||
|
fi
|
||||||
|
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||||
|
## The second -e expression handles DOS-style file names with drive letters.
|
||||||
|
sed -e 's/^[^:]*: / /' \
|
||||||
|
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||||
|
## This next piece of magic avoids the `deleted header file' problem.
|
||||||
|
## The problem is that when a header file which appears in a .P file
|
||||||
|
## is deleted, the dependency causes make to die (because there is
|
||||||
|
## typically no way to rebuild the header). We avoid this by adding
|
||||||
|
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||||
|
## this for us directly.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" |
|
||||||
|
## Some versions of gcc put a space before the `:'. On the theory
|
||||||
|
## that the space means something, we add a space to the output as
|
||||||
|
## well.
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hp)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
sgi)
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||||
|
else
|
||||||
|
"$@" -MDupdate "$tmpdepfile"
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
|
||||||
|
# Clip off the initial element (the dependent). Don't try to be
|
||||||
|
# clever and replace this with sed code, as IRIX sed won't handle
|
||||||
|
# lines with more than a fixed number of characters (4096 in
|
||||||
|
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||||
|
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||||
|
# dependency line.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||||
|
tr '
|
||||||
|
' ' ' >> $depfile
|
||||||
|
echo >> $depfile
|
||||||
|
|
||||||
|
# The second pass generates a dummy entry for each header file.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||||
|
>> $depfile
|
||||||
|
else
|
||||||
|
# The sourcefile does not contain any dependencies, so just
|
||||||
|
# store a dummy comment line, to avoid errors with the Makefile
|
||||||
|
# "include basename.Plo" scheme.
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
aix)
|
||||||
|
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||||
|
# in a .u file. In older versions, this file always lives in the
|
||||||
|
# current directory. Also, the AIX compiler puts `$object:' at the
|
||||||
|
# start of each line; $object doesn't have directory information.
|
||||||
|
# Version 6 uses the directory in both cases.
|
||||||
|
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
|
||||||
|
tmpdepfile="$stripped.u"
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" -Wc,-M
|
||||||
|
else
|
||||||
|
"$@" -M
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then :
|
||||||
|
else
|
||||||
|
stripped=`echo "$stripped" | sed 's,^.*/,,'`
|
||||||
|
tmpdepfile="$stripped.u"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
outname="$stripped.o"
|
||||||
|
# Each line is of the form `foo.o: dependent.h'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||||
|
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
|
||||||
|
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
# The sourcefile does not contain any dependencies, so just
|
||||||
|
# store a dummy comment line, to avoid errors with the Makefile
|
||||||
|
# "include basename.Plo" scheme.
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
icc)
|
||||||
|
# Intel's C compiler understands `-MD -MF file'. However on
|
||||||
|
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
||||||
|
# ICC 7.0 will fill foo.d with something like
|
||||||
|
# foo.o: sub/foo.c
|
||||||
|
# foo.o: sub/foo.h
|
||||||
|
# which is wrong. We want:
|
||||||
|
# sub/foo.o: sub/foo.c
|
||||||
|
# sub/foo.o: sub/foo.h
|
||||||
|
# sub/foo.c:
|
||||||
|
# sub/foo.h:
|
||||||
|
# ICC 7.1 will output
|
||||||
|
# foo.o: sub/foo.c sub/foo.h
|
||||||
|
# and will wrap long lines using \ :
|
||||||
|
# foo.o: sub/foo.c ... \
|
||||||
|
# sub/foo.h ... \
|
||||||
|
# ...
|
||||||
|
|
||||||
|
"$@" -MD -MF "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
# Each line is of the form `foo.o: dependent.h',
|
||||||
|
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||||
|
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||||
|
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
# correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
|
||||||
|
sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
tru64)
|
||||||
|
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||||
|
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||||
|
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||||
|
# dependencies in `foo.d' instead, so we check for that too.
|
||||||
|
# Subdirectories are respected.
|
||||||
|
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||||
|
test "x$dir" = "x$object" && dir=
|
||||||
|
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||||
|
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
# With Tru64 cc, shared objects can also be used to make a
|
||||||
|
# static library. This mecanism is used in libtool 1.4 series to
|
||||||
|
# handle both shared and static libraries in a single compilation.
|
||||||
|
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
|
||||||
|
#
|
||||||
|
# With libtool 1.5 this exception was removed, and libtool now
|
||||||
|
# generates 2 separate objects for the 2 libraries. These two
|
||||||
|
# compilations output dependencies in in $dir.libs/$base.o.d and
|
||||||
|
# in $dir$base.o.d. We have to check for both files, because
|
||||||
|
# one of the two compilations can be disabled. We should prefer
|
||||||
|
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||||
|
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||||
|
# the former would cause a distcleancheck panic.
|
||||||
|
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
|
||||||
|
tmpdepfile2=$dir$base.o.d # libtool 1.5
|
||||||
|
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
|
||||||
|
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||||
|
"$@" -Wc,-MD
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.o.d
|
||||||
|
tmpdepfile2=$dir$base.d
|
||||||
|
tmpdepfile3=$dir$base.d
|
||||||
|
tmpdepfile4=$dir$base.d
|
||||||
|
"$@" -MD
|
||||||
|
fi
|
||||||
|
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||||
|
# That's a tab and a space in the [].
|
||||||
|
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
#nosideeffect)
|
||||||
|
# This comment above is used by automake to tell side-effect
|
||||||
|
# dependency tracking mechanisms from slower ones.
|
||||||
|
|
||||||
|
dashmstdout)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout, regardless of -o.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test $1 != '--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove `-o $object'.
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
test -z "$dashmflag" && dashmflag=-M
|
||||||
|
# Require at least two characters before searching for `:'
|
||||||
|
# in the target name. This is to cope with DOS-style filenames:
|
||||||
|
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
|
||||||
|
"$@" $dashmflag |
|
||||||
|
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" | \
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
dashXmstdout)
|
||||||
|
# This case only exists to satisfy depend.m4. It is never actually
|
||||||
|
# run, as this mode is specially recognized in the preamble.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
makedepend)
|
||||||
|
"$@" || exit $?
|
||||||
|
# Remove any Libtool call
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test $1 != '--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
# X makedepend
|
||||||
|
shift
|
||||||
|
cleared=no
|
||||||
|
for arg in "$@"; do
|
||||||
|
case $cleared in
|
||||||
|
no)
|
||||||
|
set ""; shift
|
||||||
|
cleared=yes ;;
|
||||||
|
esac
|
||||||
|
case "$arg" in
|
||||||
|
-D*|-I*)
|
||||||
|
set fnord "$@" "$arg"; shift ;;
|
||||||
|
# Strip any option that makedepend may not understand. Remove
|
||||||
|
# the object too, otherwise makedepend will parse it as a source file.
|
||||||
|
-*|$object)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"; shift ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
||||||
|
touch "$tmpdepfile"
|
||||||
|
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||||
|
rm -f "$depfile"
|
||||||
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
|
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||||
|
' | \
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||||
|
;;
|
||||||
|
|
||||||
|
cpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test $1 != '--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove `-o $object'.
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
"$@" -E |
|
||||||
|
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||||
|
sed '$ s: \\$::' > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
cat < "$tmpdepfile" >> "$depfile"
|
||||||
|
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvisualcpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout, regardless of -o,
|
||||||
|
# because we must use -o when running libtool.
|
||||||
|
"$@" || exit $?
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case "$arg" in
|
||||||
|
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||||
|
set fnord "$@"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
"$@" -E |
|
||||||
|
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||||
|
echo " " >> "$depfile"
|
||||||
|
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
none)
|
||||||
|
exec "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Unknown depmode $depmode" 1>&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-end: "$"
|
||||||
|
# End:
|
||||||
323
veejay-ng/install-sh
Executable file
323
veejay-ng/install-sh
Executable file
@@ -0,0 +1,323 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
|
scriptversion=2005-02-02.21
|
||||||
|
|
||||||
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
|
# following copyright and license.
|
||||||
|
#
|
||||||
|
# Copyright (C) 1994 X Consortium
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||||
|
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
# Except as contained in this notice, the name of the X Consortium shall not
|
||||||
|
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||||
|
# ings in this Software without prior written authorization from the X Consor-
|
||||||
|
# tium.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# FSF changes to this file are in the public domain.
|
||||||
|
#
|
||||||
|
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||||
|
# `make' implicit rules from creating a file called install from it
|
||||||
|
# when there is no Makefile.
|
||||||
|
#
|
||||||
|
# This script is compatible with the BSD install script, but was written
|
||||||
|
# from scratch. It can only install one file at a time, a restriction
|
||||||
|
# shared with many OS's install programs.
|
||||||
|
|
||||||
|
# set DOITPROG to echo to test this script
|
||||||
|
|
||||||
|
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||||
|
doit="${DOITPROG-}"
|
||||||
|
|
||||||
|
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||||
|
|
||||||
|
mvprog="${MVPROG-mv}"
|
||||||
|
cpprog="${CPPROG-cp}"
|
||||||
|
chmodprog="${CHMODPROG-chmod}"
|
||||||
|
chownprog="${CHOWNPROG-chown}"
|
||||||
|
chgrpprog="${CHGRPPROG-chgrp}"
|
||||||
|
stripprog="${STRIPPROG-strip}"
|
||||||
|
rmprog="${RMPROG-rm}"
|
||||||
|
mkdirprog="${MKDIRPROG-mkdir}"
|
||||||
|
|
||||||
|
chmodcmd="$chmodprog 0755"
|
||||||
|
chowncmd=
|
||||||
|
chgrpcmd=
|
||||||
|
stripcmd=
|
||||||
|
rmcmd="$rmprog -f"
|
||||||
|
mvcmd="$mvprog"
|
||||||
|
src=
|
||||||
|
dst=
|
||||||
|
dir_arg=
|
||||||
|
dstarg=
|
||||||
|
no_target_directory=
|
||||||
|
|
||||||
|
usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||||
|
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||||
|
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||||
|
or: $0 [OPTION]... -d DIRECTORIES...
|
||||||
|
|
||||||
|
In the 1st form, copy SRCFILE to DSTFILE.
|
||||||
|
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||||
|
In the 4th, create DIRECTORIES.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-c (ignored)
|
||||||
|
-d create directories instead of installing files.
|
||||||
|
-g GROUP $chgrpprog installed files to GROUP.
|
||||||
|
-m MODE $chmodprog installed files to MODE.
|
||||||
|
-o USER $chownprog installed files to USER.
|
||||||
|
-s $stripprog installed files.
|
||||||
|
-t DIRECTORY install into DIRECTORY.
|
||||||
|
-T report an error if DSTFILE is a directory.
|
||||||
|
--help display this help and exit.
|
||||||
|
--version display version info and exit.
|
||||||
|
|
||||||
|
Environment variables override the default commands:
|
||||||
|
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
|
||||||
|
"
|
||||||
|
|
||||||
|
while test -n "$1"; do
|
||||||
|
case $1 in
|
||||||
|
-c) shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-d) dir_arg=true
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
--help) echo "$usage"; exit $?;;
|
||||||
|
|
||||||
|
-m) chmodcmd="$chmodprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-s) stripcmd=$stripprog
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-t) dstarg=$2
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-T) no_target_directory=true
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
--version) echo "$0 $scriptversion"; exit $?;;
|
||||||
|
|
||||||
|
*) # When -d is used, all remaining arguments are directories to create.
|
||||||
|
# When -t is used, the destination is already specified.
|
||||||
|
test -n "$dir_arg$dstarg" && break
|
||||||
|
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$dstarg"; then
|
||||||
|
# $@ is not empty: it contains at least $arg.
|
||||||
|
set fnord "$@" "$dstarg"
|
||||||
|
shift # fnord
|
||||||
|
fi
|
||||||
|
shift # arg
|
||||||
|
dstarg=$arg
|
||||||
|
done
|
||||||
|
break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -z "$1"; then
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
echo "$0: no input file specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# It's OK to call `install-sh -d' without argument.
|
||||||
|
# This can happen when creating conditional directories.
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
for src
|
||||||
|
do
|
||||||
|
# Protect names starting with `-'.
|
||||||
|
case $src in
|
||||||
|
-*) src=./$src ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
dst=$src
|
||||||
|
src=
|
||||||
|
|
||||||
|
if test -d "$dst"; then
|
||||||
|
mkdircmd=:
|
||||||
|
chmodcmd=
|
||||||
|
else
|
||||||
|
mkdircmd=$mkdirprog
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||||
|
# might cause directories to be created, which would be especially bad
|
||||||
|
# if $src (and thus $dsttmp) contains '*'.
|
||||||
|
if test ! -f "$src" && test ! -d "$src"; then
|
||||||
|
echo "$0: $src does not exist." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dstarg"; then
|
||||||
|
echo "$0: no destination specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
dst=$dstarg
|
||||||
|
# Protect names starting with `-'.
|
||||||
|
case $dst in
|
||||||
|
-*) dst=./$dst ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# If destination is a directory, append the input filename; won't work
|
||||||
|
# if double slashes aren't ignored.
|
||||||
|
if test -d "$dst"; then
|
||||||
|
if test -n "$no_target_directory"; then
|
||||||
|
echo "$0: $dstarg: Is a directory" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dst=$dst/`basename "$src"`
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# This sed command emulates the dirname command.
|
||||||
|
dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
|
||||||
|
|
||||||
|
# Make sure that the destination directory exists.
|
||||||
|
|
||||||
|
# Skip lots of stat calls in the usual case.
|
||||||
|
if test ! -d "$dstdir"; then
|
||||||
|
defaultIFS='
|
||||||
|
'
|
||||||
|
IFS="${IFS-$defaultIFS}"
|
||||||
|
|
||||||
|
oIFS=$IFS
|
||||||
|
# Some sh's can't handle IFS=/ for some reason.
|
||||||
|
IFS='%'
|
||||||
|
set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||||
|
shift
|
||||||
|
IFS=$oIFS
|
||||||
|
|
||||||
|
pathcomp=
|
||||||
|
|
||||||
|
while test $# -ne 0 ; do
|
||||||
|
pathcomp=$pathcomp$1
|
||||||
|
shift
|
||||||
|
if test ! -d "$pathcomp"; then
|
||||||
|
$mkdirprog "$pathcomp"
|
||||||
|
# mkdir can fail with a `File exist' error in case several
|
||||||
|
# install-sh are creating the directory concurrently. This
|
||||||
|
# is OK.
|
||||||
|
test -d "$pathcomp" || exit
|
||||||
|
fi
|
||||||
|
pathcomp=$pathcomp/
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
$doit $mkdircmd "$dst" \
|
||||||
|
&& { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
|
||||||
|
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
|
||||||
|
&& { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
|
||||||
|
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
|
||||||
|
|
||||||
|
else
|
||||||
|
dstfile=`basename "$dst"`
|
||||||
|
|
||||||
|
# Make a couple of temp file names in the proper directory.
|
||||||
|
dsttmp=$dstdir/_inst.$$_
|
||||||
|
rmtmp=$dstdir/_rm.$$_
|
||||||
|
|
||||||
|
# Trap to clean up those temp files at exit.
|
||||||
|
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||||
|
trap '(exit $?); exit' 1 2 13 15
|
||||||
|
|
||||||
|
# Copy the file name to the temp name.
|
||||||
|
$doit $cpprog "$src" "$dsttmp" &&
|
||||||
|
|
||||||
|
# and set any options; do chmod last to preserve setuid bits.
|
||||||
|
#
|
||||||
|
# If any of these fail, we abort the whole thing. If we want to
|
||||||
|
# ignore errors from any of these, just make sure not to ignore
|
||||||
|
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||||
|
#
|
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
|
||||||
|
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
|
||||||
|
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
|
||||||
|
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
{ $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
|
||||||
|
|| {
|
||||||
|
# The rename failed, perhaps because mv can't rename something else
|
||||||
|
# to itself, or perhaps because mv is so ancient that it does not
|
||||||
|
# support -f.
|
||||||
|
|
||||||
|
# Now remove or move aside any old file at destination location.
|
||||||
|
# We try this two ways since rm can't unlink itself on some
|
||||||
|
# systems and the destination file might be busy for other
|
||||||
|
# reasons. In this case, the final cleanup might fail but the new
|
||||||
|
# file should still install successfully.
|
||||||
|
{
|
||||||
|
if test -f "$dstdir/$dstfile"; then
|
||||||
|
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
|
||||||
|
|| $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
|
||||||
|
|| {
|
||||||
|
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
|
||||||
|
(exit 1); exit 1
|
||||||
|
}
|
||||||
|
else
|
||||||
|
:
|
||||||
|
fi
|
||||||
|
} &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fi || { (exit 1); exit 1; }
|
||||||
|
done
|
||||||
|
|
||||||
|
# The final little trick to "correctly" pass the exit status to the exit trap.
|
||||||
|
{
|
||||||
|
(exit 0); exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-end: "$"
|
||||||
|
# End:
|
||||||
1
veejay-ng/libOSC/AUTHORS
Normal file
1
veejay-ng/libOSC/AUTHORS
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
15
veejay-ng/libOSC/Makefile.am
Normal file
15
veejay-ng/libOSC/Makefile.am
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
INCLUDES = -I$(top_srcdir)/libOSC -I$(includedir)
|
||||||
|
OSC_LIB_FILE = libOSC.la
|
||||||
|
noinst_LTLIBRARIES = $(OSC_LIB_FILE)
|
||||||
|
libOSC_la_CFLAGS = $(AM_CFLAGS)
|
||||||
|
libOSC_la_SOURCES = OSC-address-space.c \
|
||||||
|
OSC-callbacklist.c \
|
||||||
|
OSC-drop.c \
|
||||||
|
OSC-pattern-match.c \
|
||||||
|
OSC-priority-queue.c \
|
||||||
|
OSC-receive.c \
|
||||||
|
OSC-string-help.c \
|
||||||
|
OSC-common.c \
|
||||||
|
OSC-timetag.c \
|
||||||
|
NetworkReturnAddress.c
|
||||||
|
|
||||||
596
veejay-ng/libOSC/Makefile.in
Normal file
596
veejay-ng/libOSC/Makefile.in
Normal file
@@ -0,0 +1,596 @@
|
|||||||
|
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
SOURCES = $(libOSC_la_SOURCES)
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
target_triplet = @target@
|
||||||
|
subdir = libOSC
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in AUTHORS NEWS
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||||
|
libOSC_la_LIBADD =
|
||||||
|
am_libOSC_la_OBJECTS = libOSC_la-OSC-address-space.lo \
|
||||||
|
libOSC_la-OSC-callbacklist.lo libOSC_la-OSC-drop.lo \
|
||||||
|
libOSC_la-OSC-pattern-match.lo libOSC_la-OSC-priority-queue.lo \
|
||||||
|
libOSC_la-OSC-receive.lo libOSC_la-OSC-string-help.lo \
|
||||||
|
libOSC_la-OSC-common.lo libOSC_la-OSC-timetag.lo \
|
||||||
|
libOSC_la-NetworkReturnAddress.lo
|
||||||
|
libOSC_la_OBJECTS = $(am_libOSC_la_OBJECTS)
|
||||||
|
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(libOSC_la_SOURCES)
|
||||||
|
DIST_SOURCES = $(libOSC_la_SOURCES)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
ALTIVEC_CFLAGS = @ALTIVEC_CFLAGS@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AS = @AS@
|
||||||
|
ASFLAGS = @ASFLAGS@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCAS = @CCAS@
|
||||||
|
CCASFLAGS = @CCASFLAGS@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
FFLAGS = @FFLAGS@
|
||||||
|
FFMPEG_AVCODEC_CFLAGS = @FFMPEG_AVCODEC_CFLAGS@
|
||||||
|
FFMPEG_AVCODEC_LIBS = @FFMPEG_AVCODEC_LIBS@
|
||||||
|
FFMPEG_AVFORMAT_CFLAGS = @FFMPEG_AVFORMAT_CFLAGS@
|
||||||
|
FFMPEG_AVFORMAT_LIBS = @FFMPEG_AVFORMAT_LIBS@
|
||||||
|
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||||
|
GLIB_CONFIG = @GLIB_CONFIG@
|
||||||
|
GLIB_LIBS = @GLIB_LIBS@
|
||||||
|
GL_CFLAGS = @GL_CFLAGS@
|
||||||
|
GL_LIBS = @GL_LIBS@
|
||||||
|
HAVE_ALTIVEC_FALSE = @HAVE_ALTIVEC_FALSE@
|
||||||
|
HAVE_ALTIVEC_TRUE = @HAVE_ALTIVEC_TRUE@
|
||||||
|
HAVE_ASM_MMX2_FALSE = @HAVE_ASM_MMX2_FALSE@
|
||||||
|
HAVE_ASM_MMX2_TRUE = @HAVE_ASM_MMX2_TRUE@
|
||||||
|
HAVE_ASM_MMX_FALSE = @HAVE_ASM_MMX_FALSE@
|
||||||
|
HAVE_ASM_MMX_TRUE = @HAVE_ASM_MMX_TRUE@
|
||||||
|
HAVE_ASM_NASM_FALSE = @HAVE_ASM_NASM_FALSE@
|
||||||
|
HAVE_ASM_NASM_TRUE = @HAVE_ASM_NASM_TRUE@
|
||||||
|
HAVE_ASM_SSE2_FALSE = @HAVE_ASM_SSE2_FALSE@
|
||||||
|
HAVE_ASM_SSE2_TRUE = @HAVE_ASM_SSE2_TRUE@
|
||||||
|
HAVE_ASM_SSE_FALSE = @HAVE_ASM_SSE_FALSE@
|
||||||
|
HAVE_ASM_SSE_TRUE = @HAVE_ASM_SSE_TRUE@
|
||||||
|
HAVE_DL_DLOPEN_FALSE = @HAVE_DL_DLOPEN_FALSE@
|
||||||
|
HAVE_DL_DLOPEN_TRUE = @HAVE_DL_DLOPEN_TRUE@
|
||||||
|
HAVE_JACK_FALSE = @HAVE_JACK_FALSE@
|
||||||
|
HAVE_JACK_TRUE = @HAVE_JACK_TRUE@
|
||||||
|
HAVE_MMX2_FALSE = @HAVE_MMX2_FALSE@
|
||||||
|
HAVE_MMX2_TRUE = @HAVE_MMX2_TRUE@
|
||||||
|
HAVE_MMX_FALSE = @HAVE_MMX_FALSE@
|
||||||
|
HAVE_MMX_TRUE = @HAVE_MMX_TRUE@
|
||||||
|
HAVE_PPCCPU_FALSE = @HAVE_PPCCPU_FALSE@
|
||||||
|
HAVE_PPCCPU_TRUE = @HAVE_PPCCPU_TRUE@
|
||||||
|
HAVE_SDL_FALSE = @HAVE_SDL_FALSE@
|
||||||
|
HAVE_SDL_TRUE = @HAVE_SDL_TRUE@
|
||||||
|
HAVE_SSE2_FALSE = @HAVE_SSE2_FALSE@
|
||||||
|
HAVE_SSE2_TRUE = @HAVE_SSE2_TRUE@
|
||||||
|
HAVE_SSE_FALSE = @HAVE_SSE_FALSE@
|
||||||
|
HAVE_SSE_TRUE = @HAVE_SSE_TRUE@
|
||||||
|
HAVE_V4L_FALSE = @HAVE_V4L_FALSE@
|
||||||
|
HAVE_V4L_TRUE = @HAVE_V4L_TRUE@
|
||||||
|
HAVE_X86CPU_FALSE = @HAVE_X86CPU_FALSE@
|
||||||
|
HAVE_X86CPU_TRUE = @HAVE_X86CPU_TRUE@
|
||||||
|
HAVE_XML2_FALSE = @HAVE_XML2_FALSE@
|
||||||
|
HAVE_XML2_TRUE = @HAVE_XML2_TRUE@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBDV_CFLAGS = @LIBDV_CFLAGS@
|
||||||
|
LIBDV_LIBS = @LIBDV_LIBS@
|
||||||
|
LIBGETOPT_LIB = @LIBGETOPT_LIB@
|
||||||
|
LIBM_LIBS = @LIBM_LIBS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
LT_AGE = @LT_AGE@
|
||||||
|
LT_CURRENT = @LT_CURRENT@
|
||||||
|
LT_RELEASE = @LT_RELEASE@
|
||||||
|
LT_REVISION = @LT_REVISION@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MJPEGTOOLS_CFLAGS = @MJPEGTOOLS_CFLAGS@
|
||||||
|
MJPEGTOOLS_LIBS = @MJPEGTOOLS_LIBS@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PROGRAM_NOPIC = @PROGRAM_NOPIC@
|
||||||
|
PTHREAD_LIBS = @PTHREAD_LIBS@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SDL_CFLAGS = @SDL_CFLAGS@
|
||||||
|
SDL_CONFIG = @SDL_CONFIG@
|
||||||
|
SDL_LIBS = @SDL_LIBS@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
SUPPORT_READ_DV2_FALSE = @SUPPORT_READ_DV2_FALSE@
|
||||||
|
SUPPORT_READ_DV2_TRUE = @SUPPORT_READ_DV2_TRUE@
|
||||||
|
V4LCONF_LIBS = @V4LCONF_LIBS@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
XML2_CONFIG = @XML2_CONFIG@
|
||||||
|
XML_CPPFLAGS = @XML_CPPFLAGS@
|
||||||
|
XML_LIBS = @XML_LIBS@
|
||||||
|
ac_ct_AR = @ac_ct_AR@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||||
|
ac_ct_STRIP = @ac_ct_STRIP@
|
||||||
|
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target = @target@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
target_cpu = @target_cpu@
|
||||||
|
target_os = @target_os@
|
||||||
|
target_vendor = @target_vendor@
|
||||||
|
INCLUDES = -I$(top_srcdir)/libOSC -I$(includedir)
|
||||||
|
OSC_LIB_FILE = libOSC.la
|
||||||
|
noinst_LTLIBRARIES = $(OSC_LIB_FILE)
|
||||||
|
libOSC_la_CFLAGS = $(AM_CFLAGS)
|
||||||
|
libOSC_la_SOURCES = OSC-address-space.c \
|
||||||
|
OSC-callbacklist.c \
|
||||||
|
OSC-drop.c \
|
||||||
|
OSC-pattern-match.c \
|
||||||
|
OSC-priority-queue.c \
|
||||||
|
OSC-receive.c \
|
||||||
|
OSC-string-help.c \
|
||||||
|
OSC-common.c \
|
||||||
|
OSC-timetag.c \
|
||||||
|
NetworkReturnAddress.c
|
||||||
|
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .c .lo .o .obj
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libOSC/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu libOSC/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
clean-noinstLTLIBRARIES:
|
||||||
|
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||||
|
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
|
rm -f "$${dir}/so_locations"; \
|
||||||
|
done
|
||||||
|
libOSC.la: $(libOSC_la_OBJECTS) $(libOSC_la_DEPENDENCIES)
|
||||||
|
$(LINK) $(libOSC_la_LDFLAGS) $(libOSC_la_OBJECTS) $(libOSC_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libOSC_la-NetworkReturnAddress.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libOSC_la-OSC-address-space.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libOSC_la-OSC-callbacklist.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libOSC_la-OSC-common.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libOSC_la-OSC-drop.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libOSC_la-OSC-pattern-match.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libOSC_la-OSC-priority-queue.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libOSC_la-OSC-receive.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libOSC_la-OSC-string-help.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libOSC_la-OSC-timetag.Plo@am__quote@
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||||
|
|
||||||
|
.c.obj:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
libOSC_la-OSC-address-space.lo: OSC-address-space.c
|
||||||
|
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -MT libOSC_la-OSC-address-space.lo -MD -MP -MF "$(DEPDIR)/libOSC_la-OSC-address-space.Tpo" -c -o libOSC_la-OSC-address-space.lo `test -f 'OSC-address-space.c' || echo '$(srcdir)/'`OSC-address-space.c; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libOSC_la-OSC-address-space.Tpo" "$(DEPDIR)/libOSC_la-OSC-address-space.Plo"; else rm -f "$(DEPDIR)/libOSC_la-OSC-address-space.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='OSC-address-space.c' object='libOSC_la-OSC-address-space.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -c -o libOSC_la-OSC-address-space.lo `test -f 'OSC-address-space.c' || echo '$(srcdir)/'`OSC-address-space.c
|
||||||
|
|
||||||
|
libOSC_la-OSC-callbacklist.lo: OSC-callbacklist.c
|
||||||
|
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -MT libOSC_la-OSC-callbacklist.lo -MD -MP -MF "$(DEPDIR)/libOSC_la-OSC-callbacklist.Tpo" -c -o libOSC_la-OSC-callbacklist.lo `test -f 'OSC-callbacklist.c' || echo '$(srcdir)/'`OSC-callbacklist.c; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libOSC_la-OSC-callbacklist.Tpo" "$(DEPDIR)/libOSC_la-OSC-callbacklist.Plo"; else rm -f "$(DEPDIR)/libOSC_la-OSC-callbacklist.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='OSC-callbacklist.c' object='libOSC_la-OSC-callbacklist.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -c -o libOSC_la-OSC-callbacklist.lo `test -f 'OSC-callbacklist.c' || echo '$(srcdir)/'`OSC-callbacklist.c
|
||||||
|
|
||||||
|
libOSC_la-OSC-drop.lo: OSC-drop.c
|
||||||
|
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -MT libOSC_la-OSC-drop.lo -MD -MP -MF "$(DEPDIR)/libOSC_la-OSC-drop.Tpo" -c -o libOSC_la-OSC-drop.lo `test -f 'OSC-drop.c' || echo '$(srcdir)/'`OSC-drop.c; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libOSC_la-OSC-drop.Tpo" "$(DEPDIR)/libOSC_la-OSC-drop.Plo"; else rm -f "$(DEPDIR)/libOSC_la-OSC-drop.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='OSC-drop.c' object='libOSC_la-OSC-drop.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -c -o libOSC_la-OSC-drop.lo `test -f 'OSC-drop.c' || echo '$(srcdir)/'`OSC-drop.c
|
||||||
|
|
||||||
|
libOSC_la-OSC-pattern-match.lo: OSC-pattern-match.c
|
||||||
|
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -MT libOSC_la-OSC-pattern-match.lo -MD -MP -MF "$(DEPDIR)/libOSC_la-OSC-pattern-match.Tpo" -c -o libOSC_la-OSC-pattern-match.lo `test -f 'OSC-pattern-match.c' || echo '$(srcdir)/'`OSC-pattern-match.c; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libOSC_la-OSC-pattern-match.Tpo" "$(DEPDIR)/libOSC_la-OSC-pattern-match.Plo"; else rm -f "$(DEPDIR)/libOSC_la-OSC-pattern-match.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='OSC-pattern-match.c' object='libOSC_la-OSC-pattern-match.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -c -o libOSC_la-OSC-pattern-match.lo `test -f 'OSC-pattern-match.c' || echo '$(srcdir)/'`OSC-pattern-match.c
|
||||||
|
|
||||||
|
libOSC_la-OSC-priority-queue.lo: OSC-priority-queue.c
|
||||||
|
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -MT libOSC_la-OSC-priority-queue.lo -MD -MP -MF "$(DEPDIR)/libOSC_la-OSC-priority-queue.Tpo" -c -o libOSC_la-OSC-priority-queue.lo `test -f 'OSC-priority-queue.c' || echo '$(srcdir)/'`OSC-priority-queue.c; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libOSC_la-OSC-priority-queue.Tpo" "$(DEPDIR)/libOSC_la-OSC-priority-queue.Plo"; else rm -f "$(DEPDIR)/libOSC_la-OSC-priority-queue.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='OSC-priority-queue.c' object='libOSC_la-OSC-priority-queue.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -c -o libOSC_la-OSC-priority-queue.lo `test -f 'OSC-priority-queue.c' || echo '$(srcdir)/'`OSC-priority-queue.c
|
||||||
|
|
||||||
|
libOSC_la-OSC-receive.lo: OSC-receive.c
|
||||||
|
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -MT libOSC_la-OSC-receive.lo -MD -MP -MF "$(DEPDIR)/libOSC_la-OSC-receive.Tpo" -c -o libOSC_la-OSC-receive.lo `test -f 'OSC-receive.c' || echo '$(srcdir)/'`OSC-receive.c; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libOSC_la-OSC-receive.Tpo" "$(DEPDIR)/libOSC_la-OSC-receive.Plo"; else rm -f "$(DEPDIR)/libOSC_la-OSC-receive.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='OSC-receive.c' object='libOSC_la-OSC-receive.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -c -o libOSC_la-OSC-receive.lo `test -f 'OSC-receive.c' || echo '$(srcdir)/'`OSC-receive.c
|
||||||
|
|
||||||
|
libOSC_la-OSC-string-help.lo: OSC-string-help.c
|
||||||
|
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -MT libOSC_la-OSC-string-help.lo -MD -MP -MF "$(DEPDIR)/libOSC_la-OSC-string-help.Tpo" -c -o libOSC_la-OSC-string-help.lo `test -f 'OSC-string-help.c' || echo '$(srcdir)/'`OSC-string-help.c; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libOSC_la-OSC-string-help.Tpo" "$(DEPDIR)/libOSC_la-OSC-string-help.Plo"; else rm -f "$(DEPDIR)/libOSC_la-OSC-string-help.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='OSC-string-help.c' object='libOSC_la-OSC-string-help.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -c -o libOSC_la-OSC-string-help.lo `test -f 'OSC-string-help.c' || echo '$(srcdir)/'`OSC-string-help.c
|
||||||
|
|
||||||
|
libOSC_la-OSC-common.lo: OSC-common.c
|
||||||
|
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -MT libOSC_la-OSC-common.lo -MD -MP -MF "$(DEPDIR)/libOSC_la-OSC-common.Tpo" -c -o libOSC_la-OSC-common.lo `test -f 'OSC-common.c' || echo '$(srcdir)/'`OSC-common.c; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libOSC_la-OSC-common.Tpo" "$(DEPDIR)/libOSC_la-OSC-common.Plo"; else rm -f "$(DEPDIR)/libOSC_la-OSC-common.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='OSC-common.c' object='libOSC_la-OSC-common.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -c -o libOSC_la-OSC-common.lo `test -f 'OSC-common.c' || echo '$(srcdir)/'`OSC-common.c
|
||||||
|
|
||||||
|
libOSC_la-OSC-timetag.lo: OSC-timetag.c
|
||||||
|
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -MT libOSC_la-OSC-timetag.lo -MD -MP -MF "$(DEPDIR)/libOSC_la-OSC-timetag.Tpo" -c -o libOSC_la-OSC-timetag.lo `test -f 'OSC-timetag.c' || echo '$(srcdir)/'`OSC-timetag.c; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libOSC_la-OSC-timetag.Tpo" "$(DEPDIR)/libOSC_la-OSC-timetag.Plo"; else rm -f "$(DEPDIR)/libOSC_la-OSC-timetag.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='OSC-timetag.c' object='libOSC_la-OSC-timetag.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -c -o libOSC_la-OSC-timetag.lo `test -f 'OSC-timetag.c' || echo '$(srcdir)/'`OSC-timetag.c
|
||||||
|
|
||||||
|
libOSC_la-NetworkReturnAddress.lo: NetworkReturnAddress.c
|
||||||
|
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -MT libOSC_la-NetworkReturnAddress.lo -MD -MP -MF "$(DEPDIR)/libOSC_la-NetworkReturnAddress.Tpo" -c -o libOSC_la-NetworkReturnAddress.lo `test -f 'NetworkReturnAddress.c' || echo '$(srcdir)/'`NetworkReturnAddress.c; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libOSC_la-NetworkReturnAddress.Tpo" "$(DEPDIR)/libOSC_la-NetworkReturnAddress.Plo"; else rm -f "$(DEPDIR)/libOSC_la-NetworkReturnAddress.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='NetworkReturnAddress.c' object='libOSC_la-NetworkReturnAddress.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libOSC_la_CFLAGS) $(CFLAGS) -c -o libOSC_la-NetworkReturnAddress.lo `test -f 'NetworkReturnAddress.c' || echo '$(srcdir)/'`NetworkReturnAddress.c
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
|
uninstall-info-am:
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$tags $$unique; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$tags $$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(LTLIBRARIES)
|
||||||
|
installdirs:
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
|
||||||
|
mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||||
|
clean-libtool clean-noinstLTLIBRARIES ctags distclean \
|
||||||
|
distclean-compile distclean-generic distclean-libtool \
|
||||||
|
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am install-man \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
|
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||||
|
pdf pdf-am ps ps-am tags uninstall uninstall-am \
|
||||||
|
uninstall-info-am
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
0
veejay-ng/libOSC/NEWS
Normal file
0
veejay-ng/libOSC/NEWS
Normal file
58
veejay-ng/libOSC/NetworkReturnAddress.c
Normal file
58
veejay-ng/libOSC/NetworkReturnAddress.c
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
NetworkReturnAddress.c
|
||||||
|
|
||||||
|
This version implements UDP return addresses on SGI
|
||||||
|
|
||||||
|
Matt Wright,
|
||||||
|
9/11/98
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <libOSC/OSC-common.h>
|
||||||
|
#include <libOSC/OSC-timetag.h>
|
||||||
|
#include <libOSC/OSC-address-space.h>
|
||||||
|
#include <libOSC/NetworkReturnAddress.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <libOSC/NetworkUDP.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int SizeOfNetworkReturnAddress(void) {
|
||||||
|
return sizeof(struct NetworkReturnAddressStruct);
|
||||||
|
}
|
||||||
|
|
||||||
|
Boolean NetworkSendReturnMessage(NetworkReturnAddressPtr addr,
|
||||||
|
int n,
|
||||||
|
void *buf) {
|
||||||
|
if (addr == 0) return FALSE;
|
||||||
|
|
||||||
|
return n == sendto(addr->sockfd, buf, n, 0, &(addr->cl_addr), addr->clilen);
|
||||||
|
}
|
||||||
52
veejay-ng/libOSC/NetworkReturnAddress.h
Normal file
52
veejay-ng/libOSC/NetworkReturnAddress.h
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
NetworkReturnAddress.h
|
||||||
|
|
||||||
|
API that the OSC Kit uses to deal with network return addresses. You will
|
||||||
|
fill in parts of this file and write NetworkReturnAddress.c to implement
|
||||||
|
this API via whatever network services you use.
|
||||||
|
|
||||||
|
NB: This API is the only interface the Kit uses for dealing with network
|
||||||
|
addresses, but of course the part of the application that accepts incoming
|
||||||
|
packets needs to know about network return addresses so it can fill in the
|
||||||
|
correct return address when it receives a packet.
|
||||||
|
|
||||||
|
Matt Wright,
|
||||||
|
6/3/98
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Return sizeof(struct NetworkReturnAddressStruct). */
|
||||||
|
int SizeOfNetworkReturnAddress(void);
|
||||||
|
|
||||||
|
/* Send a packet back to the client, or do nothing if addr==0 */
|
||||||
|
Boolean NetworkSendReturnMessage(NetworkReturnAddressPtr addr,
|
||||||
|
int n,
|
||||||
|
void *buf);
|
||||||
7
veejay-ng/libOSC/NetworkUDP.h
Normal file
7
veejay-ng/libOSC/NetworkUDP.h
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#include <netinet/in.h>
|
||||||
|
|
||||||
|
struct NetworkReturnAddressStruct {
|
||||||
|
struct sockaddr_in cl_addr;
|
||||||
|
int clilen;
|
||||||
|
int sockfd;
|
||||||
|
};
|
||||||
599
veejay-ng/libOSC/OSC-address-space.c
Normal file
599
veejay-ng/libOSC/OSC-address-space.c
Normal file
@@ -0,0 +1,599 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
OSC-address-space.c
|
||||||
|
Matt Wright, 3/16/98
|
||||||
|
*/
|
||||||
|
#include <config.h>
|
||||||
|
#include <libOSC/OSC-common.h>
|
||||||
|
#include <libOSC/OSC-timetag.h>
|
||||||
|
#include <libOSC/OSC-address-space.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#define MAX_ALIASES_PER_CONTAINER 3
|
||||||
|
#define MAX_CHILDREN_PER_CONTAINER 20
|
||||||
|
#define MAX_METHODS_PER_CONTAINER 30
|
||||||
|
#define BASE_NUM_TO_REALLOCATE 10
|
||||||
|
|
||||||
|
|
||||||
|
struct OSCContainerStruct {
|
||||||
|
struct OSCContainerStruct *parent;
|
||||||
|
int numChildren;
|
||||||
|
Name childrenNames[MAX_CHILDREN_PER_CONTAINER];
|
||||||
|
struct OSCContainerStruct *children[MAX_CHILDREN_PER_CONTAINER];
|
||||||
|
int numMethods;
|
||||||
|
Name methodNames[MAX_METHODS_PER_CONTAINER];
|
||||||
|
OSCMethod methods[MAX_METHODS_PER_CONTAINER];
|
||||||
|
struct OSCContainerQueryResponseInfoStruct QueryResponseInfo;
|
||||||
|
struct OSCContainerStruct *next;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OSCMethodStruct {
|
||||||
|
methodCallback callback;
|
||||||
|
void *context;
|
||||||
|
struct OSCMethodQueryResponseInfoStruct QueryResponseInfo;
|
||||||
|
struct OSCMethodStruct *next;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Globals */
|
||||||
|
static Boolean Initialized = FALSE;
|
||||||
|
static OSCcontainer OSCTopLevelContainer;
|
||||||
|
static OSCcontainer freeContainers; /* Linked list via next field. */
|
||||||
|
static OSCMethod freeMethods; /* Linked list via next field. */
|
||||||
|
static void *(*RealTimeMemoryAllocator)(int numBytes);
|
||||||
|
|
||||||
|
|
||||||
|
/* Note: The free list of containers should actually be a "free forest", so
|
||||||
|
that all the subcontainers recursively under a freed container are
|
||||||
|
automatically freed.
|
||||||
|
|
||||||
|
FREE: just stick the freed subtree on the front of the list.
|
||||||
|
|
||||||
|
ALLOC: Take all the children of the first container on the list and
|
||||||
|
insert them in the free list, then return that first container.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/************************ Initialization and Memory ************************/
|
||||||
|
|
||||||
|
static void MakeFreeContainersList(int n) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i+1 < n; ++i) {
|
||||||
|
freeContainers[i].next = &(freeContainers[i+1]);
|
||||||
|
}
|
||||||
|
freeContainers[n-1].next = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void MakeFreeMethodsList(int n) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i+1 < n; ++i) {
|
||||||
|
freeMethods[i].next = &(freeMethods[i+1]);
|
||||||
|
}
|
||||||
|
freeMethods[n-1].next = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCcontainer OSCInitAddressSpace(struct OSCAddressSpaceMemoryTuner *t) {
|
||||||
|
int bytesNeeded;
|
||||||
|
|
||||||
|
if (Initialized)
|
||||||
|
fatal_error("OSCInitAddressSpace: already initialized!");
|
||||||
|
Initialized = TRUE;
|
||||||
|
|
||||||
|
RealTimeMemoryAllocator = t->RealTimeMemoryAllocator;
|
||||||
|
|
||||||
|
bytesNeeded = (1 + t->initNumContainers) * sizeof(*freeContainers);
|
||||||
|
freeContainers = (OSCcontainer) (*(t->InitTimeMemoryAllocator))(bytesNeeded);
|
||||||
|
if (freeContainers == 0) {
|
||||||
|
fatal_error("OSCInitAddressSpace: couldn't allocate %d bytes for %d containers",
|
||||||
|
bytesNeeded, t->initNumContainers);
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCTopLevelContainer = &freeContainers[t->initNumContainers];
|
||||||
|
MakeFreeContainersList(t->initNumContainers);
|
||||||
|
|
||||||
|
bytesNeeded = t->initNumMethods * sizeof(*freeMethods);
|
||||||
|
freeMethods = (OSCMethod) (*(t->InitTimeMemoryAllocator))(bytesNeeded);
|
||||||
|
if (freeMethods == 0) {
|
||||||
|
fatal_error("OSCInitAddressSpace: couldn't allocate %d bytes for %d methods",
|
||||||
|
bytesNeeded, t->initNumMethods);
|
||||||
|
}
|
||||||
|
MakeFreeMethodsList(t->initNumMethods);
|
||||||
|
|
||||||
|
/* Initialize the top-level container */
|
||||||
|
OSCTopLevelContainer->parent = 0;
|
||||||
|
OSCTopLevelContainer->numChildren = 0;
|
||||||
|
OSCTopLevelContainer->numMethods = 0;
|
||||||
|
OSCTopLevelContainer->QueryResponseInfo.comment = "OSC top-level container";
|
||||||
|
OSCTopLevelContainer->next = 0;
|
||||||
|
|
||||||
|
return OSCTopLevelContainer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Container and method memory management: linked lists of free objects */
|
||||||
|
|
||||||
|
static OSCcontainer AllocContainer(void) {
|
||||||
|
static int numExtraAllocs = 0;
|
||||||
|
|
||||||
|
OSCcontainer result;
|
||||||
|
if (freeContainers != 0) {
|
||||||
|
result = freeContainers;
|
||||||
|
freeContainers = freeContainers->next;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCWarning("Out of memory for containers; trying to allocate more in real time");
|
||||||
|
{
|
||||||
|
int num = BASE_NUM_TO_REALLOCATE * ++numExtraAllocs;
|
||||||
|
freeContainers = (*RealTimeMemoryAllocator)(num * sizeof(*freeContainers));
|
||||||
|
if (freeContainers == 0) {
|
||||||
|
OSCWarning("Real-time allocation failed");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
MakeFreeContainersList(num);
|
||||||
|
return AllocContainer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//static void FreeContainer(OSCcontainer c) {
|
||||||
|
// c->next = freeContainers;
|
||||||
|
// freeContainers = c;
|
||||||
|
//}
|
||||||
|
|
||||||
|
static OSCMethod AllocMethod(void) {
|
||||||
|
static int numExtraAllocs = 0;
|
||||||
|
OSCMethod result;
|
||||||
|
|
||||||
|
if (freeMethods != 0) {
|
||||||
|
result = freeMethods;
|
||||||
|
freeMethods = freeMethods->next;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCWarning("Out of memory for methods; trying to allocate more in real time");
|
||||||
|
{
|
||||||
|
int num = BASE_NUM_TO_REALLOCATE * ++numExtraAllocs;
|
||||||
|
freeMethods = (*RealTimeMemoryAllocator)(num * sizeof(*freeMethods));
|
||||||
|
if (freeMethods == 0) {
|
||||||
|
OSCWarning("Real-time allocation failed");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
MakeFreeMethodsList(num);
|
||||||
|
return AllocMethod();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//static void FreeMethod(OSCMethod c) {
|
||||||
|
// c->next = freeMethods;
|
||||||
|
// freeMethods = c;
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************** Containers ****************************/
|
||||||
|
|
||||||
|
/* Managing the tree of containers and subcontainers, with aliases */
|
||||||
|
|
||||||
|
void AddSubContainer(OSCcontainer parent, OSCcontainer child, Name name) {
|
||||||
|
if (parent->numChildren >= MAX_CHILDREN_PER_CONTAINER) {
|
||||||
|
fatal_error("AddSubContainer: exceeded MAX_CHILDREN_PER_CONTAINER (%d)\n"
|
||||||
|
"Increase the value in OSC-address-space.c and recompile.",
|
||||||
|
MAX_CHILDREN_PER_CONTAINER);
|
||||||
|
}
|
||||||
|
|
||||||
|
parent->childrenNames[parent->numChildren] = name;
|
||||||
|
parent->children[parent->numChildren] = child;
|
||||||
|
++(parent->numChildren);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Boolean OSCAddContainerAlias(OSCcontainer container, Name otherName) {
|
||||||
|
if (container->parent->numChildren >= MAX_CHILDREN_PER_CONTAINER) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
AddSubContainer(container->parent, container, otherName);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemoveSubContainer(OSCcontainer parent, OSCcontainer child) {
|
||||||
|
int i, numRemoved;
|
||||||
|
|
||||||
|
/* Remove every pointer to the container, even if it has multiple aliases */
|
||||||
|
|
||||||
|
numRemoved = 0;
|
||||||
|
for (i = 0; i < parent->numChildren; ++i) {
|
||||||
|
if (parent->children[i] != child) {
|
||||||
|
parent->children[i-numRemoved] = parent->children[i];
|
||||||
|
parent->childrenNames[i-numRemoved] = parent->childrenNames[i];
|
||||||
|
} else {
|
||||||
|
++numRemoved;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
parent->numChildren -= numRemoved;
|
||||||
|
|
||||||
|
if (numRemoved == 0) {
|
||||||
|
fatal_error("RemoveSubContainer: subcontainer not found!\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Boolean OSCRemoveContainerAlias(OSCcontainer container, Name otherName) {
|
||||||
|
int i, j;
|
||||||
|
OSCcontainer parent = container->parent;
|
||||||
|
Boolean found = FALSE;
|
||||||
|
|
||||||
|
for (i = 0; i < parent->numChildren; ++i) {
|
||||||
|
if (parent->childrenNames[i] == otherName) {
|
||||||
|
if (parent->children[i] != container) {
|
||||||
|
fatal_error("OSCRemoveContainerAlias: %s is actually a sibling's name!",
|
||||||
|
otherName);
|
||||||
|
}
|
||||||
|
found = TRUE;
|
||||||
|
for (j = i+1; j < parent->numChildren; ++j) {
|
||||||
|
parent->children[j-1] = parent->children[j];
|
||||||
|
parent->childrenNames[j-1] = parent->childrenNames[j];
|
||||||
|
--(parent->numChildren);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!found) {
|
||||||
|
fatal_error("OSCRemoveContainerAlias: %s not found!", otherName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Now make sure the child still exists under another name */
|
||||||
|
for (i = 0; i < parent->numChildren; ++i) {
|
||||||
|
if (parent->children[i] == container) return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCWarning("OSCRemoveContainerAlias: %s was the last name for that subcontainer");
|
||||||
|
|
||||||
|
/* xxx should recursively free the container and its children... */
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
OSCcontainer OSCNewContainer(Name name, OSCcontainer parent,
|
||||||
|
struct OSCContainerQueryResponseInfoStruct *QueryResponseInfo) {
|
||||||
|
OSCcontainer me;
|
||||||
|
|
||||||
|
me = AllocContainer();
|
||||||
|
if (me == 0) return 0;
|
||||||
|
|
||||||
|
if (strchr(name, '/') != NULL) {
|
||||||
|
OSCProblem("Container name \"%s\" contains a slash --- not good.",
|
||||||
|
name);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
me->parent = parent;
|
||||||
|
AddSubContainer(me->parent, me, name);
|
||||||
|
me->numChildren = 0;
|
||||||
|
me->numMethods = 0;
|
||||||
|
me->QueryResponseInfo = (*QueryResponseInfo);
|
||||||
|
return me;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static const char *ContainerName(OSCcontainer c) {
|
||||||
|
/* Return the first name associated with me in my parent's child list.
|
||||||
|
(Assume all later ones are aliases.) */
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < c->parent->numChildren; ++i) {
|
||||||
|
if (c->parent->children[i] == c) {
|
||||||
|
return c->parent->childrenNames[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fatal_error("ContainerName: Container %p isn't in its parent's child list.", c);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int gasHelp(char *target, int maxlength, OSCcontainer c );
|
||||||
|
|
||||||
|
Boolean OSCGetAddressString(char *target, int maxLength, OSCcontainer c) {
|
||||||
|
int lenNeeded;
|
||||||
|
|
||||||
|
if (maxLength <= 1) return FALSE;
|
||||||
|
|
||||||
|
lenNeeded = gasHelp(target, maxLength-1, c) + 1; /* -1, +1 are for null char. */
|
||||||
|
if (lenNeeded > maxLength) {
|
||||||
|
OSCProblem("Address string too long (room for %d chars; need %d)",
|
||||||
|
maxLength, lenNeeded);
|
||||||
|
target[0] = '\0';
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int gasHelp(char *target, int maxLength, OSCcontainer c) {
|
||||||
|
int sublength, length;
|
||||||
|
const char *myName;
|
||||||
|
|
||||||
|
/* printf("*** gasHelp %s %d %p %s\n", target, maxLength, c, c->name); */
|
||||||
|
|
||||||
|
if (c == OSCTopLevelContainer) {
|
||||||
|
target[0] = '/';
|
||||||
|
target[1] = '\0';
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
myName = ContainerName(c);
|
||||||
|
sublength = gasHelp(target, maxLength, c->parent);
|
||||||
|
length = sublength + strlen(myName) + 1; /* +1 is for trailing slash */
|
||||||
|
if (length > maxLength) {
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy(target+sublength, myName);
|
||||||
|
target[length-1] = '/';
|
||||||
|
target[length] = '\0';
|
||||||
|
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************** Methods ****************************/
|
||||||
|
|
||||||
|
#define LONG_ADDR_SIZE 1000 /* Just for error messages */
|
||||||
|
|
||||||
|
OSCMethod OSCNewMethod(Name name, OSCcontainer me, methodCallback callback,
|
||||||
|
void *context, struct OSCMethodQueryResponseInfoStruct *QueryResponseInfo) {
|
||||||
|
|
||||||
|
char addr[LONG_ADDR_SIZE];
|
||||||
|
OSCMethod m;
|
||||||
|
|
||||||
|
if (strchr(name, '/') != NULL) {
|
||||||
|
OSCProblem("Method name \"%s\" contains a slash --- not good.",
|
||||||
|
name);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (me->numMethods >= MAX_METHODS_PER_CONTAINER) {
|
||||||
|
addr[0] = '\0';
|
||||||
|
OSCGetAddressString(addr, LONG_ADDR_SIZE, me);
|
||||||
|
OSCProblem("OSCNewMethod: container %s already has %d methods; can't add another\n"
|
||||||
|
"Change MAX_METHODS_PER_CONTAINER in OSC-address-space.c and recompile.",
|
||||||
|
addr, me->numMethods);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
m = AllocMethod();
|
||||||
|
if (!m) return 0;
|
||||||
|
|
||||||
|
m->callback = callback;
|
||||||
|
m->context = context;
|
||||||
|
m->QueryResponseInfo = *QueryResponseInfo;
|
||||||
|
|
||||||
|
me->methodNames[me->numMethods] = name;
|
||||||
|
me->methods[me->numMethods] = m;
|
||||||
|
++(me->numMethods);
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************** Queries ****************************/
|
||||||
|
|
||||||
|
void OSCInitContainerQueryResponseInfo(struct OSCContainerQueryResponseInfoStruct *i) {
|
||||||
|
i->comment = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OSCInitMethodQueryResponseInfo(struct OSCMethodQueryResponseInfoStruct *i) {
|
||||||
|
i->description = 0;
|
||||||
|
i->pvq = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************* Debug ********************************/
|
||||||
|
|
||||||
|
|
||||||
|
static int ContainerAliases(OSCcontainer c, char *target) {
|
||||||
|
/* Write a space-delimited list of alias names in the given string,
|
||||||
|
and return the number */
|
||||||
|
int i, n;
|
||||||
|
|
||||||
|
if (c == OSCTopLevelContainer) return 0;
|
||||||
|
target[0] = '\0';
|
||||||
|
n = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < c->parent->numChildren; ++i) {
|
||||||
|
if (c->parent->children[i] == c) {
|
||||||
|
if (n > 0) {
|
||||||
|
strcat(target, " ");
|
||||||
|
strcat(target, c->parent->childrenNames[i]);
|
||||||
|
}
|
||||||
|
++n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (n == 0) fatal_error("ContainerAliases: internal inconsistency");
|
||||||
|
|
||||||
|
return n-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define BIG_ADDRESS 50
|
||||||
|
|
||||||
|
static void PrintHelp(OSCcontainer c) {
|
||||||
|
char addr[BIG_ADDRESS];
|
||||||
|
char aliasNames[1000];
|
||||||
|
|
||||||
|
int i, j, numAliases;
|
||||||
|
|
||||||
|
if (OSCGetAddressString(addr, BIG_ADDRESS, c) == FALSE) {
|
||||||
|
printf(" /.../%s", ContainerName(c));
|
||||||
|
} else {
|
||||||
|
printf(" %s", addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
numAliases = ContainerAliases(c, aliasNames);
|
||||||
|
if (numAliases > 0) {
|
||||||
|
printf(" (%d aliases:%s)", numAliases, aliasNames);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
for (i = 0; i < c->numMethods; ++i) {
|
||||||
|
printf(" %s%s: %s\n", addr, c->methodNames[i],
|
||||||
|
c->methods[i]->QueryResponseInfo.description);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Forgive this quadratic kludge: */
|
||||||
|
for (i = 0; i < c->numChildren; ++i) {
|
||||||
|
int matches = 0;
|
||||||
|
for (j = 0; j < i; ++j) {
|
||||||
|
if (c->children[j] == c->children[i]) {
|
||||||
|
/* c->children[i] is just an alias to c->children[j],
|
||||||
|
which we already printed, so ignore it. */
|
||||||
|
matches ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(matches == 0 ) PrintHelp(c->children[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OSCPrintWholeAddressSpace(void) {
|
||||||
|
printf("\n----- The OSC address space -----\n");
|
||||||
|
PrintHelp(OSCTopLevelContainer);
|
||||||
|
printf("...end of OSC address space.\n\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************** Dispatching *****************************/
|
||||||
|
|
||||||
|
#include <libOSC/OSC-dispatch.h>
|
||||||
|
#include <libOSC/OSC-callbacklist.h>
|
||||||
|
#include <libOSC/OSC-pattern-match.h>
|
||||||
|
|
||||||
|
/* To do quick concatenation of singly-linked lists, we pass around
|
||||||
|
this data structure that points to the first and last elements: */
|
||||||
|
|
||||||
|
typedef struct callbackListEnds_struct {
|
||||||
|
callbackList begin;
|
||||||
|
callbackList end;
|
||||||
|
} callbackListEnds;
|
||||||
|
|
||||||
|
/* Helper proc. declarations */
|
||||||
|
static callbackListEnds DispatchSubMessage(char *pattern, OSCcontainer c);
|
||||||
|
static char *NextSlashOrNull(char *p);
|
||||||
|
|
||||||
|
|
||||||
|
callbackList OSCDispatchMessage(char *pattern) {
|
||||||
|
callbackListEnds result;
|
||||||
|
|
||||||
|
if (pattern[0] != '/') {
|
||||||
|
OSCProblem("Invalid address \"%s\" does not begin with /", pattern);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = DispatchSubMessage(pattern+1, OSCTopLevelContainer);
|
||||||
|
|
||||||
|
return result.begin;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LONG_ADDR_LEN 100
|
||||||
|
|
||||||
|
|
||||||
|
static callbackListEnds DispatchSubMessage(char *pattern, OSCcontainer c) {
|
||||||
|
callbackListEnds result;
|
||||||
|
char *nextSlash, *restOfPattern;
|
||||||
|
char offendingAddr[LONG_ADDR_LEN];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
result.begin = result.end = 0;
|
||||||
|
nextSlash = NextSlashOrNull(pattern);
|
||||||
|
|
||||||
|
if (*nextSlash == '\0') {
|
||||||
|
/* Base case: the pattern names methods of this container. */
|
||||||
|
for (i = 0; i < c->numMethods; i++) {
|
||||||
|
if (PatternMatch(pattern, c->methodNames[i])) {
|
||||||
|
callbackList node = AllocCallbackListNode(c->methods[i]->callback,
|
||||||
|
c->methods[i]->context,
|
||||||
|
result.begin);
|
||||||
|
if (node == 0) {
|
||||||
|
/* Excuse the hairyness of the code to generate the error message. */
|
||||||
|
if (OSCGetAddressString(offendingAddr,
|
||||||
|
LONG_ADDR_LEN-strlen(c->methodNames[i]),
|
||||||
|
c)) {
|
||||||
|
strcat(offendingAddr, c->methodNames[i]);
|
||||||
|
} else {
|
||||||
|
strcpy(offendingAddr, c->methodNames[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCWarning("No memory for callback node; not invoking %s",
|
||||||
|
offendingAddr);
|
||||||
|
} else {
|
||||||
|
if (result.end == 0) {
|
||||||
|
result.end = node;
|
||||||
|
}
|
||||||
|
result.begin = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* Recursive case: in the middle of an address, so the job at this
|
||||||
|
step is to look for containers that match. We temporarily turn
|
||||||
|
the next slash into a null so pattern will be a null-terminated
|
||||||
|
string of the stuff between the slashes. */
|
||||||
|
*nextSlash = '\0';
|
||||||
|
restOfPattern = nextSlash + 1;
|
||||||
|
|
||||||
|
for (i = 0; i < c->numChildren; ++i) {
|
||||||
|
if (PatternMatch(pattern, c->childrenNames[i])) {
|
||||||
|
callbackListEnds subResult =
|
||||||
|
DispatchSubMessage(restOfPattern, c->children[i]);
|
||||||
|
if (result.end == 0) {
|
||||||
|
result = subResult;
|
||||||
|
} else {
|
||||||
|
subResult.end->next = result.begin;
|
||||||
|
result.begin = subResult.begin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*nextSlash = '/';
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static char *NextSlashOrNull(char *p) {
|
||||||
|
while (*p != '/' && *p != '\0') {
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
364
veejay-ng/libOSC/OSC-address-space.h
Normal file
364
veejay-ng/libOSC/OSC-address-space.h
Normal file
@@ -0,0 +1,364 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
OSC-address-space.h
|
||||||
|
Matt Wright, 11/20/97
|
||||||
|
Version 2.0 5/28/98
|
||||||
|
|
||||||
|
C interface for registering the nodes in the OSC address space for an
|
||||||
|
application.
|
||||||
|
|
||||||
|
include OSC-timetag.h before this file
|
||||||
|
|
||||||
|
****************************** Introduction ******************************
|
||||||
|
|
||||||
|
|
||||||
|
The model is based on our original C++ design and consists of two kinds of
|
||||||
|
objects:
|
||||||
|
|
||||||
|
methods are the leaf nodes of the address space hierarchy. A complete OSC
|
||||||
|
address corresponds to a particular method, which has a corresponding
|
||||||
|
callback procedure that will be invoked to implement commands sent by an
|
||||||
|
OSC client.
|
||||||
|
|
||||||
|
containers are branch nodes of the address space hierarchy, and contain
|
||||||
|
methods and other containers. Each container has a single namespace;
|
||||||
|
it cannot contain a method and a subcontainer with the same name.
|
||||||
|
|
||||||
|
For example, let's examine the OSC message "/resonators/foo/decay 2.5". The
|
||||||
|
address of this message is "/resonators/foo/decay" and the message has a
|
||||||
|
single argument, 2.5. We'd say that the object corresponding to the prefix
|
||||||
|
"/resonators" is a container, and that it contains another container whose
|
||||||
|
address is "/resonators/foo". The "/resonators/foo" container has a method
|
||||||
|
"decay".
|
||||||
|
|
||||||
|
The memory model used by this module is pre-allocation of fixed-size objects
|
||||||
|
for containers, methods, and other internal objects. This preallocated
|
||||||
|
memory is dynamically managed internally by a custom high-performance memory
|
||||||
|
allocator. When the preallocated memory runs out, this module calls an
|
||||||
|
optional realtime memory allocator that you provide. If your memory allocator
|
||||||
|
gives this module more memory, it will add it to the pool of objects and
|
||||||
|
never free the memory. If your system does not have a realtime memory
|
||||||
|
allocator, provide a procedure that always returns 0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*************************** Type Definitions ******************************/
|
||||||
|
|
||||||
|
/* Users of this module don't get to see what's inside these objects */
|
||||||
|
typedef struct OSCContainerStruct *OSCcontainer;
|
||||||
|
typedef struct OSCMethodStruct *OSCMethod;
|
||||||
|
|
||||||
|
/* This makes it easy to change the way we represent symbolic names: */
|
||||||
|
typedef const char *Name;
|
||||||
|
|
||||||
|
|
||||||
|
/************************ Initialization and Memory ************************/
|
||||||
|
|
||||||
|
/* You will fill an OSCAddressSpaceMemoryTuner struct with the parameters that
|
||||||
|
determine how memory will be allocated.
|
||||||
|
|
||||||
|
initNumContainers is the number of containers that will be allocated at
|
||||||
|
initialization time. This should be the maximum number of containers you
|
||||||
|
ever expect to have in your address space.
|
||||||
|
|
||||||
|
initNumMethods is the number of methods that will be allocated at
|
||||||
|
initialization time. If you register the same method callback procedure
|
||||||
|
multiple times at different places in the address space, each of these
|
||||||
|
locations counts as a separate method as far as memory allocation is
|
||||||
|
concerned.
|
||||||
|
|
||||||
|
The MemoryAllocator fields are procedures you will provide that allocate
|
||||||
|
memory. Like malloc(), they take the number of bytes as arguments and return
|
||||||
|
either a pointer to the new memory or 0 for failure. This memory will never
|
||||||
|
be freed.
|
||||||
|
|
||||||
|
The InitTimeMemoryAllocator will be called only at initialization time,
|
||||||
|
i.e., before OSCInitAddressSpace() returns. If it ever returns 0, that's
|
||||||
|
a fatal error.
|
||||||
|
|
||||||
|
The RealTimeMemoryAllocator will be called if, while the application is
|
||||||
|
running, the address space grows larger than can fit in what was allocated
|
||||||
|
at initialization time. If the RealTimeMemoryAllocator() returns 0, the
|
||||||
|
operation attempting to grow the address space will fail. If your system
|
||||||
|
does not have real-time memory allocation, RealTimeMemoryAllocator should
|
||||||
|
be a procedure that always returns 0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct OSCAddressSpaceMemoryTuner {
|
||||||
|
int initNumContainers;
|
||||||
|
int initNumMethods;
|
||||||
|
void *(*InitTimeMemoryAllocator)(int numBytes);
|
||||||
|
void *(*RealTimeMemoryAllocator)(int numBytes);
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Given an OSCAddressSpaceMemoryTuner, return the number of bytes of
|
||||||
|
memory that would be allocated if OSCInitAddressSpace() were called
|
||||||
|
on it. */
|
||||||
|
int OSCAddressSpaceMemoryThatWouldBeAllocated(struct OSCAddressSpaceMemoryTuner *t);
|
||||||
|
|
||||||
|
|
||||||
|
/* Call this before you call anything else. It returns the container that
|
||||||
|
corresponds to the address "/" and is the root of the address space tree.
|
||||||
|
*/
|
||||||
|
OSCcontainer OSCInitAddressSpace(struct OSCAddressSpaceMemoryTuner *t);
|
||||||
|
|
||||||
|
|
||||||
|
/**************************** Containers ****************************/
|
||||||
|
|
||||||
|
/* Here's how this system deals with the standard OSC queries addressed to
|
||||||
|
containers. This module handles the details of listening for these queries
|
||||||
|
and returning a correctly-formatted answer; all it needs from you is the
|
||||||
|
actual data that constitute the answers to these queries.
|
||||||
|
|
||||||
|
You pass this data in an OSCContainerQueryResponseInfo structure. Future versions
|
||||||
|
of this module may have new kinds of queries that they can deal with, so
|
||||||
|
the list of fields in this structure may grow. That's why your code should
|
||||||
|
call OSCInitContainerQueryResponseInfo() on your struct before putting new values
|
||||||
|
into it; this procedure will initialize all of the fields to 0, meaning
|
||||||
|
"don't have that information", which will cause the associated queries to
|
||||||
|
fail.
|
||||||
|
|
||||||
|
The "null" message, i.e., a message with a trailing slash, requesting the
|
||||||
|
list of addresses under a given container, is handled automatically.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct OSCContainerQueryResponseInfoStruct {
|
||||||
|
char *comment;
|
||||||
|
/* Other fields may go here */
|
||||||
|
};
|
||||||
|
|
||||||
|
void OSCInitContainerQueryResponseInfo(struct OSCContainerQueryResponseInfoStruct *i);
|
||||||
|
|
||||||
|
|
||||||
|
/* Allocate a new container and initialize it. Returns 0 if it cannot
|
||||||
|
allocate a new container, e.g., if you've exceeded the initNumContainers
|
||||||
|
limit of the OSCAddressSpaceMemoryTuner() and the RealTimeMemoryAllocator()
|
||||||
|
didn't return any new memory.
|
||||||
|
|
||||||
|
This procedure doesn't make a copy of the name string or any of the
|
||||||
|
contents of the OSCContainerQueryResponseInfoStruct. It does copy the fields
|
||||||
|
of the OSCContainerQueryResponseInfoStruct.
|
||||||
|
*/
|
||||||
|
OSCcontainer OSCNewContainer(Name name, OSCcontainer parent,
|
||||||
|
struct OSCContainerQueryResponseInfoStruct *queryInfo);
|
||||||
|
|
||||||
|
|
||||||
|
/* Remove a container from the address space. This also removes all the
|
||||||
|
container's methods and recursively removes all sub-containers. Memory
|
||||||
|
freed by removing a container is kept in this module's internal pool.
|
||||||
|
*/
|
||||||
|
void OSCRemoveContainer(OSCcontainer container);
|
||||||
|
|
||||||
|
|
||||||
|
/* Given a pointer to a container, and another name for that container, add or
|
||||||
|
remove that name as an alias for the container. Return FALSE for failure. */
|
||||||
|
Boolean OSCAddContainerAlias(OSCcontainer container, Name otherName);
|
||||||
|
Boolean OSCRemoveContainerAlias(OSCcontainer container, Name otherName);
|
||||||
|
|
||||||
|
|
||||||
|
/* Write the OSC address of the given container into the given string.
|
||||||
|
Return FALSE if the address won't fit in the string. */
|
||||||
|
Boolean OSCGetAddressString(char *target, int maxLength, OSCcontainer c);
|
||||||
|
|
||||||
|
|
||||||
|
/* Given an address (not a pattern!), return the single OSCcontainer it names,
|
||||||
|
or 0 if there is no container at that address */
|
||||||
|
OSCcontainer OSCLookUpContainer(Name address);
|
||||||
|
|
||||||
|
|
||||||
|
/**************************** Methods ****************************/
|
||||||
|
|
||||||
|
/* A methodCallback is a procedure that you write that will be called at the
|
||||||
|
time that an OSC message is to take effect. It will be called with 5
|
||||||
|
arguments:
|
||||||
|
- A context pointer that was registered with the methodNode
|
||||||
|
this is a method of. (Something like the C++ "this" pointer.)
|
||||||
|
- The number of bytes of argument data
|
||||||
|
- A pointer to the argument portion of the OSC message
|
||||||
|
- The time tag at which this message is supposed to take effect.
|
||||||
|
- A "return address" object you can use to send a message back to the
|
||||||
|
client that sent this message. This return channel is guaranteed
|
||||||
|
to be usable only during the invocation of your method, so your method
|
||||||
|
must use the return address immediately or ignore it, not store it away
|
||||||
|
for later use.
|
||||||
|
*/
|
||||||
|
typedef struct NetworkReturnAddressStruct *NetworkReturnAddressPtr;
|
||||||
|
/* removed const */
|
||||||
|
|
||||||
|
typedef void (*methodCallback)(void *context, int arglen, const void *args,
|
||||||
|
OSCTimeTag when, NetworkReturnAddressPtr returnAddr);
|
||||||
|
|
||||||
|
|
||||||
|
/* A ParamValQuerier is a procedure that the OSC system will call when the
|
||||||
|
user wants to know the current value of a parameter. It will be passed the
|
||||||
|
same context pointer as the associated method. It should write its return
|
||||||
|
value in the given buffer in the same format as the associated
|
||||||
|
methodCallback would expect its "args" argument, and should return the
|
||||||
|
length of data just like the method would expect in its "arglen" argument.
|
||||||
|
It doesn't have to worry about the address portion of the OSC message.
|
||||||
|
*/
|
||||||
|
typedef char OSCData; /* For pointers to OSC-formatted data */
|
||||||
|
typedef int (*ParamValQuerier)(OSCData *result, void *context);
|
||||||
|
|
||||||
|
|
||||||
|
/* This system deals with other standard per-method queries, such as
|
||||||
|
documentation, valid parameter types and ranges, units, default values,
|
||||||
|
etc., pretty much just like per-container queries.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct OSCMethodQueryResponseInfoStruct {
|
||||||
|
char *description;
|
||||||
|
ParamValQuerier pvq;
|
||||||
|
/* For each argument of the method:
|
||||||
|
min, max, default, units */
|
||||||
|
};
|
||||||
|
|
||||||
|
void OSCInitMethodQueryResponseInfo(struct OSCMethodQueryResponseInfoStruct *i);
|
||||||
|
|
||||||
|
|
||||||
|
/* Allocate a new method, initialize it, and add it to a container. Returns 0
|
||||||
|
for failure, e.g., if you've exceeded the initNumMethods limit of the
|
||||||
|
OSCAddressSpaceMemoryTuner() and the RealTimeMemoryAllocator() didn't return any
|
||||||
|
new memory.
|
||||||
|
|
||||||
|
This procedure doesn't make a copy of the name string or any of the
|
||||||
|
contents of the OSCMethodQueryResponseInfoStruct.
|
||||||
|
*/
|
||||||
|
|
||||||
|
OSCMethod OSCNewMethod(Name name, OSCcontainer container, methodCallback meth,
|
||||||
|
void *context, struct OSCMethodQueryResponseInfoStruct *queryInfo);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************* Debug ********************************/
|
||||||
|
|
||||||
|
|
||||||
|
void OSCPrintWholeAddressSpace(void);
|
||||||
|
|
||||||
|
|
||||||
|
/**************************** Sample Code *****************************/
|
||||||
|
|
||||||
|
/* Here's a gross approximation of how your application will invoke the
|
||||||
|
procedures in this module. It registers an address space with
|
||||||
|
containers with addresses "/foo", "/foo/foochild", and "/bar",
|
||||||
|
and gives each of them "play" and "shuddup" messages.
|
||||||
|
|
||||||
|
|
||||||
|
#include "OSC-common.h"
|
||||||
|
#include "OSC-timetag.h"
|
||||||
|
#include "OSC-address-space.h"
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int playing;
|
||||||
|
int param;
|
||||||
|
float otherParam;
|
||||||
|
} Player;
|
||||||
|
|
||||||
|
void PlayCallback(void *context, int arglen, const void *vargs,
|
||||||
|
OSCTimeTag when, NetworkReturnAddressPtr ra) {
|
||||||
|
Player *p = context;
|
||||||
|
const int *args = vargs;
|
||||||
|
|
||||||
|
|
||||||
|
p->playing = 1;
|
||||||
|
if (arglen >= 4) {
|
||||||
|
p->param = args[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShuddupCallback(void *context, int arglen, const void *vargs,
|
||||||
|
OSCTimeTag when, NetworkReturnAddressPtr ra) {
|
||||||
|
Player *p = context;
|
||||||
|
const float *args = vargs;
|
||||||
|
|
||||||
|
|
||||||
|
p->playing = 0;
|
||||||
|
if (arglen >= 4) {
|
||||||
|
p->otherParam = args[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void *InitTimeMalloc(int numBytes) {
|
||||||
|
return malloc(numBytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *NoRealTimeMalloc(int numBytes) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
struct OSCAddressSpaceMemoryTuner oasmt;
|
||||||
|
OSCcontainer topLevelContainer, foo, foochild, bar;
|
||||||
|
struct OSCContainerQueryResponseInfoStruct ocqris;
|
||||||
|
struct OSCMethodQueryResponseInfoStruct omqris;
|
||||||
|
|
||||||
|
Player *players;
|
||||||
|
|
||||||
|
players = (Player *) malloc(3 * sizeof(*players));
|
||||||
|
if (!players) exit(1);
|
||||||
|
|
||||||
|
oasmt.initNumContainers = 10;
|
||||||
|
oasmt.initNumMethods = 10;
|
||||||
|
oasmt.InitTimeMemoryAllocator = InitTimeMalloc;
|
||||||
|
oasmt.RealTimeMemoryAllocator = NoRealTimeMalloc;
|
||||||
|
|
||||||
|
topLevelContainer = OSCInitAddressSpace(&oasmt);
|
||||||
|
|
||||||
|
OSCInitContainerQueryResponseInfo(&ocqris);
|
||||||
|
ocqris.comment = "Foo for you";
|
||||||
|
foo = OSCNewContainer("foo", topLevelContainer, &ocqris);
|
||||||
|
|
||||||
|
OSCInitContainerQueryResponseInfo(&ocqris);
|
||||||
|
ocqris.comment = "Beware the son of foo!";
|
||||||
|
foochild = OSCNewContainer("foochild", foo, &ocqris);
|
||||||
|
|
||||||
|
OSCInitContainerQueryResponseInfo(&ocqris);
|
||||||
|
ocqris.comment = "Belly up to the bar";
|
||||||
|
bar = OSCNewContainer("bar", topLevelContainer, &ocqris);
|
||||||
|
|
||||||
|
if (foo == 0 || foochild == 0 || bar == 0) {
|
||||||
|
fprintf(stderr, "Problem!\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCInitMethodQueryResponseInfo(&omqris);
|
||||||
|
OSCNewMethod("play", foo, PlayCallback, &(players[0]), &omqris);
|
||||||
|
OSCNewMethod("shuddup", foo, ShuddupCallback, &(players[0]), &omqris);
|
||||||
|
|
||||||
|
OSCNewMethod("play", foochild, PlayCallback, &(players[1]), &omqris);
|
||||||
|
OSCNewMethod("shuddup", foochild, ShuddupCallback, &(players[1]), &omqris);
|
||||||
|
|
||||||
|
OSCNewMethod("play", bar, PlayCallback, &(players[2]), &omqris);
|
||||||
|
OSCNewMethod("shuddup", bar, ShuddupCallback, &(players[2]), &omqris);
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
95
veejay-ng/libOSC/OSC-callbacklist.c
Normal file
95
veejay-ng/libOSC/OSC-callbacklist.c
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
OSC-callbacklist.c
|
||||||
|
Linked lists of methods
|
||||||
|
|
||||||
|
Matt Wright, 11/20/97
|
||||||
|
|
||||||
|
Allocator is a simple linked list of free nodes.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include <libOSC/OSC-common.h>
|
||||||
|
#include <libOSC/OSC-timetag.h>
|
||||||
|
#include <libOSC/OSC-address-space.h>
|
||||||
|
#include <libOSC/OSC-dispatch.h>
|
||||||
|
#include <libOSC/OSC-callbacklist.h>
|
||||||
|
|
||||||
|
static callbackList allNodes;
|
||||||
|
static callbackList freeNodes;
|
||||||
|
|
||||||
|
/* Call this before you call anything else */
|
||||||
|
Boolean InitCallbackListNodes(int numNodes, void *(*InitTimeMalloc)(int numBytes)) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
allNodes = (*InitTimeMalloc)(numNodes * sizeof(*allNodes));
|
||||||
|
if (allNodes == 0) return FALSE;
|
||||||
|
|
||||||
|
/* Initialize list of freeNodes */
|
||||||
|
freeNodes = &(allNodes[0]);
|
||||||
|
for (i = 0; i < numNodes-1; ++i) {
|
||||||
|
allNodes[i].next = &(allNodes[i+1]);
|
||||||
|
}
|
||||||
|
allNodes[numNodes-1].next = 0;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
callbackList AllocCallbackListNode(methodCallback callback, void *context,
|
||||||
|
struct callbackListNode *next) {
|
||||||
|
callbackList result;
|
||||||
|
if (freeNodes == 0) {
|
||||||
|
/* OSCProblem("Out of memory for callback lists!"); */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = freeNodes;
|
||||||
|
freeNodes = freeNodes->next;
|
||||||
|
|
||||||
|
result->callback = callback;
|
||||||
|
result->context = context;
|
||||||
|
result->next = next;
|
||||||
|
#ifdef DEBUG_CBL
|
||||||
|
printf("AllocCallbackListNode: returning %p (cb %p, context %p, next %p)\n",
|
||||||
|
result, result->callback, result->context, result->next);
|
||||||
|
#endif
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void FreeCallbackListNode(callbackList cb) {
|
||||||
|
#ifdef DEBUG_CBL
|
||||||
|
printf("FreeCallbackListNode(%p)\n", cb);
|
||||||
|
#endif
|
||||||
|
cb->next = freeNodes;
|
||||||
|
freeNodes = cb;
|
||||||
|
}
|
||||||
49
veejay-ng/libOSC/OSC-callbacklist.h
Normal file
49
veejay-ng/libOSC/OSC-callbacklist.h
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
OSC-callbacklist.h
|
||||||
|
Linked lists of methods
|
||||||
|
|
||||||
|
Matt Wright, 3/13/98
|
||||||
|
|
||||||
|
include "OSC-dispatch.h" before this file.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Call this before you call anything else. */
|
||||||
|
Boolean InitCallbackListNodes(int numNodes, void *(*InitTimeMalloc)(int numBytes));
|
||||||
|
|
||||||
|
callbackList AllocCallbackListNode(methodCallback callback, void *context,
|
||||||
|
struct callbackListNode *next);
|
||||||
|
|
||||||
|
void FreeCallbackListNode(callbackList);
|
||||||
|
|
||||||
|
|
||||||
87
veejay-ng/libOSC/OSC-common.c
Normal file
87
veejay-ng/libOSC/OSC-common.c
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* OSC-system-dependent.c
|
||||||
|
|
||||||
|
Matt Wright, 3/13/98
|
||||||
|
|
||||||
|
File of procedures OSC has to call that are not part of the OSC package
|
||||||
|
and that you, the developer adding OSC addressability to an application,
|
||||||
|
must write in a way that makes sense in the context of your system.
|
||||||
|
|
||||||
|
You should also look at OSC-timetag.c and see if there's a better way
|
||||||
|
to handle time tags on your system.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <libOSC/OSC-common.h>
|
||||||
|
|
||||||
|
/* Printing stuff: for now, use stderr. Some cleverer stuff we could do:
|
||||||
|
|
||||||
|
- Make a silent mode where these don't do anything.
|
||||||
|
- Return error messages via OSC to some client
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
void fatal_error(char *s, ...) {
|
||||||
|
va_list ap;
|
||||||
|
fprintf(stderr, "Fatal error: ");
|
||||||
|
va_start(ap, s);
|
||||||
|
vfprintf(stderr, s, ap);
|
||||||
|
fprintf(stderr, "\n");
|
||||||
|
va_end(ap);
|
||||||
|
exit(-321);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OSCProblem(char *s, ...) {
|
||||||
|
va_list ap;
|
||||||
|
fprintf(stderr, "OSC Problem: ");
|
||||||
|
va_start(ap, s);
|
||||||
|
vfprintf(stderr, s, ap);
|
||||||
|
fprintf(stderr, "\n");
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OSCWarning(char *s, ...) {
|
||||||
|
/* va_list ap;
|
||||||
|
fprintf(stderr, "OSC Warning: ");
|
||||||
|
va_start(ap, s);
|
||||||
|
vfprintf(stderr, s, ap);
|
||||||
|
fprintf(stderr, "\n");
|
||||||
|
va_end(ap);*/
|
||||||
|
}
|
||||||
60
veejay-ng/libOSC/OSC-common.h
Normal file
60
veejay-ng/libOSC/OSC-common.h
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* OSC-common.h
|
||||||
|
Simple stuff to #include everywhere in the OSC package
|
||||||
|
|
||||||
|
by Matt Wright, 3/13/98
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Boolean type */
|
||||||
|
|
||||||
|
#ifndef TRUE
|
||||||
|
typedef int Boolean;
|
||||||
|
#define TRUE 1
|
||||||
|
#define FALSE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Fixed byte width types */
|
||||||
|
typedef int int4; /* 4 byte int */
|
||||||
|
|
||||||
|
/* Printing type procedures. All take printf-style format string */
|
||||||
|
|
||||||
|
/* Catastrophic failure: print message and halt system */
|
||||||
|
void fatal_error(char *s, ...);
|
||||||
|
|
||||||
|
/* Error message for user */
|
||||||
|
void OSCProblem(char *s, ...);
|
||||||
|
|
||||||
|
/* Warning for user */
|
||||||
|
void OSCWarning(char *s, ...);
|
||||||
|
|
||||||
|
|
||||||
52
veejay-ng/libOSC/OSC-dispatch.h
Normal file
52
veejay-ng/libOSC/OSC-dispatch.h
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* OSC-dispatch.h
|
||||||
|
|
||||||
|
Given an OSC message pattern from an incoming message, match the
|
||||||
|
pattern against the OSC address space and produce a list of the
|
||||||
|
callbacks corresponding to all the addresses that were matched.
|
||||||
|
|
||||||
|
Matt Wright, 6/5/98
|
||||||
|
*/
|
||||||
|
|
||||||
|
/***************************** Dispatching *****************************/
|
||||||
|
|
||||||
|
typedef struct callbackListNode {
|
||||||
|
methodCallback callback;
|
||||||
|
void *context;
|
||||||
|
struct callbackListNode *next;
|
||||||
|
} *callbackList;
|
||||||
|
|
||||||
|
|
||||||
|
/* Given an OSC message pattern from an incoming message, match the
|
||||||
|
pattern against the OSC address space and produce a list of the
|
||||||
|
callbacks corresponding to all the addresses that were matched. */
|
||||||
|
callbackList OSCDispatchMessage(char *pattern);
|
||||||
|
|
||||||
58
veejay-ng/libOSC/OSC-drop.c
Normal file
58
veejay-ng/libOSC/OSC-drop.c
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* OSC-drop.c
|
||||||
|
|
||||||
|
This implementation just prints a warning.
|
||||||
|
|
||||||
|
Matt Wright, 3/16/98
|
||||||
|
*/
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <libOSC/OSC-common.h>
|
||||||
|
#include <libOSC/OSC-timetag.h>
|
||||||
|
#include <libOSC/OSC-address-space.h>
|
||||||
|
#include <libOSC/NetworkReturnAddress.h>
|
||||||
|
#include <libOSC/OSC-receive.h>
|
||||||
|
#include <libOSC/OSC-drop.h>
|
||||||
|
|
||||||
|
void DropPacket(OSCPacketBuffer p) {
|
||||||
|
OSCWarning("Packet dropped.");
|
||||||
|
}
|
||||||
|
|
||||||
|
void DropBundle(char *buf, int n, OSCPacketBuffer p) {
|
||||||
|
OSCWarning("Bundle dropped.");
|
||||||
|
}
|
||||||
|
|
||||||
|
void DropMessage(char *buf, int n, OSCPacketBuffer p) {
|
||||||
|
OSCWarning("Message dropped.");
|
||||||
|
}
|
||||||
|
|
||||||
43
veejay-ng/libOSC/OSC-drop.h
Normal file
43
veejay-ng/libOSC/OSC-drop.h
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* OSC-drop.h
|
||||||
|
|
||||||
|
These procedures will be called on a packet, bundle, or message that's
|
||||||
|
being dropped for whatever reason. They can do nothing, print (or
|
||||||
|
otherwise inform the user of) a warning, save the offending data somewhere,
|
||||||
|
etc.
|
||||||
|
|
||||||
|
Matt Wright, 3/16/98
|
||||||
|
*/
|
||||||
|
|
||||||
|
void DropPacket(OSCPacketBuffer p);
|
||||||
|
void DropBundle(char *buf, int n, OSCPacketBuffer p);
|
||||||
|
void DropMessage(char *buf, int n, OSCPacketBuffer p);
|
||||||
|
|
||||||
70
veejay-ng/libOSC/OSC-internal-messages.h
Normal file
70
veejay-ng/libOSC/OSC-internal-messages.h
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* OSC-internal-messages.h
|
||||||
|
|
||||||
|
Interface for having an application send OSC messages to itself
|
||||||
|
internally.
|
||||||
|
|
||||||
|
All these procedures return FALSE if unable to deliver the message.
|
||||||
|
|
||||||
|
Matt Wright, 3/17/98
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Send a message immediately, with no return address. This procedure
|
||||||
|
returns after the message has been sent (or has failed to be sent),
|
||||||
|
so the memory for address and args can be on the stack. Returns FALSE
|
||||||
|
if there's a problem; TRUE otherwise. */
|
||||||
|
Boolean OSCSendInternalMessage(char *address, int arglen, void *args);
|
||||||
|
|
||||||
|
|
||||||
|
/* Same thing, but with a return address supplied. */
|
||||||
|
Boolean OSCSendInternalMessageWithRSVP(char *address, int arglen, void *args,
|
||||||
|
NetworkReturnAddressPtr returnAddr);
|
||||||
|
|
||||||
|
|
||||||
|
/* Schedule some messages to occur at a given time. This allocates one of the
|
||||||
|
OSCPacketBuffer structures (see OSC-receive.h) to hold the addresses and argument
|
||||||
|
data until the messages take effect, so if you're going to call this, you
|
||||||
|
should take this use of packets into account in setting the
|
||||||
|
numReceiveBuffers argument to OSCInitReceive().
|
||||||
|
|
||||||
|
This provides an less general interface than OSC's bundle mechanism, because
|
||||||
|
the bundle of messages you provide cannot include subbundles.
|
||||||
|
|
||||||
|
The addresses, arglens, and args arguments are arrays of size numMessages.
|
||||||
|
|
||||||
|
There's no return address argument because you're not allowed to save a network
|
||||||
|
return address for later use.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Boolean OSCScheduleInternalMessages(OSCTimeTag when, int numMessages,
|
||||||
|
char **addresses, int *arglens,
|
||||||
|
void **args);
|
||||||
193
veejay-ng/libOSC/OSC-pattern-match.c
Normal file
193
veejay-ng/libOSC/OSC-pattern-match.c
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
OSC-pattern-match.c
|
||||||
|
Matt Wright, 3/16/98
|
||||||
|
Adapted from oscpattern.c, by Matt Wright and Amar Chaudhury
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <libOSC/OSC-common.h>
|
||||||
|
#include <libOSC/OSC-pattern-match.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
static const char *theWholePattern; /* Just for warning messages */
|
||||||
|
|
||||||
|
static Boolean MatchBrackets (const char *pattern, const char *test);
|
||||||
|
static Boolean MatchList (const char *pattern, const char *test);
|
||||||
|
|
||||||
|
Boolean PatternMatch (const char * pattern, const char * test) {
|
||||||
|
theWholePattern = pattern;
|
||||||
|
|
||||||
|
if (pattern == 0 || pattern[0] == 0) {
|
||||||
|
return test[0] == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (test[0] == 0) {
|
||||||
|
if (pattern[0] == '*')
|
||||||
|
return PatternMatch (pattern+1,test);
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (pattern[0]) {
|
||||||
|
case 0 : return test[0] == 0;
|
||||||
|
case '?' : return PatternMatch (pattern + 1, test + 1);
|
||||||
|
case '*' :
|
||||||
|
if (PatternMatch (pattern+1, test)) {
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
return PatternMatch (pattern, test+1);
|
||||||
|
}
|
||||||
|
case ']' :
|
||||||
|
case '}' :
|
||||||
|
OSCWarning("Spurious %c in pattern \".../%s/...\"",pattern[0], theWholePattern);
|
||||||
|
return FALSE;
|
||||||
|
case '[' :
|
||||||
|
return MatchBrackets (pattern,test);
|
||||||
|
case '{' :
|
||||||
|
return MatchList (pattern,test);
|
||||||
|
case '\\' :
|
||||||
|
if (pattern[1] == 0) {
|
||||||
|
return test[0] == 0;
|
||||||
|
} else if (pattern[1] == test[0]) {
|
||||||
|
return PatternMatch (pattern+2,test+1);
|
||||||
|
} else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
default :
|
||||||
|
if (pattern[0] == test[0]) {
|
||||||
|
return PatternMatch (pattern+1,test+1);
|
||||||
|
} else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* we know that pattern[0] == '[' and test[0] != 0 */
|
||||||
|
|
||||||
|
static Boolean MatchBrackets (const char *pattern, const char *test) {
|
||||||
|
Boolean result;
|
||||||
|
Boolean negated = FALSE;
|
||||||
|
const char *p = pattern;
|
||||||
|
|
||||||
|
if (pattern[1] == 0) {
|
||||||
|
OSCWarning("Unterminated [ in pattern \".../%s/...\"", theWholePattern);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pattern[1] == '!') {
|
||||||
|
negated = TRUE;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (*p != ']') {
|
||||||
|
if (*p == 0) {
|
||||||
|
OSCWarning("Unterminated [ in pattern \".../%s/...\"", theWholePattern);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (p[1] == '-' && p[2] != 0) {
|
||||||
|
if (test[0] >= p[0] && test[0] <= p[2]) {
|
||||||
|
result = !negated;
|
||||||
|
goto advance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (p[0] == test[0]) {
|
||||||
|
result = !negated;
|
||||||
|
goto advance;
|
||||||
|
}
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = negated;
|
||||||
|
|
||||||
|
advance:
|
||||||
|
|
||||||
|
if (!result)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
while (*p != ']') {
|
||||||
|
if (*p == 0) {
|
||||||
|
OSCWarning("Unterminated [ in pattern \".../%s/...\"", theWholePattern);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return PatternMatch (p+1,test+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Boolean MatchList (const char *pattern, const char *test) {
|
||||||
|
|
||||||
|
const char *restOfPattern, *tp = test;
|
||||||
|
|
||||||
|
|
||||||
|
for(restOfPattern = pattern; *restOfPattern != '}'; restOfPattern++) {
|
||||||
|
if (*restOfPattern == 0) {
|
||||||
|
OSCWarning("Unterminated { in pattern \".../%s/...\"", theWholePattern);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
restOfPattern++; /* skip close curly brace */
|
||||||
|
|
||||||
|
|
||||||
|
pattern++; /* skip open curly brace */
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
|
||||||
|
if (*pattern == ',') {
|
||||||
|
if (PatternMatch (restOfPattern, tp)) {
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
tp = test;
|
||||||
|
++pattern;
|
||||||
|
}
|
||||||
|
} else if (*pattern == '}') {
|
||||||
|
return PatternMatch (restOfPattern, tp);
|
||||||
|
} else if (*pattern == *tp) {
|
||||||
|
++pattern;
|
||||||
|
++tp;
|
||||||
|
} else {
|
||||||
|
tp = test;
|
||||||
|
while (*pattern != ',' && *pattern != '}') {
|
||||||
|
pattern++;
|
||||||
|
}
|
||||||
|
if (*pattern == ',') {
|
||||||
|
pattern++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
35
veejay-ng/libOSC/OSC-pattern-match.h
Normal file
35
veejay-ng/libOSC/OSC-pattern-match.h
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
OSC-pattern-match.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
Boolean PatternMatch (const char *pattern, const char *test);
|
||||||
|
|
||||||
190
veejay-ng/libOSC/OSC-priority-queue.c
Normal file
190
veejay-ng/libOSC/OSC-priority-queue.c
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* OSC-priority-queue.c
|
||||||
|
Priority queue used by OSC time tag scheduler
|
||||||
|
|
||||||
|
This is the most trivial implementation, an unsorted array of queued
|
||||||
|
objects, mostly for debug purposes.
|
||||||
|
|
||||||
|
Matt Wright, 9/17/98
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <libOSC/OSC-common.h>
|
||||||
|
#include <libOSC/OSC-timetag.h>
|
||||||
|
#include <libOSC/OSC-priority-queue.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#define PRINT_PRIORITY_QUEUE
|
||||||
|
|
||||||
|
#ifdef DEBUG_OSC_PRIORITY_QUEUE
|
||||||
|
#define PRINT_PRIORITY_QUEUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(PRINT_PRIORITY_QUEUE) || defined(DEBUG_OSC_PRIORITY_QUEUE)
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
void OSCQueuePrint(OSCQueue q);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define CAPACITY 1000
|
||||||
|
|
||||||
|
|
||||||
|
struct OSCQueueStruct {
|
||||||
|
OSCSchedulableObject list[CAPACITY];
|
||||||
|
int n;
|
||||||
|
int scanIndex;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
OSCQueue OSCNewQueue(int maxItems, void *(*InitTimeMalloc)(int numBytes)) {
|
||||||
|
OSCQueue result;
|
||||||
|
|
||||||
|
if (maxItems > CAPACITY) fatal_error("Increase CAPACITY in OSC-priority-queue.c");
|
||||||
|
|
||||||
|
result = (*InitTimeMalloc)(sizeof(*result));
|
||||||
|
if (result == 0) return 0;
|
||||||
|
|
||||||
|
result->n = 0;
|
||||||
|
|
||||||
|
#ifdef DEBUG_OSC_PRIORITY_QUEUE
|
||||||
|
OSCQueuePrint(result);
|
||||||
|
#endif
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
int OSCQueueInsert(OSCQueue q, OSCSchedulableObject new) {
|
||||||
|
if (q->n == CAPACITY) return FALSE;
|
||||||
|
|
||||||
|
q->list[q->n] = new;
|
||||||
|
++(q->n);
|
||||||
|
#ifdef DEBUG_OSC_PRIORITY_QUEUE
|
||||||
|
printf("OSCQueueInsert: just inserted %p\n", new);
|
||||||
|
OSCQueuePrint(q);
|
||||||
|
#endif
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
OSCTimeTag OSCQueueEarliestTimeTag(OSCQueue q) {
|
||||||
|
int i;
|
||||||
|
OSCTimeTag smallest = OSCTT_BiggestPossibleTimeTag();
|
||||||
|
|
||||||
|
for (i = 0; i < q->n; ++i) {
|
||||||
|
if (OSCTT_Compare(smallest, q->list[i]->timetag) > 0) {
|
||||||
|
smallest = q->list[i]->timetag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG_OSC_PRIORITY_QUEUE
|
||||||
|
printf("OSCQueueEarliestTimeTag: about to return %llx\n", smallest);
|
||||||
|
OSCQueuePrint(q);
|
||||||
|
#endif
|
||||||
|
return smallest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void RemoveElement(int goner, OSCQueue q) {
|
||||||
|
int i;
|
||||||
|
--(q->n);
|
||||||
|
|
||||||
|
for (i = goner; i < q->n; ++i) {
|
||||||
|
q->list[i] = q->list[i+1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCSchedulableObject OSCQueueRemoveEarliest(OSCQueue q) {
|
||||||
|
OSCSchedulableObject result;
|
||||||
|
int i, smallestIndex;
|
||||||
|
|
||||||
|
if (q->n == 0) {
|
||||||
|
OSCWarning("OSCQueueRemoveEarliest: empty queue");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG_OSC_PRIORITY_QUEUE
|
||||||
|
printf("OSCQueueRemoveEarliest: begin\n");
|
||||||
|
OSCQueuePrint(q);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
smallestIndex = 0;
|
||||||
|
for (i = 1; i < q->n; ++i) {
|
||||||
|
if (OSCTT_Compare(q->list[smallestIndex]->timetag, q->list[i]->timetag) > 0) {
|
||||||
|
smallestIndex = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result = q->list[smallestIndex];
|
||||||
|
|
||||||
|
RemoveElement(smallestIndex, q);
|
||||||
|
|
||||||
|
#ifdef DEBUG_OSC_PRIORITY_QUEUE
|
||||||
|
printf("OSCQueueRemoveEarliest: done\n");
|
||||||
|
OSCQueuePrint(q);
|
||||||
|
#endif
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef PRINT_PRIORITY_QUEUE
|
||||||
|
|
||||||
|
void OSCQueuePrint(OSCQueue q) {
|
||||||
|
int i;
|
||||||
|
printf("OSC Priority queue at %p has %d elements:\n", q, q->n);
|
||||||
|
|
||||||
|
for (i = 0; i < q->n; ++i) {
|
||||||
|
printf(" list[%2d] is %p, timetag = %llx\n", i, q->list[i], q->list[i]->timetag);
|
||||||
|
}
|
||||||
|
printf("\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
void OSCQueueScanStart(OSCQueue q) {
|
||||||
|
q->scanIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCSchedulableObject OSCQueueScanNext(OSCQueue q) {
|
||||||
|
if (q->scanIndex >= q->n) return 0;
|
||||||
|
|
||||||
|
return (q->list[(q->scanIndex)++]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OSCQueueRemoveCurrentScanItem(OSCQueue q) {
|
||||||
|
/* Remember that q->scanIndex is the index of the *next*
|
||||||
|
item that will be returned, so the "current" item, i.e.,
|
||||||
|
the one most recently returned by OSCQueueScanNext(),
|
||||||
|
is q->scanIndex-1. */
|
||||||
|
|
||||||
|
RemoveElement(q->scanIndex-1, q);
|
||||||
|
--(q->scanIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheckWholeQueue(void) {
|
||||||
|
}
|
||||||
90
veejay-ng/libOSC/OSC-priority-queue.h
Normal file
90
veejay-ng/libOSC/OSC-priority-queue.h
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* OSC-priority-queue.h
|
||||||
|
Interface to priority queue used by OSC time tag scheduler
|
||||||
|
|
||||||
|
Matt Wright, 3/13/98
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* include OSC-timetag.h before this file. */
|
||||||
|
|
||||||
|
/* This queue manages pointers to data objects. It doesn't care what's in the
|
||||||
|
objects except that the first element has to be an OSCTimeTag. So whatever
|
||||||
|
data you want to store, cast your pointer to it to a pointer to this type. */
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
OSCTimeTag timetag;
|
||||||
|
/* There will be other stuff... */
|
||||||
|
} *OSCSchedulableObject;
|
||||||
|
|
||||||
|
typedef struct OSCQueueStruct *OSCQueue;
|
||||||
|
|
||||||
|
/* Make a new queue, or return 0 for failure. */
|
||||||
|
OSCQueue OSCNewQueue(int maxItems, void *(*InitTimeMalloc)(int numBytes));
|
||||||
|
|
||||||
|
/* Put something into the queue. Return FALSE if quque is full. */
|
||||||
|
Boolean OSCQueueInsert(OSCQueue q, OSCSchedulableObject o);
|
||||||
|
|
||||||
|
/* What's the time tag of the earliest item in the queue?
|
||||||
|
Return OSCTT_BiggestPossibleTimeTag() if queue is empty. */
|
||||||
|
OSCTimeTag OSCQueueEarliestTimeTag(OSCQueue q);
|
||||||
|
|
||||||
|
/* Remove the item from the front of the queue. Fatal error
|
||||||
|
if the queue is empty. */
|
||||||
|
OSCSchedulableObject OSCQueueRemoveEarliest(OSCQueue q);
|
||||||
|
|
||||||
|
|
||||||
|
/* Interface for examining items currently stored on the queue:
|
||||||
|
|
||||||
|
- To start, call OSCQueueScanStart().
|
||||||
|
|
||||||
|
- Then each subsequent call to OSCQueueScanNext() returns a pointer to an
|
||||||
|
OSCSchedulableObject that is stored on the queue, until
|
||||||
|
OSCQueueScanNext() returns 0 to indicate that all objects on the queue
|
||||||
|
have been scanned.
|
||||||
|
|
||||||
|
The objects returned by OSCQueueScanNext() come in chronological order (or
|
||||||
|
approximately chronological order, depending on the underlying queue data
|
||||||
|
structure).
|
||||||
|
|
||||||
|
If you call OSCQueueRemoveCurrentScanItem(), the object most recently
|
||||||
|
returned by OSCQueueScanNext() will be removed from the queue.
|
||||||
|
|
||||||
|
If there are any insertions or deletions to the queue, the sequence of
|
||||||
|
scanned objects must still include every object in the queue. This may
|
||||||
|
cause a particular object to be returned more than once by
|
||||||
|
OSCQueueScanNext().
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
void OSCQueueScanStart(OSCQueue q);
|
||||||
|
OSCSchedulableObject OSCQueueScanNext(OSCQueue q);
|
||||||
|
void OSCQueueRemoveCurrentScanItem(OSCQueue q);
|
||||||
893
veejay-ng/libOSC/OSC-receive.c
Normal file
893
veejay-ng/libOSC/OSC-receive.c
Normal file
@@ -0,0 +1,893 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define PARANOID 0
|
||||||
|
/*
|
||||||
|
OSC-receive.c
|
||||||
|
Matt Wright, 3/13/98, 6/3/98
|
||||||
|
|
||||||
|
Adapted from OSC-addressability.c (and seriously cleaned up!)
|
||||||
|
|
||||||
|
*/
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <libOSC/OSC-common.h>
|
||||||
|
#include <libOSC/OSC-timetag.h>
|
||||||
|
#include <libOSC/OSC-address-space.h>
|
||||||
|
#include <libOSC/NetworkReturnAddress.h>
|
||||||
|
#include <libOSC/OSC-receive.h>
|
||||||
|
#include <libOSC/OSC-priority-queue.h>
|
||||||
|
#include <libOSC/OSC-string-help.h>
|
||||||
|
#include <libOSC/OSC-drop.h>
|
||||||
|
#include <libOSC/OSC-dispatch.h>
|
||||||
|
#include <libOSC/NetworkUDP.h>
|
||||||
|
#include <libOSC/OSC-callbacklist.h>
|
||||||
|
#if defined(DEBUG_INTERNAL) || defined(DEBUG) || defined(DEBUG_PACKET_MEM) || defined(DEBUG_QD_MEM) || defined(DEBUG_8BYTE_ALIGN) || defined(SUSPECT_QD_PROB)
|
||||||
|
#include <stdio.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static int use_mcast_ = 0;
|
||||||
|
static char mcast_groupname[200];
|
||||||
|
|
||||||
|
struct {
|
||||||
|
OSCQueue TheQueue; /* The Priority Queue */
|
||||||
|
OSCTimeTag lastTimeTag; /* Best approximation to current time */
|
||||||
|
Boolean timePassed; /* TRUE if OSCInvokeMessagesThatAreReady() has been
|
||||||
|
called since the last time OSCBeProductiveWhileWaiting() was. */
|
||||||
|
int recvBufSize; /* Size of all receive buffers */
|
||||||
|
void *(*InitTimeMalloc)(int numBytes);
|
||||||
|
void *(*RealTimeMemoryAllocator)(int numBytes);
|
||||||
|
} globals;
|
||||||
|
|
||||||
|
|
||||||
|
/* Data structures */
|
||||||
|
|
||||||
|
struct OSCPacketBuffer_struct {
|
||||||
|
char *buf; /* Contents of network packet go here */
|
||||||
|
int n; /* Overall size of packet */
|
||||||
|
int refcount; /* # queued things using memory from this buffer */
|
||||||
|
struct OSCPacketBuffer_struct *nextFree; /* For linked list of free packets */
|
||||||
|
|
||||||
|
Boolean returnAddrOK; /* Because returnAddr points to memory we need to
|
||||||
|
store future return addresses, we set this
|
||||||
|
field to FALSE in situations where a packet
|
||||||
|
buffer "has no return address" instead of
|
||||||
|
setting returnAddr to 0 */
|
||||||
|
|
||||||
|
NetworkReturnAddressPtr returnAddr;
|
||||||
|
//void *returnAddr; /* Addr of client this packet is from */
|
||||||
|
/* This was of type NetworkReturnAddressPtr, but the constness
|
||||||
|
was making it impossible for me to initialize it. There's
|
||||||
|
probably a better way that I don't understand. */
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/* These are the data objects that are inserted and removed from the
|
||||||
|
scheduler. The idea is that we can insert a single message or
|
||||||
|
an entire bundle on the scheduler, and we can leave it in various
|
||||||
|
states of being parsed and pattern matched. */
|
||||||
|
|
||||||
|
#define NOT_DISPATCHED_YET ((callbackList) -1)
|
||||||
|
|
||||||
|
typedef struct queuedDataStruct {
|
||||||
|
OSCTimeTag timetag; /* When this bundle or message is supposed to happen */
|
||||||
|
OSCPacketBuffer myPacket; /* Ptr. to buffer this is contained in */
|
||||||
|
|
||||||
|
enum {MESSAGE, BUNDLE} type;
|
||||||
|
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
char *bytes;
|
||||||
|
int length;
|
||||||
|
} bundle;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
char *messageName; /* Ptr. into receive buffer */
|
||||||
|
int length; /* Includes name and arugments */
|
||||||
|
void *args; /* 0 if not yet parsed */
|
||||||
|
int argLength;
|
||||||
|
callbackList callbacks; /* May be NOT_DISPATCHED_YET */
|
||||||
|
} message;
|
||||||
|
} data;
|
||||||
|
|
||||||
|
struct queuedDataStruct *nextFree; /* For linked list of free structures */
|
||||||
|
} queuedData;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Static procedure declatations */
|
||||||
|
static Boolean InitPackets(int receiveBufferSize, int clientAddrSize, int numReceiveBuffers);
|
||||||
|
static Boolean InitQueuedData(int numQueuedObjects);
|
||||||
|
static queuedData *AllocQD(void);
|
||||||
|
static void FreeQD(queuedData *qd);
|
||||||
|
static void CallWholeCallbackList(callbackList l, int argLength, void *args, OSCTimeTag when, NetworkReturnAddressPtr returnAddr);
|
||||||
|
static void InsertBundleOrMessage(char *buf, int n, OSCPacketBuffer packet, OSCTimeTag enclosingTimeTag);
|
||||||
|
static void ParseBundle(queuedData *qd);
|
||||||
|
static Boolean ParseMessage(queuedData *qd);
|
||||||
|
/* static void CheckPacketRefcount(OSCPacketBuffer packet); */
|
||||||
|
static void PacketAddRef(OSCPacketBuffer packet);
|
||||||
|
static void PacketRemoveRef(OSCPacketBuffer packet);
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************
|
||||||
|
Initialization and memory pre-allocation
|
||||||
|
**************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
Boolean OSCInitReceive(struct OSCReceiveMemoryTuner *t) {
|
||||||
|
globals.recvBufSize = t->receiveBufferSize;
|
||||||
|
globals.InitTimeMalloc = t->InitTimeMemoryAllocator;
|
||||||
|
globals.RealTimeMemoryAllocator = t->RealTimeMemoryAllocator;
|
||||||
|
|
||||||
|
globals.TheQueue = OSCNewQueue(t->numQueuedObjects, t->InitTimeMemoryAllocator);
|
||||||
|
if (globals.TheQueue == 0) return FALSE;
|
||||||
|
|
||||||
|
globals.lastTimeTag = OSCTT_Immediately();
|
||||||
|
globals.timePassed = TRUE;
|
||||||
|
|
||||||
|
if (InitPackets(t->receiveBufferSize, SizeOfNetworkReturnAddress(),
|
||||||
|
t->numReceiveBuffers) == FALSE) return FALSE;
|
||||||
|
if (InitQueuedData(t->numQueuedObjects) == FALSE) return FALSE;
|
||||||
|
if (InitCallbackListNodes(t->numCallbackListNodes, t->InitTimeMemoryAllocator)
|
||||||
|
== FALSE) return FALSE;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************
|
||||||
|
Managing packet data structures
|
||||||
|
**************************************************/
|
||||||
|
|
||||||
|
static struct OSCPacketBuffer_struct *freePackets;
|
||||||
|
|
||||||
|
#ifdef DEBUG_PACKET_MEM
|
||||||
|
static void PrintPacketFreeList(void) {
|
||||||
|
struct OSCPacketBuffer_struct *p;
|
||||||
|
printf("- freePackets:");
|
||||||
|
if (freePackets == 0) {
|
||||||
|
printf(" [none]");
|
||||||
|
}
|
||||||
|
for (p = freePackets; p != 0; p = p->nextFree) {
|
||||||
|
printf(" %p", p);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define MIN_REASONABLE_RCV_BUFSIZE 128
|
||||||
|
|
||||||
|
void OSCFreeReceiver(void)
|
||||||
|
{
|
||||||
|
if( freePackets) free(freePackets);
|
||||||
|
if( globals.TheQueue ) free( globals.TheQueue );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static Boolean InitPackets(int receiveBufferSize, int clientAddrSize, int numReceiveBuffers) {
|
||||||
|
int i;
|
||||||
|
struct OSCPacketBuffer_struct *allPackets;
|
||||||
|
|
||||||
|
if (receiveBufferSize < MIN_REASONABLE_RCV_BUFSIZE) {
|
||||||
|
fatal_error("OSCInitReceive: receiveBufferSize of %d is unreasonably small.",
|
||||||
|
receiveBufferSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
allPackets = (*(globals.InitTimeMalloc))(numReceiveBuffers * sizeof(*allPackets));
|
||||||
|
if (allPackets == 0) return FALSE;
|
||||||
|
|
||||||
|
for (i = 0; i < numReceiveBuffers; ++i) {
|
||||||
|
allPackets[i].returnAddr = (*(globals.InitTimeMalloc))(clientAddrSize);
|
||||||
|
if (allPackets[i].returnAddr == 0) return FALSE;
|
||||||
|
|
||||||
|
allPackets[i].buf = (*(globals.InitTimeMalloc))(receiveBufferSize);
|
||||||
|
if (allPackets[i].buf == 0) return FALSE;
|
||||||
|
|
||||||
|
allPackets[i].nextFree = &(allPackets[i+1]);
|
||||||
|
}
|
||||||
|
allPackets[numReceiveBuffers-1].nextFree = ((struct OSCPacketBuffer_struct *) 0);
|
||||||
|
freePackets = allPackets;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *OSCPacketBufferGetBuffer(OSCPacketBuffer p) {
|
||||||
|
return p->buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
int *OSCPacketBufferGetSize(OSCPacketBuffer p) {
|
||||||
|
return &(p->n);
|
||||||
|
}
|
||||||
|
|
||||||
|
int OSCGetReceiveBufferSize(void) {
|
||||||
|
return globals.recvBufSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
NetworkReturnAddressPtr OSCPacketBufferGetClientAddr(OSCPacketBuffer p) {
|
||||||
|
return p->returnAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
void PrintPacket(OSCPacketBuffer p) {
|
||||||
|
printf("Packet %p. buf %p, n %d, refcount %d, nextFree %p\n",
|
||||||
|
p, p->buf, p->n, p->refcount, p->nextFree);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
OSCPacketBuffer OSCAllocPacketBuffer(void) {
|
||||||
|
OSCPacketBuffer result;
|
||||||
|
if (freePackets == 0) {
|
||||||
|
/* Could try to call the real-time memory allocator here */
|
||||||
|
OSCWarning("OSCAllocPacketBuffer: no free packets!");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = freePackets;
|
||||||
|
freePackets = result->nextFree;
|
||||||
|
result->refcount = 0;
|
||||||
|
|
||||||
|
#ifdef DEBUG_PACKET_MEM
|
||||||
|
printf("OSCAllocPacketBuffer: allocating %p ", result);
|
||||||
|
PrintPacketFreeList();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OSCFreePacket(OSCPacketBuffer p) {
|
||||||
|
#ifdef PARANOID
|
||||||
|
if (p->refcount != 0) {
|
||||||
|
OSCWarning("OSCFreePacket: %p's refcount is %d!\n", p, p->refcount);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
p->nextFree = freePackets;
|
||||||
|
freePackets = p;
|
||||||
|
|
||||||
|
#ifdef DEBUG_PACKET_MEM
|
||||||
|
printf("OSCFreePacket: freed %p ", p);
|
||||||
|
PrintPacketFreeList();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************
|
||||||
|
Dealing with OpenSoundControl packets and
|
||||||
|
making the messages take effect.
|
||||||
|
**************************************************/
|
||||||
|
|
||||||
|
static queuedData *freeQDList;
|
||||||
|
|
||||||
|
#ifdef DEBUG_QD_MEM
|
||||||
|
static void PrintQDFreeList(void) {
|
||||||
|
static queuedData *p;
|
||||||
|
printf("- freeQDList:");
|
||||||
|
if (freeQDList == 0) {
|
||||||
|
printf(" [none]");
|
||||||
|
}
|
||||||
|
for (p = freeQDList; p != 0; p = p->nextFree) {
|
||||||
|
printf(" %p", p);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static Boolean InitQueuedData(int numQueuedObjects) {
|
||||||
|
int i;
|
||||||
|
queuedData *allQD;
|
||||||
|
|
||||||
|
allQD = (*(globals.InitTimeMalloc))(numQueuedObjects * (sizeof(*allQD)));
|
||||||
|
if (allQD == 0) return FALSE;
|
||||||
|
|
||||||
|
for (i = 0; i < numQueuedObjects; ++i) {
|
||||||
|
allQD[i].nextFree = &(allQD[i+1]);
|
||||||
|
}
|
||||||
|
allQD[numQueuedObjects-1].nextFree = 0;
|
||||||
|
freeQDList = &(allQD[0]);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static queuedData *AllocQD(void) {
|
||||||
|
queuedData *result;
|
||||||
|
|
||||||
|
if (freeQDList == 0) {
|
||||||
|
/* Could try to call realtime malloc() */
|
||||||
|
OSCWarning("AllocQD: no QD objects free now; returning 0.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = freeQDList;
|
||||||
|
freeQDList = freeQDList->nextFree;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void FreeQD(queuedData *qd) {
|
||||||
|
qd->nextFree = freeQDList;
|
||||||
|
freeQDList = qd;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OSCAcceptPacket(OSCPacketBuffer packet) {
|
||||||
|
if ((packet->n % 4) != 0) {
|
||||||
|
OSCProblem("OSC packet size (%d bytes) not a multiple of 4.", packet->n);
|
||||||
|
DropPacket(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf("OSCAcceptPacket(OSCPacketBuffer %p, buf %p, size %d)\n",
|
||||||
|
packet, packet->buf, packet->n);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* If the packet came from the user, it's return address is OK. */
|
||||||
|
packet->returnAddrOK = TRUE;
|
||||||
|
|
||||||
|
InsertBundleOrMessage(packet->buf, packet->n, packet, OSCTT_Immediately());
|
||||||
|
|
||||||
|
#ifdef PARANOID
|
||||||
|
if (packet->refcount == 0) {
|
||||||
|
if (freePackets != packet) {
|
||||||
|
fatal_error("OSCAcceptPacket: packet refcount 0, but it's not the head of the free list!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
OSCInvokeAllMessagesThatAreReady(globals.lastTimeTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
Boolean OSCBeProductiveWhileWaiting(void) {
|
||||||
|
/* Here's where we could be clever if an allocation fails.
|
||||||
|
(I.e., if we're out of QD objects, we should avoid
|
||||||
|
parsing bundles.) The code isn't that smart yet. */
|
||||||
|
|
||||||
|
queuedData *qd;
|
||||||
|
|
||||||
|
if (globals.timePassed) {
|
||||||
|
OSCQueueScanStart(globals.TheQueue);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
qd = (queuedData *) OSCQueueScanNext(globals.TheQueue);
|
||||||
|
if (qd == 0) return FALSE;
|
||||||
|
|
||||||
|
if (qd->type == BUNDLE) {
|
||||||
|
ParseBundle(qd);
|
||||||
|
OSCQueueRemoveCurrentScanItem(globals.TheQueue);
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
if (qd->data.message.callbacks == NOT_DISPATCHED_YET) {
|
||||||
|
if (ParseMessage(qd) == FALSE) {
|
||||||
|
/* Problem with this message - flush it. */
|
||||||
|
DropMessage(qd->data.message.messageName,
|
||||||
|
qd->data.message.length,
|
||||||
|
qd->myPacket);
|
||||||
|
OSCQueueRemoveCurrentScanItem(globals.TheQueue);
|
||||||
|
PacketRemoveRef(qd->myPacket);
|
||||||
|
FreeQD(qd);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
/* The item we found was an already-dispatched message,
|
||||||
|
so continue the while loop. */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Boolean OSCInvokeMessagesThatAreReady(OSCTimeTag now) {
|
||||||
|
queuedData *x;
|
||||||
|
OSCTimeTag thisTimeTag;
|
||||||
|
|
||||||
|
globals.lastTimeTag = now;
|
||||||
|
globals.timePassed = TRUE;
|
||||||
|
|
||||||
|
thisTimeTag = OSCQueueEarliestTimeTag(globals.TheQueue);
|
||||||
|
|
||||||
|
if (OSCTT_Compare(thisTimeTag, now) > 0) {
|
||||||
|
/* No messages ready yet. */
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf("OSCInvokeMessagesThatAreReady(%llx) - yes, some are ready; earliest %llx\n", now, thisTimeTag);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
while (OSCTT_Compare(thisTimeTag, OSCQueueEarliestTimeTag(globals.TheQueue)) == 0) {
|
||||||
|
x = (queuedData *) OSCQueueRemoveEarliest(globals.TheQueue);
|
||||||
|
if (!x) return FALSE;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf("...Just removed earliest entry from queue: %p, TT %llx, %s\n",
|
||||||
|
x, x->timetag, x->type == MESSAGE ? "message" : "bundle");
|
||||||
|
if (x->type == MESSAGE) {
|
||||||
|
printf("...message %s, len %d, args %p, arglen %d, callbacks %p\n",
|
||||||
|
x->data.message.messageName, x->data.message.length, x->data.message.args,
|
||||||
|
x->data.message.argLength, x->data.message.callbacks);
|
||||||
|
} else {
|
||||||
|
if (x->data.bundle.length == 0) {
|
||||||
|
printf("...bundle is empty.\n");
|
||||||
|
} else {
|
||||||
|
printf("...bundle len %d, first count %d, first msg %s\n",
|
||||||
|
x->data.bundle.length, *((int *) x->data.bundle.bytes), x->data.bundle.bytes+4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PrintPacket(x->myPacket);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (x->type == BUNDLE) {
|
||||||
|
ParseBundle(x);
|
||||||
|
} else {
|
||||||
|
if (x->data.message.callbacks == NOT_DISPATCHED_YET) {
|
||||||
|
if (ParseMessage(x) == FALSE) {
|
||||||
|
/* Problem with this message - flush it. */
|
||||||
|
PacketRemoveRef(x->myPacket);
|
||||||
|
FreeQD(x);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CallWholeCallbackList(x->data.message.callbacks,
|
||||||
|
x->data.message.argLength,
|
||||||
|
x->data.message.args,
|
||||||
|
thisTimeTag,
|
||||||
|
x->myPacket->returnAddrOK ? x->myPacket->returnAddr : 0);
|
||||||
|
|
||||||
|
PacketRemoveRef(x->myPacket);
|
||||||
|
FreeQD(x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef PARANOID
|
||||||
|
if (OSCTT_Compare(thisTimeTag, OSCQueueEarliestTimeTag(globals.TheQueue)) > 0) {
|
||||||
|
fatal_error("OSCInvokeMessagesThatAreReady: corrupt queue!\n"
|
||||||
|
" just did %llx; earliest in queue is now %llx",
|
||||||
|
thisTimeTag, OSCQueueEarliestTimeTag(globals.TheQueue));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return OSCTT_Compare(OSCQueueEarliestTimeTag(globals.TheQueue), now) <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OSCInvokeAllMessagesThatAreReady(OSCTimeTag now) {
|
||||||
|
while (OSCInvokeMessagesThatAreReady(now)) {
|
||||||
|
/* Do nothing */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void CallWholeCallbackList(callbackList l, int argLength, void *args, OSCTimeTag when,
|
||||||
|
NetworkReturnAddressPtr returnAddr) {
|
||||||
|
/* In a multithreaded application, this might run in a different thread
|
||||||
|
than the thread that deals with the priority queue. */
|
||||||
|
|
||||||
|
callbackList next;
|
||||||
|
|
||||||
|
while (l != 0) {
|
||||||
|
(*(l->callback))(l->context, argLength, args, when, returnAddr);
|
||||||
|
next = l->next;
|
||||||
|
FreeCallbackListNode(l);
|
||||||
|
l = next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void InsertBundleOrMessage(char *buf, int n, OSCPacketBuffer packet, OSCTimeTag enclosingTimeTag) {
|
||||||
|
Boolean IsBundle;
|
||||||
|
queuedData *qd;
|
||||||
|
|
||||||
|
/* We add the reference first thing so in case any of the upcoming
|
||||||
|
potential failure situations come we can call PacketRemoveRef, thereby
|
||||||
|
freeing the packet if necessary. */
|
||||||
|
PacketAddRef(packet);
|
||||||
|
|
||||||
|
if ((n % 4) != 0) {
|
||||||
|
OSCProblem("OSC message or bundle size (%d bytes) not a multiple of 4.", n);
|
||||||
|
DropMessage(buf, n, packet);
|
||||||
|
PacketRemoveRef(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((n >= 8) && (strncmp(buf, "#bundle", 8) == 0)) {
|
||||||
|
IsBundle = TRUE;
|
||||||
|
|
||||||
|
if (n < 16) {
|
||||||
|
OSCProblem("Bundle message too small (%d bytes) for time tag.", n);
|
||||||
|
DropBundle(buf, n, packet);
|
||||||
|
PacketRemoveRef(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
IsBundle = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
qd = AllocQD();
|
||||||
|
|
||||||
|
if (qd == 0) {
|
||||||
|
OSCProblem("Not enough memory for queued data!");
|
||||||
|
DropBundle(buf, n, packet);
|
||||||
|
PacketRemoveRef(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
qd->myPacket = packet;
|
||||||
|
qd->type = IsBundle ? BUNDLE : MESSAGE;
|
||||||
|
|
||||||
|
if (IsBundle) {
|
||||||
|
/* Be careful of 8-byte alignment when copying the time tag. Here's a good
|
||||||
|
way to get a bus error when buf happens not to be 8-byte aligned:
|
||||||
|
qd->timetag = *((OSCTimeTag *)(buf+8));
|
||||||
|
*/
|
||||||
|
memcpy(&(qd->timetag), buf+8, sizeof(OSCTimeTag));
|
||||||
|
|
||||||
|
if (OSCTT_Compare(qd->timetag, enclosingTimeTag) < 0) {
|
||||||
|
OSCProblem("Time tag of sub-bundle is before time tag of enclosing bundle.");
|
||||||
|
DropBundle(buf, n, packet);
|
||||||
|
PacketRemoveRef(packet);
|
||||||
|
FreeQD(qd);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
qd->data.bundle.bytes = buf + 16;
|
||||||
|
qd->data.bundle.length = n - 16;
|
||||||
|
} else {
|
||||||
|
qd->timetag = enclosingTimeTag;
|
||||||
|
qd->data.message.messageName = buf;
|
||||||
|
qd->data.message.length = n;
|
||||||
|
qd->data.message.callbacks = NOT_DISPATCHED_YET;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCQueueInsert(globals.TheQueue, (OSCSchedulableObject) qd);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void ParseBundle(queuedData *qd) {
|
||||||
|
/* A queued bundle has been removed from the scheduler queue, and now it's
|
||||||
|
time to parse all the stuff inside it and schedule the enclosed
|
||||||
|
messages and bundles. Once all the contents of the bundle have been
|
||||||
|
parsed and scheduled, we trash the bundle, decrementing the packet
|
||||||
|
count and freeing the QD. */
|
||||||
|
|
||||||
|
int size;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
if (qd->type != BUNDLE) {
|
||||||
|
fatal_error("This can't happen: bundle isn't a bundle!");
|
||||||
|
}
|
||||||
|
|
||||||
|
while (i < qd->data.bundle.length) {
|
||||||
|
size = *((int *) (qd->data.bundle.bytes + i));
|
||||||
|
if ((size % 4) != 0) {
|
||||||
|
OSCProblem("Bad size count %d in bundle (not a multiple of 4).", size);
|
||||||
|
DropBundle(qd->data.bundle.bytes, qd->data.bundle.length, qd->myPacket);
|
||||||
|
goto bag;
|
||||||
|
}
|
||||||
|
if ((size + i + 4) > qd->data.bundle.length) {
|
||||||
|
OSCProblem("Bad size count %d in bundle (only %d bytes left in entire bundle).",
|
||||||
|
size, qd->data.bundle.length-i-4);
|
||||||
|
DropBundle(qd->data.bundle.bytes, qd->data.bundle.length, qd->myPacket);
|
||||||
|
goto bag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Recursively handle element of bundle */
|
||||||
|
InsertBundleOrMessage(qd->data.bundle.bytes+i+4, size, qd->myPacket, qd->timetag);
|
||||||
|
i += 4 + size;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i != qd->data.bundle.length) {
|
||||||
|
fatal_error("This can't happen: internal logic error parsing bundle");
|
||||||
|
}
|
||||||
|
|
||||||
|
bag:
|
||||||
|
/* If we got here successfully, we've added to the packet's reference count for
|
||||||
|
each message or subbundle by calling InsertBundleOrMessage(), so we remove the one
|
||||||
|
reference for bundle that we just parsed. If we got here by "goto bag", there's a
|
||||||
|
problem with the bundle so we also want to lose the reference count. */
|
||||||
|
|
||||||
|
PacketRemoveRef(qd->myPacket);
|
||||||
|
FreeQD(qd);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static Boolean ParseMessage(queuedData *qd) {
|
||||||
|
/* Fill in all the information we'll need to execute the message as
|
||||||
|
quickly as possible when the time comes. This means figuring out where
|
||||||
|
the address ends and the arguments begin, and also pattern matching the
|
||||||
|
address to find the callbacks associated with it.
|
||||||
|
|
||||||
|
The message may be something we have to invoke now, or it may be some
|
||||||
|
message scheduled for the future that's just waiting on the queue; this
|
||||||
|
procedure doesn't care. */
|
||||||
|
|
||||||
|
|
||||||
|
char *args; /* char * so we can do pointer subtraction */
|
||||||
|
int messageLen;
|
||||||
|
char *DAAS_errormsg;
|
||||||
|
|
||||||
|
|
||||||
|
if (qd->type != MESSAGE) {
|
||||||
|
fatal_error("This can't happen: message isn't a message!");
|
||||||
|
}
|
||||||
|
|
||||||
|
args = OSCDataAfterAlignedString(qd->data.message.messageName,
|
||||||
|
qd->data.message.messageName+qd->data.message.length,
|
||||||
|
&DAAS_errormsg);
|
||||||
|
|
||||||
|
if (args == 0) {
|
||||||
|
OSCProblem("Bad message name string: %s\n", DAAS_errormsg);
|
||||||
|
DropMessage(qd->data.message.messageName, qd->data.message.length, qd->myPacket);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
qd->data.message.args = args;
|
||||||
|
messageLen = args - qd->data.message.messageName;
|
||||||
|
qd->data.message.argLength = qd->data.message.length - messageLen;
|
||||||
|
|
||||||
|
qd->data.message.callbacks = OSCDispatchMessage(qd->data.message.messageName);
|
||||||
|
|
||||||
|
if (qd->data.message.callbacks == 0) {
|
||||||
|
OSCWarning("Message pattern \"%s\" did not correspond to any address in the synth.",
|
||||||
|
qd->data.message.messageName);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void PacketAddRef(OSCPacketBuffer packet) {
|
||||||
|
++(packet->refcount);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void PacketRemoveRef(OSCPacketBuffer packet) {
|
||||||
|
--(packet->refcount);
|
||||||
|
if (packet->refcount == 0) {
|
||||||
|
OSCFreePacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************
|
||||||
|
Implementation of procedures declared in
|
||||||
|
OSC-internal-messages.h
|
||||||
|
**************************************************/
|
||||||
|
|
||||||
|
#include <libOSC/OSC-internal-messages.h>
|
||||||
|
|
||||||
|
Boolean OSCSendInternalMessage(char *address, int arglen, void *args) {
|
||||||
|
return OSCSendInternalMessageWithRSVP(address, arglen, args, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
Boolean OSCSendInternalMessageWithRSVP(char *address, int arglen, void *args,
|
||||||
|
NetworkReturnAddressPtr returnAddr) {
|
||||||
|
callbackList l = OSCDispatchMessage(address);
|
||||||
|
|
||||||
|
if (l == 0) return FALSE;
|
||||||
|
|
||||||
|
CallWholeCallbackList(l, arglen, args, OSCTT_Immediately(), returnAddr);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Boolean OSCScheduleInternalMessages(OSCTimeTag when, int numMessages,
|
||||||
|
char **addresses, int *arglens, void **args) {
|
||||||
|
int i, bufSizeNeeded;
|
||||||
|
OSCPacketBuffer p;
|
||||||
|
queuedData *qd;
|
||||||
|
char *bufPtr;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Figure out how big of a buffer we'll need to hold this huge bundle.
|
||||||
|
We don't store the "#bundle" string or the time tag, just the 4-byte
|
||||||
|
size counts, the addresses, possible extra null padding for the
|
||||||
|
addresses, and the arguments. */
|
||||||
|
|
||||||
|
bufSizeNeeded = 0;
|
||||||
|
for (i = 0; i < numMessages; ++i) {
|
||||||
|
bufSizeNeeded += 4 + OSCPaddedStrlen(addresses[i]) + arglens[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bufSizeNeeded > OSCGetReceiveBufferSize()) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Now try to allocate the data objects to hold these messages */
|
||||||
|
qd = AllocQD();
|
||||||
|
if (qd == 0) return FALSE;
|
||||||
|
|
||||||
|
p = OSCAllocPacketBuffer();
|
||||||
|
if (p == 0) {
|
||||||
|
FreeQD(qd);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Now fill in the buffer with a fake #bundle message. This is almost like
|
||||||
|
putting a real #bundle message in the buffer and then calling OSCAcceptPacket,
|
||||||
|
except that we save a little time and memory by not writing "#bundle" or the time tag,
|
||||||
|
and by pre-parsing the messages a little. Thus, this code duplicates a lot
|
||||||
|
of what's in InsertBundleOrMessage() */
|
||||||
|
|
||||||
|
bufPtr = p->buf;
|
||||||
|
|
||||||
|
for (i = 0; i < numMessages; ++i) {
|
||||||
|
/* First the size count of this bundle element */
|
||||||
|
*((int4 *) bufPtr) = OSCPaddedStrlen(addresses[i]) + arglens[i];
|
||||||
|
bufPtr += sizeof(int4);
|
||||||
|
|
||||||
|
/* Then the address */
|
||||||
|
bufPtr = OSCPaddedStrcpy(bufPtr, addresses[i]);
|
||||||
|
|
||||||
|
/* Then the arguments */
|
||||||
|
memcpy(bufPtr, args[i], arglens[i]);
|
||||||
|
bufPtr += arglens[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef PARANOID
|
||||||
|
if (bufPtr != p->buf+bufSizeNeeded) {
|
||||||
|
fatal_error("OSCScheduleInternalMessages: internal error");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Fill in the rest of the packet fields */
|
||||||
|
p->n = bufSizeNeeded;
|
||||||
|
p->returnAddrOK = FALSE;
|
||||||
|
PacketAddRef(p);
|
||||||
|
|
||||||
|
/* Now fill in the queuedData object */
|
||||||
|
qd->timetag = when;
|
||||||
|
qd->myPacket = p;
|
||||||
|
qd->type = BUNDLE;
|
||||||
|
qd->data.bundle.length = bufSizeNeeded;
|
||||||
|
qd->data.bundle.bytes = p->buf;
|
||||||
|
|
||||||
|
/* Now we can put it into the scheduling queue. */
|
||||||
|
OSCQueueInsert(globals.TheQueue, (OSCSchedulableObject) qd);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Boolean NetworkPacketWaiting(OSCPacketBuffer packet) {
|
||||||
|
int n;
|
||||||
|
NetworkReturnAddressPtr na = OSCPacketBufferGetClientAddr(packet);
|
||||||
|
|
||||||
|
// if( use_mcast_ )
|
||||||
|
// {
|
||||||
|
fd_set fds;
|
||||||
|
struct timeval no_wait;
|
||||||
|
int status;
|
||||||
|
memset( &no_wait, 0, sizeof(no_wait));
|
||||||
|
FD_ZERO(&fds);
|
||||||
|
FD_SET( na->sockfd , &fds );
|
||||||
|
status = select( na->sockfd + 1, &fds, 0, 0, &no_wait );
|
||||||
|
if(status <= 0)
|
||||||
|
return FALSE;
|
||||||
|
if(FD_ISSET( na->sockfd, &fds ))
|
||||||
|
return TRUE;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// if( ioctl( na->sockfd, FIONREAD, &n, 0)==-1) return FALSE;
|
||||||
|
// if( n==0 ) return FALSE;
|
||||||
|
// }
|
||||||
|
// return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Boolean NetworkReceivePacket( OSCPacketBuffer packet ) {
|
||||||
|
int n;
|
||||||
|
NetworkReturnAddressPtr na = OSCPacketBufferGetClientAddr(packet);
|
||||||
|
|
||||||
|
if( use_mcast_ )
|
||||||
|
{
|
||||||
|
n = recv( na->sockfd, packet->buf, 100, 0 );
|
||||||
|
if( n<= 0)
|
||||||
|
return FALSE;
|
||||||
|
packet->n = n;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
n = recvfrom( na->sockfd, packet->buf, 100, 0,
|
||||||
|
(struct sockaddr*) &(na->cl_addr), &(na->clilen));
|
||||||
|
if(n<=0) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
packet->n = n;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GoMultiCast( const char *group_name )
|
||||||
|
{
|
||||||
|
use_mcast_ = 1;
|
||||||
|
strncpy( mcast_groupname, group_name, strlen(group_name ));
|
||||||
|
}
|
||||||
|
|
||||||
|
int IsMultiCast( char *dst )
|
||||||
|
{
|
||||||
|
if(use_mcast_)
|
||||||
|
sprintf(dst, "%s", mcast_groupname );
|
||||||
|
return use_mcast_;
|
||||||
|
}
|
||||||
|
|
||||||
|
Boolean NetworkStartUDPServer(OSCPacketBuffer packet, int port_id) {
|
||||||
|
struct sockaddr_in my_addr;
|
||||||
|
my_addr.sin_family = AF_INET;
|
||||||
|
my_addr.sin_port = htons(port_id);
|
||||||
|
my_addr.sin_addr.s_addr = INADDR_ANY;
|
||||||
|
|
||||||
|
memset( &(my_addr.sin_zero), 0, 8);
|
||||||
|
|
||||||
|
if( use_mcast_ )
|
||||||
|
{
|
||||||
|
struct ip_mreq mcast_req;
|
||||||
|
int on = 1;
|
||||||
|
int err= 0;
|
||||||
|
memset( &mcast_req, 0, sizeof(mcast_req));
|
||||||
|
packet->returnAddr->sockfd = socket( AF_INET, SOCK_DGRAM, 0);
|
||||||
|
#ifdef SO_REUSEADDR
|
||||||
|
setsockopt( packet->returnAddr->sockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
|
||||||
|
#endif
|
||||||
|
#ifdef SO_REUSEPORT
|
||||||
|
setsockopt( packet->returnAddr->sockfd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on));
|
||||||
|
#endif
|
||||||
|
err = bind( packet->returnAddr->sockfd, (struct sockaddr*) &my_addr, sizeof( my_addr ));
|
||||||
|
if( err < 0 )
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
mcast_req.imr_multiaddr.s_addr = inet_addr( mcast_groupname );
|
||||||
|
mcast_req.imr_interface.s_addr = htonl( INADDR_ANY );
|
||||||
|
setsockopt( packet->returnAddr->sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP,
|
||||||
|
&mcast_req, sizeof(mcast_req) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
packet->returnAddr->sockfd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
|
if( bind( packet->returnAddr->sockfd,
|
||||||
|
(struct sockaddr*) &my_addr,
|
||||||
|
sizeof(struct sockaddr)) == -1) return FALSE;
|
||||||
|
|
||||||
|
packet->returnAddr->clilen = sizeof(struct sockaddr);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
242
veejay-ng/libOSC/OSC-receive.h
Normal file
242
veejay-ng/libOSC/OSC-receive.h
Normal file
@@ -0,0 +1,242 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
OSC-receive.h
|
||||||
|
Matt Wright, 11/18/97
|
||||||
|
|
||||||
|
include OSC-timetag.h and NetworkReturnAddress.h before this file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************
|
||||||
|
Initialization and memory pre-allocation
|
||||||
|
**************************************************/
|
||||||
|
|
||||||
|
/* The memory model used by this module is pre-allocation of fixed-size
|
||||||
|
objects for network buffers and other internal objects. This preallocated
|
||||||
|
memory is dynamically managed internally by a custom high-performance memory
|
||||||
|
allocator. When the preallocated memory runs out, this module calls an
|
||||||
|
optional realtime memory allocator that you provide. If your memory
|
||||||
|
allocator gives this module more memory, it will add it to the pool of
|
||||||
|
objects and never free the memory. If your system does not have a realtime
|
||||||
|
memory allocator, provide a procedure that always returns 0.
|
||||||
|
|
||||||
|
You will fill an OSCReceiveMemoryTuner struct with the parameters that
|
||||||
|
determine how memory will be allocated.
|
||||||
|
|
||||||
|
The MemoryAllocator fields are procedures you will provide that allocate
|
||||||
|
memory. Like malloc(), they take the number of bytes as arguments and return
|
||||||
|
either a pointer to the new memory or 0 for failure. This memory will never
|
||||||
|
be freed.
|
||||||
|
|
||||||
|
- The InitTimeMemoryAllocator will be called only at initialization time,
|
||||||
|
i.e., before OSCInitAddressSpace() returns. If it ever returns 0, that's
|
||||||
|
a fatal error.
|
||||||
|
|
||||||
|
- The RealTimeMemoryAllocator will be called if, while the application is
|
||||||
|
running, the address space grows larger than can fit in what was allocated
|
||||||
|
at initialization time. If the RealTimeMemoryAllocator() returns 0, the
|
||||||
|
operation attempting to grow the address space will fail. If your system
|
||||||
|
does not have real-time memory allocation, RealTimeMemoryAllocator should
|
||||||
|
be a procedure that always returns 0.
|
||||||
|
|
||||||
|
The remaining fields say how much memory to allocate at initialization time:
|
||||||
|
|
||||||
|
- receiveBufferSize is the maximum packet size that can be received. Is the
|
||||||
|
maximum UDP packet size 4096? OSC clients can send a query to this system
|
||||||
|
asking for this maximum packet size.
|
||||||
|
|
||||||
|
- numReceiveBuffers determines how many packets at a time can be sitting
|
||||||
|
on the scheduler with messages waiting to take effect. If all the
|
||||||
|
receive buffers are tied up like this, you won't be able to receive
|
||||||
|
new packets.
|
||||||
|
|
||||||
|
- numQueuedObjects is the number of messages and packets that can be sitting
|
||||||
|
on the scheduler waiting to take effect.
|
||||||
|
|
||||||
|
- Because a message pattern may be dispatched before the message takes effect,
|
||||||
|
we need memory to store the callback pointers corresponding to a message.
|
||||||
|
numCallbackListNodes is the number of callbacks that may be stored in this
|
||||||
|
fashion. It must be at least as large as the maximum number of methods that
|
||||||
|
any one message pattern may match, but if you want to take advantage of
|
||||||
|
pre-dispatching, this should be large enough to hold all the callbacks for
|
||||||
|
all the messages waiting in the scheduler.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct OSCReceiveMemoryTuner {
|
||||||
|
void *(*InitTimeMemoryAllocator)(int numBytes);
|
||||||
|
void *(*RealTimeMemoryAllocator)(int numBytes);
|
||||||
|
int receiveBufferSize;
|
||||||
|
int numReceiveBuffers;
|
||||||
|
int numQueuedObjects;
|
||||||
|
int numCallbackListNodes;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Given an OSCReceiveMemoryTuner, return the number of bytes of
|
||||||
|
memory that would be allocated if OSCInitReceive() were called
|
||||||
|
on it. */
|
||||||
|
int OSCReceiveMemoryThatWouldBeAllocated(struct OSCReceiveMemoryTuner *t);
|
||||||
|
|
||||||
|
/* Returns FALSE if it fails to initialize */
|
||||||
|
Boolean OSCInitReceive(struct OSCReceiveMemoryTuner *t);
|
||||||
|
|
||||||
|
/**************************************************
|
||||||
|
Managing packet data structures
|
||||||
|
**************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/* You don't get to know what's in an OSCPacketBuffer. */
|
||||||
|
typedef struct OSCPacketBuffer_struct *OSCPacketBuffer;
|
||||||
|
|
||||||
|
/* Get an unused packet. Returns 0 if none are free. If you get a packet
|
||||||
|
with this procedure, it is your responsibility either to call
|
||||||
|
OSCAcceptPacket() on it (in which case the internals of the OSC Kit free
|
||||||
|
the OSCPacketBuffer after the last message in it takes effect) or to call
|
||||||
|
OSCFreePacket() on it. */
|
||||||
|
OSCPacketBuffer OSCAllocPacketBuffer(void);
|
||||||
|
|
||||||
|
/* Free. This is called automatically after the last message that was
|
||||||
|
in the packet is invoked. You shouldn't need to call this unless
|
||||||
|
you get a packet with OSCAllocPacketBuffer() and then for some reason
|
||||||
|
decide not to call OSCAcceptPacket() on it. */
|
||||||
|
void OSCFreePacket(OSCPacketBuffer p);
|
||||||
|
|
||||||
|
void OSCFreeReceiver(void);
|
||||||
|
|
||||||
|
/* Whatever code actually gets packets from the network should use these
|
||||||
|
three selectors to access the fields in the packet structure that need
|
||||||
|
to be filled in with the data from the network. */
|
||||||
|
|
||||||
|
/* Selector to get the buffer from a packet. This buffer's size will be
|
||||||
|
equal to the receiveBufferSize you passed to OSCInitReceive(). */
|
||||||
|
char *OSCPacketBufferGetBuffer(OSCPacketBuffer p);
|
||||||
|
|
||||||
|
/* Selector to get a pointer to the int that's the size count for the
|
||||||
|
data currently in a packet. (Not the capacity of the packet's buffer,
|
||||||
|
but the size of the packet that's actually stored in the buffer.) */
|
||||||
|
int *OSCPacketBufferGetSize(OSCPacketBuffer);
|
||||||
|
|
||||||
|
/* Selector to get the client's network address from a packet. This buffer's
|
||||||
|
size will be equal to the clientAddrSize you passed to OSCInitReceive().
|
||||||
|
Note that the NetworkReturnAddressPtr type is full of "const"s, so your
|
||||||
|
code that fills in the return address will probably have to cast the return
|
||||||
|
value of this procedure to some non-const type to be able to write into it. */
|
||||||
|
NetworkReturnAddressPtr OSCPacketBufferGetClientAddr(OSCPacketBuffer p);
|
||||||
|
|
||||||
|
/* Returns the capacity of packet buffers (the receiveBufferSize you passed
|
||||||
|
to OSCInitReceive()). */
|
||||||
|
int OSCGetReceiveBufferSize(void);
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************
|
||||||
|
Dealing with OpenSoundControl packets and
|
||||||
|
making the messages take effect.
|
||||||
|
**************************************************/
|
||||||
|
|
||||||
|
/* Call this as soon as a packet comes in from the network.
|
||||||
|
It will take care of anything that has to happen immediately,
|
||||||
|
but put off as much as possible of the work of parsing the
|
||||||
|
packet. (This tries to be as fast as possible in case a
|
||||||
|
lot of packets come in.) */
|
||||||
|
void OSCAcceptPacket(OSCPacketBuffer packet);
|
||||||
|
|
||||||
|
/* Call this during an otherwise idle time. It goes through
|
||||||
|
everything that's sitting in the OSC scheduler waiting to
|
||||||
|
happen and does some of the work of parsing, pattern
|
||||||
|
matching, dispatching, etc., that will have to be done
|
||||||
|
at some point before the scheduled messages can take
|
||||||
|
effect.
|
||||||
|
|
||||||
|
The return value indicates whether there is more work of
|
||||||
|
this sort that could be done. (Each time you call this,
|
||||||
|
it does only a small unit of this kind of work. If it
|
||||||
|
returns TRUE and you still have time before the next thing
|
||||||
|
you have to do, call it again.) */
|
||||||
|
Boolean OSCBeProductiveWhileWaiting(void);
|
||||||
|
|
||||||
|
/* Call this whenever enough time has passed that you want to see which
|
||||||
|
messages are now ready and have them take effect. (For example, in a
|
||||||
|
synthesizer, you might call this once per synthesis frame, just before
|
||||||
|
synthesizing the audio for that frame.)
|
||||||
|
|
||||||
|
This procedure finds the earliest time tag of all the queued messages
|
||||||
|
and invokes *all* of the queued messages with that time tag. (OSC
|
||||||
|
guarantees that messages with the same tag take effect atomically.)
|
||||||
|
If there are more messages that are ready, but with a different time
|
||||||
|
tag, this procedure does not invoke them, but returns TRUE to indicate
|
||||||
|
that more messages are ready.
|
||||||
|
*/
|
||||||
|
Boolean OSCInvokeMessagesThatAreReady(OSCTimeTag now);
|
||||||
|
|
||||||
|
/* Same thing, but invokes all of the messages whose time has come. */
|
||||||
|
void OSCInvokeAllMessagesThatAreReady(OSCTimeTag now);
|
||||||
|
|
||||||
|
Boolean NetworkReceivePacket(OSCPacketBuffer packet);
|
||||||
|
|
||||||
|
Boolean NetworkStartUDPServer(OSCPacketBuffer packet, int port_id);
|
||||||
|
|
||||||
|
Boolean NetworkPacketWaiting(OSCPacketBuffer packet);
|
||||||
|
|
||||||
|
void GoMultiCast(const char *groupname);
|
||||||
|
|
||||||
|
int IsMultiCast( char *dst);
|
||||||
|
|
||||||
|
/**************************************************
|
||||||
|
How to use this stuff
|
||||||
|
**************************************************/
|
||||||
|
|
||||||
|
/* Here's a gross approximation of how your application will invoke the
|
||||||
|
procedures in this module:
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
OSCTimeTag now = CurrentTime();
|
||||||
|
do {
|
||||||
|
if (WeAreSoLateThatWeNeedToDelayOSCMessagesToAvoidACrisis()) break;
|
||||||
|
} while (OSCInvokeMessagesThatAreReady(now) == TRUE);
|
||||||
|
|
||||||
|
SynthesizeSomeSound();
|
||||||
|
if (NetworkPacketWaiting()) {
|
||||||
|
OSCPacketBuffer p = OSCAllocPacketBuffer();
|
||||||
|
if (!p) {
|
||||||
|
Bummer();
|
||||||
|
} else {
|
||||||
|
NetworkReceivePacket(p);
|
||||||
|
OSCAcceptPacket(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (TimeLeftBeforeWeHaveDoSomething()) {
|
||||||
|
if (!OSCBeProductiveWhileWaiting()) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
123
veejay-ng/libOSC/OSC-string-help.c
Normal file
123
veejay-ng/libOSC/OSC-string-help.c
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* OSC-string-help.c
|
||||||
|
Procedures that could be useful to programmers writing OSC methods that
|
||||||
|
take string arguments.
|
||||||
|
|
||||||
|
by Matt Wright, 3/19/98
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <libOSC/OSC-common.h> /* For Boolean */
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#define STRING_ALIGN_PAD 4
|
||||||
|
|
||||||
|
char *OSCDataAfterAlignedString(const char *string, const char *boundary, char **errorMsg) {
|
||||||
|
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if ((boundary - string) %4 != 0) {
|
||||||
|
fatal_error("DataAfterAlignedString: bad boundary\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; string[i] != '\0'; i++) {
|
||||||
|
if (string + i >= boundary) {
|
||||||
|
(*errorMsg) = "DataAfterAlignedString: Unreasonably long string";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Now string[i] is the first null character */
|
||||||
|
i++;
|
||||||
|
|
||||||
|
for (; (i % STRING_ALIGN_PAD) != 0; i++) {
|
||||||
|
if (string + i >= boundary) {
|
||||||
|
(*errorMsg) = "Unreasonably long string";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (string[i] != '\0') {
|
||||||
|
(*errorMsg) = "Incorrectly padded string.";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (char *) (string+i);
|
||||||
|
}
|
||||||
|
|
||||||
|
int OSCPaddedStrlen(const char *s) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; *s != '\0'; s++, i++) {
|
||||||
|
/* do nothing */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Now i is the length with no null bytes. We need 1-4 null bytes,
|
||||||
|
to make the total length a multiple of 4. So we add 4, as if
|
||||||
|
we need 4 null bytes, then & 0xfffffffc to round down to the nearest
|
||||||
|
multiple of 4. */
|
||||||
|
|
||||||
|
return (i + 4) & 0xfffffffc;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *OSCPaddedStrcpy(char *target, const char *source) {
|
||||||
|
while ( (*target++) = (*source++)) {
|
||||||
|
/* do nothing */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* That copied one null byte */
|
||||||
|
while (((int) target) % 4 != 0) {
|
||||||
|
*target = '\0';
|
||||||
|
target++;
|
||||||
|
}
|
||||||
|
return target;
|
||||||
|
}
|
||||||
|
|
||||||
|
Boolean OSCParseStringList(const char *result[], int *numStrings, int maxStrings,
|
||||||
|
const char *args, int numBytes) {
|
||||||
|
int numFound;
|
||||||
|
const char *p;
|
||||||
|
const char *boundary = args + numBytes;
|
||||||
|
char *errorMessage;
|
||||||
|
|
||||||
|
p = args;
|
||||||
|
|
||||||
|
for (numFound = 0; numFound < maxStrings; ++numFound) {
|
||||||
|
if (p == boundary) {
|
||||||
|
*numStrings = numFound;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
result[numFound] = p;
|
||||||
|
p = OSCDataAfterAlignedString(p, boundary, &errorMessage);
|
||||||
|
if (p == 0) return FALSE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
70
veejay-ng/libOSC/OSC-string-help.h
Normal file
70
veejay-ng/libOSC/OSC-string-help.h
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* OSC-string-help.h
|
||||||
|
Procedures that could be useful to programmers writing OSC methods that
|
||||||
|
take string arguments.
|
||||||
|
|
||||||
|
by Matt Wright, 3/19/98
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Use this to deal with OSC null-padded 4 byte-aligned strings
|
||||||
|
|
||||||
|
The argument is a block of data beginning with a string. The string
|
||||||
|
has (presumably) been padded with extra null characters so that the
|
||||||
|
overall length is a multiple of 4 bytes. Return a pointer to the next
|
||||||
|
byte after the null byte(s). The boundary argument points to the
|
||||||
|
character after the last valid character in the buffer---if the string
|
||||||
|
hasn't ended by there, something's wrong.
|
||||||
|
|
||||||
|
If the data looks wrong, return 0, and set *errorMsg */
|
||||||
|
|
||||||
|
char *OSCDataAfterAlignedString(const char *string, const char *boundary, char **errorMsg);
|
||||||
|
|
||||||
|
|
||||||
|
/* Given a normal C-style string with a single padding byte, return the
|
||||||
|
length of the string including the necessary 1-4 padding bytes.
|
||||||
|
(Basically strlen()+1 rounded up to the next multiple of 4.) */
|
||||||
|
int OSCPaddedStrlen(const char *s);
|
||||||
|
|
||||||
|
/* Copy a given C-style string into the given destination, including the
|
||||||
|
requisite padding byte(s). Unlike strcpy(), this returns a pointer to
|
||||||
|
the next character after the copied string's null bytes, like
|
||||||
|
what OSCDataAfterAlignedString() returns. */
|
||||||
|
char *OSCPaddedStrcpy(char *target, const char *source);
|
||||||
|
|
||||||
|
|
||||||
|
/* Given an args pointer that should be nothing but a list of strings, fill
|
||||||
|
result[] with pointers to the beginnings of each string, and set
|
||||||
|
*numStrings to be the number of strings found. maxStrings gives the size
|
||||||
|
of the result array. Return FALSE if any strings are malformatted or if
|
||||||
|
there are more than maxStrings many strings. */
|
||||||
|
|
||||||
|
Boolean OSCParseStringList(const char *result[], int *numStrings, int maxStrings,
|
||||||
|
const char *args, int numBytes);
|
||||||
56
veejay-ng/libOSC/OSC-struct.h
Normal file
56
veejay-ng/libOSC/OSC-struct.h
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
#include <netinet/in.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#ifndef OSCH
|
||||||
|
#define OSCH
|
||||||
|
#ifndef TRUE
|
||||||
|
typedef int Boolean;
|
||||||
|
#define TRUE 1
|
||||||
|
#define FALSE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Fixed byte width types */
|
||||||
|
typedef int int4; /* 4 byte int */
|
||||||
|
typedef struct NetworkReturnAddressStruct_t {
|
||||||
|
struct sockaddr_in cl_addr; /* client information */
|
||||||
|
struct sockaddr_in my_addr; /* us */
|
||||||
|
int clilen;
|
||||||
|
int sockfd;
|
||||||
|
fd_set readfds;
|
||||||
|
struct timeval tv;
|
||||||
|
int fdmax;
|
||||||
|
} NetworkReturnAddressStruct;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct OSCPacketBuffer_struct {
|
||||||
|
char *buf; /* Contents of network packet go here */
|
||||||
|
int n; /* Overall size of packet */
|
||||||
|
int refcount; /* # queued things using memory from this buffer */
|
||||||
|
struct OSCPacketBuffer_struct *nextFree; /* For linked list of free packets */
|
||||||
|
|
||||||
|
Boolean returnAddrOK; /* Because returnAddr points to memory we need to
|
||||||
|
store future return addresses, we set this
|
||||||
|
field to FALSE in situations where a packet
|
||||||
|
buffer "has no return address" instead of
|
||||||
|
setting returnAddr to 0 */
|
||||||
|
|
||||||
|
void *returnAddr; /* Addr of client this packet is from */
|
||||||
|
/* This was of type NetworkReturnAddressPtr, but the constness
|
||||||
|
was making it impossible for me to initialize it. There's
|
||||||
|
probably a better way that I don't understand. */
|
||||||
|
|
||||||
|
} OSCPacketBuffer;
|
||||||
|
|
||||||
|
struct OSCReceiveMemoryTuner {
|
||||||
|
void *(*InitTimeMemoryAllocator)(int numBytes);
|
||||||
|
void *(*RealTimeMemoryAllocator)(int numBytes);
|
||||||
|
int receiveBufferSize;
|
||||||
|
int numReceiveBuffers;
|
||||||
|
int numQueuedObjects;
|
||||||
|
int numCallbackListNodes;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
174
veejay-ng/libOSC/OSC-timetag.c
Normal file
174
veejay-ng/libOSC/OSC-timetag.c
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
OSC_timeTag.c: library for manipulating OSC time tags
|
||||||
|
Matt Wright, 5/29/97
|
||||||
|
|
||||||
|
Version 0.2 (9/11/98): cleaned up so no explicit type names in the .c file.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <libOSC/OSC-timetag.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
|
#ifdef HAS8BYTEINT
|
||||||
|
#define TWO_TO_THE_32_FLOAT 4294967296.0f
|
||||||
|
|
||||||
|
OSCTimeTag OSCTT_Immediately(void) {
|
||||||
|
return (OSCTimeTag) 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCTimeTag OSCTT_BiggestPossibleTimeTag(void) {
|
||||||
|
return (OSCTimeTag) 0xffffffffffffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCTimeTag OSCTT_PlusSeconds(OSCTimeTag original, float secondsOffset) {
|
||||||
|
int8 offset = (int8) (secondsOffset * TWO_TO_THE_32_FLOAT);
|
||||||
|
|
||||||
|
/* printf("* OSCTT_PlusSeconds %llx plus %f seconds (i.e., %lld offset) is %llx\n", original,
|
||||||
|
secondsOffset, offset, original + offset); */
|
||||||
|
|
||||||
|
return original + offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
int OSCTT_Compare(OSCTimeTag left, OSCTimeTag right) {
|
||||||
|
#if 0
|
||||||
|
printf("***** OSCTT_Compare(%llx, %llx): %d\n", left, right,
|
||||||
|
(left<right) ? -1 : ((left == right) ? 0 : 1));
|
||||||
|
#endif
|
||||||
|
if (left < right) {
|
||||||
|
return -1;
|
||||||
|
} else if (left == right) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __sgi
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
|
#define SECONDS_FROM_1900_to_1970 2208988800 /* 17 leap years */
|
||||||
|
#define TWO_TO_THE_32_OVER_ONE_MILLION 4295
|
||||||
|
|
||||||
|
|
||||||
|
OSCTimeTag OSCTT_CurrentTime(void) {
|
||||||
|
uint8 result;
|
||||||
|
uint4 usecOffset;
|
||||||
|
struct timeval tv;
|
||||||
|
struct timezone tz;
|
||||||
|
|
||||||
|
BSDgettimeofday(&tv, &tz);
|
||||||
|
|
||||||
|
/* First get the seconds right */
|
||||||
|
result = (unsigned) SECONDS_FROM_1900_to_1970 +
|
||||||
|
(unsigned) tv.tv_sec -
|
||||||
|
(unsigned) 60 * tz.tz_minuteswest +
|
||||||
|
(unsigned) (tz.tz_dsttime ? 3600 : 0);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* No timezone, no DST version ... */
|
||||||
|
result = (unsigned) SECONDS_FROM_1900_to_1970 +
|
||||||
|
(unsigned) tv.tv_sec;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* make seconds the high-order 32 bits */
|
||||||
|
result = result << 32;
|
||||||
|
|
||||||
|
/* Now get the fractional part. */
|
||||||
|
usecOffset = (unsigned) tv.tv_usec * (unsigned) TWO_TO_THE_32_OVER_ONE_MILLION;
|
||||||
|
/* printf("** %ld microsec is offset %x\n", tv.tv_usec, usecOffset); */
|
||||||
|
|
||||||
|
result += usecOffset;
|
||||||
|
|
||||||
|
/* printf("* OSCTT_CurrentTime is %llx\n", result); */
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* __sgi */
|
||||||
|
|
||||||
|
/* Instead of asking your operating system what time it is, it might be
|
||||||
|
clever to find out the current time at the instant your application
|
||||||
|
starts audio processing, and then keep track of the number of samples
|
||||||
|
output to know how much time has passed. */
|
||||||
|
|
||||||
|
/* Loser version for systems that have no ability to tell the current time: */
|
||||||
|
OSCTimeTag OSCTT_CurrentTime(void) {
|
||||||
|
return (OSCTimeTag) 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* __sgi */
|
||||||
|
|
||||||
|
|
||||||
|
#else /* Not HAS8BYTEINT */
|
||||||
|
|
||||||
|
OSCTimeTag OSCTT_CurrentTime(void) {
|
||||||
|
OSCTimeTag result;
|
||||||
|
result.seconds = 0;
|
||||||
|
result.fraction = 1;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCTimeTag OSCTT_BiggestPossibleTimeTag(void) {
|
||||||
|
OSCTimeTag result;
|
||||||
|
result.seconds = 0xffffffff;
|
||||||
|
result.fraction = 0xffffffff;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCTimeTag OSCTT_Immediately(void) {
|
||||||
|
OSCTimeTag result;
|
||||||
|
result.seconds = 0;
|
||||||
|
result.fraction = 1;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSCTimeTag OSCTT_PlusSeconds(OSCTimeTag original, float secondsOffset) {
|
||||||
|
OSCTimeTag result;
|
||||||
|
result.seconds = 0;
|
||||||
|
result.fraction = 1;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
int OSCTT_Compare(OSCTimeTag left, OSCTimeTag right) {
|
||||||
|
/* Untested! */
|
||||||
|
int highResult = left.seconds - right.seconds;
|
||||||
|
|
||||||
|
if (highResult != 0) return highResult;
|
||||||
|
|
||||||
|
return left.fraction - right.fraction;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* HAS8BYTEINT */
|
||||||
|
|
||||||
91
veejay-ng/libOSC/OSC-timetag.h
Normal file
91
veejay-ng/libOSC/OSC-timetag.h
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
/*
|
||||||
|
Copyright <20> 1998. The Regents of the University of California (Regents).
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Written by Matt Wright, The Center for New Music and Audio Technologies,
|
||||||
|
University of California, Berkeley.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and distribute modified versions
|
||||||
|
of this software and its documentation without fee and without a signed
|
||||||
|
licensing agreement, is hereby granted, provided that the above copyright
|
||||||
|
notice, this paragraph and the following two paragraphs appear in all copies,
|
||||||
|
modifications, and distributions.
|
||||||
|
|
||||||
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
|
||||||
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
|
||||||
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
|
The OpenSound Control WWW page is
|
||||||
|
http://www.cnmat.berkeley.edu/OpenSoundControl
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
OSC_timeTag.h: library for manipulating OSC time tags
|
||||||
|
Matt Wright, 5/29/97
|
||||||
|
|
||||||
|
Time tags in OSC have the same format as in NTP: 64 bit fixed point, with the
|
||||||
|
top 32 bits giving number of seconds sinve midnight 1/1/1900 and the bottom
|
||||||
|
32 bits giving fractional parts of a second. We represent this by an 8-byte
|
||||||
|
unsigned long if possible, or else a struct.
|
||||||
|
|
||||||
|
NB: On many architectures with 8-byte ints, it's illegal (like maybe a bus error)
|
||||||
|
to dereference a pointer to an 8 byte int that's not 8-byte aligned.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OSC_TIMETAG
|
||||||
|
#define OSC_TIMETAG
|
||||||
|
|
||||||
|
#ifdef __sgi
|
||||||
|
#define HAS8BYTEINT
|
||||||
|
/* You may have to change this typedef if there's some other
|
||||||
|
way to specify 8 byte ints on your system */
|
||||||
|
typedef long long int8;
|
||||||
|
typedef unsigned long long uint8;
|
||||||
|
typedef unsigned long uint4;
|
||||||
|
#else
|
||||||
|
/* You may have to redefine this typedef if ints on your system
|
||||||
|
aren't 4 bytes. */
|
||||||
|
typedef unsigned int uint4;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAS8BYTEINT
|
||||||
|
typedef uint8 OSCTimeTag;
|
||||||
|
#else
|
||||||
|
typedef struct {
|
||||||
|
uint4 seconds;
|
||||||
|
uint4 fraction;
|
||||||
|
} OSCTimeTag;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Return a time tag representing the current time (as of when this
|
||||||
|
procedure is called). */
|
||||||
|
OSCTimeTag OSCTT_CurrentTime(void);
|
||||||
|
|
||||||
|
/* Return the time tag 0x0000000000000001, indicating to the receiving device
|
||||||
|
that it should process the message immediately. */
|
||||||
|
OSCTimeTag OSCTT_Immediately(void);
|
||||||
|
|
||||||
|
/* Return the time tag 0xffffffffffffffff, a time so far in the future that
|
||||||
|
it's effectively infinity. */
|
||||||
|
OSCTimeTag OSCTT_BiggestPossibleTimeTag(void);
|
||||||
|
|
||||||
|
/* Given a time tag and a number of seconds to add to the time tag, return
|
||||||
|
the new time tag */
|
||||||
|
OSCTimeTag OSCTT_PlusSeconds(OSCTimeTag original, float secondsOffset);
|
||||||
|
|
||||||
|
/* Compare two time tags. Return negative if first is < second, 0 if
|
||||||
|
they're equal, and positive if first > second. */
|
||||||
|
int OSCTT_Compare(OSCTimeTag left, OSCTimeTag right);
|
||||||
|
|
||||||
|
#endif /* OSC_TIMETAG */
|
||||||
26
veejay-ng/libOSC/libosc.h
Normal file
26
veejay-ng/libOSC/libosc.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#ifndef _LIBOSC_H_INCLUDED
|
||||||
|
#define _LIBOSC_H_INCLUDED
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <libOSC/OSC-common.h>
|
||||||
|
#include <libOSC/OSC-timetag.h>
|
||||||
|
#include <libOSC/OSC-address-space.h>
|
||||||
|
#include <libOSC/OSC-dispatch.h>
|
||||||
|
#include <libOSC/OSC-receive.h>
|
||||||
|
#include <libOSC/OSC-callbacklist.h>
|
||||||
|
#include <libOSC/OSC-drop.h>
|
||||||
|
#include <libOSC/OSC-internal-messages.h>
|
||||||
|
#include <libOSC/OSC-pattern-match.h>
|
||||||
|
#include <libOSC/OSC-priority-queue.h>
|
||||||
|
#include <libOSC/OSC-string-help.h>
|
||||||
|
#include <libOSC/NetworkReturnAddress.h>
|
||||||
|
#include <libOSC/NetworkUDP.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
11
veejay-ng/libel/Makefile.am
Normal file
11
veejay-ng/libel/Makefile.am
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# Makefile for veejay
|
||||||
|
|
||||||
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
||||||
|
INCLUDES = -I$(top_srcdir) -I$(includedir) -I$(top_srcdir)/vjmem \
|
||||||
|
-I$(top_srcdir)/vjmsg \
|
||||||
|
$(MJPEGTOOLS_CFLAGS) ${FFMPEG_CFLAGS}
|
||||||
|
|
||||||
|
VJEL_LIB_FILE = libel.la
|
||||||
|
noinst_LTLIBRARIES = $(VJEL_LIB_FILE)
|
||||||
|
libel_la_SOURCES = vj-mmap.c elcache.c avilib.c lav_io.c vj-dv.c rawdv.c vj-avcodec.c vj-el.c
|
||||||
516
veejay-ng/libel/Makefile.in
Normal file
516
veejay-ng/libel/Makefile.in
Normal file
@@ -0,0 +1,516 @@
|
|||||||
|
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
# Makefile for veejay
|
||||||
|
|
||||||
|
SOURCES = $(libel_la_SOURCES)
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
target_triplet = @target@
|
||||||
|
subdir = libel
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||||
|
libel_la_LIBADD =
|
||||||
|
am_libel_la_OBJECTS = vj-mmap.lo elcache.lo avilib.lo lav_io.lo \
|
||||||
|
vj-dv.lo rawdv.lo vj-avcodec.lo vj-el.lo
|
||||||
|
libel_la_OBJECTS = $(am_libel_la_OBJECTS)
|
||||||
|
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(libel_la_SOURCES)
|
||||||
|
DIST_SOURCES = $(libel_la_SOURCES)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
ALTIVEC_CFLAGS = @ALTIVEC_CFLAGS@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AS = @AS@
|
||||||
|
ASFLAGS = @ASFLAGS@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCAS = @CCAS@
|
||||||
|
CCASFLAGS = @CCASFLAGS@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
FFLAGS = @FFLAGS@
|
||||||
|
FFMPEG_AVCODEC_CFLAGS = @FFMPEG_AVCODEC_CFLAGS@
|
||||||
|
FFMPEG_AVCODEC_LIBS = @FFMPEG_AVCODEC_LIBS@
|
||||||
|
FFMPEG_AVFORMAT_CFLAGS = @FFMPEG_AVFORMAT_CFLAGS@
|
||||||
|
FFMPEG_AVFORMAT_LIBS = @FFMPEG_AVFORMAT_LIBS@
|
||||||
|
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||||
|
GLIB_CONFIG = @GLIB_CONFIG@
|
||||||
|
GLIB_LIBS = @GLIB_LIBS@
|
||||||
|
GL_CFLAGS = @GL_CFLAGS@
|
||||||
|
GL_LIBS = @GL_LIBS@
|
||||||
|
HAVE_ALTIVEC_FALSE = @HAVE_ALTIVEC_FALSE@
|
||||||
|
HAVE_ALTIVEC_TRUE = @HAVE_ALTIVEC_TRUE@
|
||||||
|
HAVE_ASM_MMX2_FALSE = @HAVE_ASM_MMX2_FALSE@
|
||||||
|
HAVE_ASM_MMX2_TRUE = @HAVE_ASM_MMX2_TRUE@
|
||||||
|
HAVE_ASM_MMX_FALSE = @HAVE_ASM_MMX_FALSE@
|
||||||
|
HAVE_ASM_MMX_TRUE = @HAVE_ASM_MMX_TRUE@
|
||||||
|
HAVE_ASM_NASM_FALSE = @HAVE_ASM_NASM_FALSE@
|
||||||
|
HAVE_ASM_NASM_TRUE = @HAVE_ASM_NASM_TRUE@
|
||||||
|
HAVE_ASM_SSE2_FALSE = @HAVE_ASM_SSE2_FALSE@
|
||||||
|
HAVE_ASM_SSE2_TRUE = @HAVE_ASM_SSE2_TRUE@
|
||||||
|
HAVE_ASM_SSE_FALSE = @HAVE_ASM_SSE_FALSE@
|
||||||
|
HAVE_ASM_SSE_TRUE = @HAVE_ASM_SSE_TRUE@
|
||||||
|
HAVE_DL_DLOPEN_FALSE = @HAVE_DL_DLOPEN_FALSE@
|
||||||
|
HAVE_DL_DLOPEN_TRUE = @HAVE_DL_DLOPEN_TRUE@
|
||||||
|
HAVE_JACK_FALSE = @HAVE_JACK_FALSE@
|
||||||
|
HAVE_JACK_TRUE = @HAVE_JACK_TRUE@
|
||||||
|
HAVE_MMX2_FALSE = @HAVE_MMX2_FALSE@
|
||||||
|
HAVE_MMX2_TRUE = @HAVE_MMX2_TRUE@
|
||||||
|
HAVE_MMX_FALSE = @HAVE_MMX_FALSE@
|
||||||
|
HAVE_MMX_TRUE = @HAVE_MMX_TRUE@
|
||||||
|
HAVE_PPCCPU_FALSE = @HAVE_PPCCPU_FALSE@
|
||||||
|
HAVE_PPCCPU_TRUE = @HAVE_PPCCPU_TRUE@
|
||||||
|
HAVE_SDL_FALSE = @HAVE_SDL_FALSE@
|
||||||
|
HAVE_SDL_TRUE = @HAVE_SDL_TRUE@
|
||||||
|
HAVE_SSE2_FALSE = @HAVE_SSE2_FALSE@
|
||||||
|
HAVE_SSE2_TRUE = @HAVE_SSE2_TRUE@
|
||||||
|
HAVE_SSE_FALSE = @HAVE_SSE_FALSE@
|
||||||
|
HAVE_SSE_TRUE = @HAVE_SSE_TRUE@
|
||||||
|
HAVE_V4L_FALSE = @HAVE_V4L_FALSE@
|
||||||
|
HAVE_V4L_TRUE = @HAVE_V4L_TRUE@
|
||||||
|
HAVE_X86CPU_FALSE = @HAVE_X86CPU_FALSE@
|
||||||
|
HAVE_X86CPU_TRUE = @HAVE_X86CPU_TRUE@
|
||||||
|
HAVE_XML2_FALSE = @HAVE_XML2_FALSE@
|
||||||
|
HAVE_XML2_TRUE = @HAVE_XML2_TRUE@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBDV_CFLAGS = @LIBDV_CFLAGS@
|
||||||
|
LIBDV_LIBS = @LIBDV_LIBS@
|
||||||
|
LIBGETOPT_LIB = @LIBGETOPT_LIB@
|
||||||
|
LIBM_LIBS = @LIBM_LIBS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
LT_AGE = @LT_AGE@
|
||||||
|
LT_CURRENT = @LT_CURRENT@
|
||||||
|
LT_RELEASE = @LT_RELEASE@
|
||||||
|
LT_REVISION = @LT_REVISION@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MJPEGTOOLS_CFLAGS = @MJPEGTOOLS_CFLAGS@
|
||||||
|
MJPEGTOOLS_LIBS = @MJPEGTOOLS_LIBS@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PROGRAM_NOPIC = @PROGRAM_NOPIC@
|
||||||
|
PTHREAD_LIBS = @PTHREAD_LIBS@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SDL_CFLAGS = @SDL_CFLAGS@
|
||||||
|
SDL_CONFIG = @SDL_CONFIG@
|
||||||
|
SDL_LIBS = @SDL_LIBS@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
SUPPORT_READ_DV2_FALSE = @SUPPORT_READ_DV2_FALSE@
|
||||||
|
SUPPORT_READ_DV2_TRUE = @SUPPORT_READ_DV2_TRUE@
|
||||||
|
V4LCONF_LIBS = @V4LCONF_LIBS@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
XML2_CONFIG = @XML2_CONFIG@
|
||||||
|
XML_CPPFLAGS = @XML_CPPFLAGS@
|
||||||
|
XML_LIBS = @XML_LIBS@
|
||||||
|
ac_ct_AR = @ac_ct_AR@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||||
|
ac_ct_STRIP = @ac_ct_STRIP@
|
||||||
|
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target = @target@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
target_cpu = @target_cpu@
|
||||||
|
target_os = @target_os@
|
||||||
|
target_vendor = @target_vendor@
|
||||||
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
INCLUDES = -I$(top_srcdir) -I$(includedir) -I$(top_srcdir)/vjmem \
|
||||||
|
-I$(top_srcdir)/vjmsg \
|
||||||
|
$(MJPEGTOOLS_CFLAGS) ${FFMPEG_CFLAGS}
|
||||||
|
|
||||||
|
VJEL_LIB_FILE = libel.la
|
||||||
|
noinst_LTLIBRARIES = $(VJEL_LIB_FILE)
|
||||||
|
libel_la_SOURCES = vj-mmap.c elcache.c avilib.c lav_io.c vj-dv.c rawdv.c vj-avcodec.c vj-el.c
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .c .lo .o .obj
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libel/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu libel/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
clean-noinstLTLIBRARIES:
|
||||||
|
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||||
|
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
|
rm -f "$${dir}/so_locations"; \
|
||||||
|
done
|
||||||
|
libel.la: $(libel_la_OBJECTS) $(libel_la_DEPENDENCIES)
|
||||||
|
$(LINK) $(libel_la_LDFLAGS) $(libel_la_OBJECTS) $(libel_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avilib.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elcache.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lav_io.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rawdv.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vj-avcodec.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vj-dv.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vj-el.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vj-mmap.Plo@am__quote@
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||||
|
|
||||||
|
.c.obj:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
|
uninstall-info-am:
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$tags $$unique; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$tags $$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(LTLIBRARIES)
|
||||||
|
installdirs:
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
|
||||||
|
mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||||
|
clean-libtool clean-noinstLTLIBRARIES ctags distclean \
|
||||||
|
distclean-compile distclean-generic distclean-libtool \
|
||||||
|
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am install-man \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
|
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||||
|
pdf pdf-am ps ps-am tags uninstall uninstall-am \
|
||||||
|
uninstall-info-am
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
1299
veejay-ng/libel/avilib.c
Normal file
1299
veejay-ng/libel/avilib.c
Normal file
File diff suppressed because it is too large
Load Diff
186
veejay-ng/libel/avilib.h
Normal file
186
veejay-ng/libel/avilib.h
Normal file
@@ -0,0 +1,186 @@
|
|||||||
|
/*
|
||||||
|
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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVILIB_H
|
||||||
|
#define AVILIB_H
|
||||||
|
|
||||||
|
#include <mjpegtools/mjpeg_types.h>
|
||||||
|
#include <libel/vj-mmap.h>
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
long pos;
|
||||||
|
long len;
|
||||||
|
} video_index_entry;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
long pos;
|
||||||
|
long len;
|
||||||
|
long tot;
|
||||||
|
} audio_index_entry;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
long fdes; /* File descriptor of AVI file */
|
||||||
|
long mode; /* 0 for reading, 1 for writing */
|
||||||
|
|
||||||
|
long width; /* Width of a video frame */
|
||||||
|
long height; /* Height of a video frame */
|
||||||
|
double fps; /* Frames per second */
|
||||||
|
char compressor[8]; /* Type of compressor, 4 bytes + padding for 0 byte */
|
||||||
|
int ffmpeg_codec_id; /* Codec ID to avoid strcmp for compressor */
|
||||||
|
long video_strn; /* Video stream number */
|
||||||
|
long video_frames; /* Number of video frames */
|
||||||
|
uint8_t video_tag[4]; /* Tag of video data */
|
||||||
|
long video_pos; /* Number of next frame to be read
|
||||||
|
(if index present) */
|
||||||
|
|
||||||
|
long a_fmt; /* Audio format, see #defines below */
|
||||||
|
long a_chans; /* Audio channels, 0 for no audio */
|
||||||
|
long a_rate; /* Rate in Hz */
|
||||||
|
long a_bits; /* bits per audio clip */
|
||||||
|
long audio_strn; /* Audio stream number */
|
||||||
|
long audio_bytes; /* Total number of bytes of audio data */
|
||||||
|
long audio_chunks; /* Chunks of audio data in the file */
|
||||||
|
uint8_t audio_tag[4]; /* Tag of audio data */
|
||||||
|
long audio_posc; /* Audio position: chunk */
|
||||||
|
long audio_posb; /* Audio position: byte within chunk */
|
||||||
|
|
||||||
|
long pos; /* position in file */
|
||||||
|
long n_idx; /* number of index entries actually filled */
|
||||||
|
long max_idx; /* number of index entries actually allocated */
|
||||||
|
uint8_t (*idx)[16]; /* index entries (AVI idx1 tag) */
|
||||||
|
video_index_entry * video_index;
|
||||||
|
audio_index_entry * audio_index;
|
||||||
|
long last_pos; /* Position of last frame written */
|
||||||
|
long last_len; /* Length of last frame written */
|
||||||
|
int must_use_index; /* Flag if frames are duplicated */
|
||||||
|
long movi_start;
|
||||||
|
mmap_region_t *mmap_region;
|
||||||
|
off_t mmap_offset;
|
||||||
|
size_t mmap_size;
|
||||||
|
} avi_t;
|
||||||
|
|
||||||
|
#define AVI_MODE_WRITE 0
|
||||||
|
#define AVI_MODE_READ 1
|
||||||
|
|
||||||
|
/* The error codes delivered by avi_open_input_file */
|
||||||
|
|
||||||
|
#define AVI_ERR_SIZELIM 1 /* The write of the data would exceed
|
||||||
|
the maximum size of the AVI file.
|
||||||
|
This is more a warning than an error
|
||||||
|
since the file may be closed safely */
|
||||||
|
|
||||||
|
#define AVI_ERR_OPEN 2 /* Error opening the AVI file - wrong path
|
||||||
|
name or file nor readable/writable */
|
||||||
|
|
||||||
|
#define AVI_ERR_READ 3 /* Error reading from AVI File */
|
||||||
|
|
||||||
|
#define AVI_ERR_WRITE 4 /* Error writing to AVI File,
|
||||||
|
disk full ??? */
|
||||||
|
|
||||||
|
#define AVI_ERR_WRITE_INDEX 5 /* Could not write index to AVI file
|
||||||
|
during close, file may still be
|
||||||
|
usable */
|
||||||
|
|
||||||
|
#define AVI_ERR_CLOSE 6 /* Could not write header to AVI file
|
||||||
|
or not truncate the file during close,
|
||||||
|
file is most probably corrupted */
|
||||||
|
|
||||||
|
#define AVI_ERR_NOT_PERM 7 /* Operation not permitted:
|
||||||
|
trying to read from a file open
|
||||||
|
for writing or vice versa */
|
||||||
|
|
||||||
|
#define AVI_ERR_NO_MEM 8 /* malloc failed */
|
||||||
|
|
||||||
|
#define AVI_ERR_NO_AVI 9 /* Not an AVI file */
|
||||||
|
|
||||||
|
#define AVI_ERR_NO_HDRL 10 /* AVI file has no has no header list,
|
||||||
|
corrupted ??? */
|
||||||
|
|
||||||
|
#define AVI_ERR_NO_MOVI 11 /* AVI file has no has no MOVI list,
|
||||||
|
corrupted ??? */
|
||||||
|
|
||||||
|
#define AVI_ERR_NO_VIDS 12 /* AVI file contains no video data */
|
||||||
|
|
||||||
|
#define AVI_ERR_NO_IDX 13 /* The file has been opened with
|
||||||
|
getIndex==0, but an operation has been
|
||||||
|
performed that needs an index */
|
||||||
|
|
||||||
|
#define AVI_ERR_EMPTY 15 /* AVI file is empty (only header) */
|
||||||
|
|
||||||
|
/* Possible Audio formats */
|
||||||
|
|
||||||
|
#define WAVE_FORMAT_UNKNOWN (0x0000)
|
||||||
|
#define WAVE_FORMAT_PCM (0x0001)
|
||||||
|
#define WAVE_FORMAT_ADPCM (0x0002)
|
||||||
|
#define WAVE_FORMAT_IBM_CVSD (0x0005)
|
||||||
|
#define WAVE_FORMAT_ALAW (0x0006)
|
||||||
|
#define WAVE_FORMAT_MULAW (0x0007)
|
||||||
|
#define WAVE_FORMAT_OKI_ADPCM (0x0010)
|
||||||
|
#define WAVE_FORMAT_DVI_ADPCM (0x0011)
|
||||||
|
#define WAVE_FORMAT_DIGISTD (0x0015)
|
||||||
|
#define WAVE_FORMAT_DIGIFIX (0x0016)
|
||||||
|
#define WAVE_FORMAT_YAMAHA_ADPCM (0x0020)
|
||||||
|
#define WAVE_FORMAT_DSP_TRUESPEECH (0x0022)
|
||||||
|
#define WAVE_FORMAT_GSM610 (0x0031)
|
||||||
|
#define IBM_FORMAT_MULAW (0x0101)
|
||||||
|
#define IBM_FORMAT_ALAW (0x0102)
|
||||||
|
#define IBM_FORMAT_ADPCM (0x0103)
|
||||||
|
|
||||||
|
|
||||||
|
avi_t* AVI_open_output_file(char * filename);
|
||||||
|
void AVI_set_video(avi_t *AVI, int width, int height, double fps, const char *compressor);
|
||||||
|
void AVI_set_audio(avi_t *AVI, int channels, long rate, int bits, int format);
|
||||||
|
int AVI_write_frame(avi_t *AVI, uint8_t *data, long bytes);
|
||||||
|
int AVI_dup_frame(avi_t *AVI);
|
||||||
|
int AVI_write_audio(avi_t *AVI, uint8_t *data, long bytes);
|
||||||
|
long AVI_bytes_remain(avi_t *AVI);
|
||||||
|
int AVI_close(avi_t *AVI);
|
||||||
|
int AVI_fileno(avi_t *AVI);
|
||||||
|
|
||||||
|
avi_t *AVI_open_input_file(char *filename, int getIndex, int mmap_size);
|
||||||
|
|
||||||
|
long AVI_video_frames(avi_t *AVI);
|
||||||
|
int AVI_video_width(avi_t *AVI);
|
||||||
|
int AVI_video_height(avi_t *AVI);
|
||||||
|
double AVI_frame_rate(avi_t *AVI);
|
||||||
|
char* AVI_video_compressor(avi_t *AVI);
|
||||||
|
int AVI_video_compressor_type(avi_t *AVI);
|
||||||
|
|
||||||
|
int AVI_audio_channels(avi_t *AVI);
|
||||||
|
int AVI_audio_bits(avi_t *AVI);
|
||||||
|
int AVI_audio_format(avi_t *AVI);
|
||||||
|
long AVI_audio_rate(avi_t *AVI);
|
||||||
|
long AVI_audio_bytes(avi_t *AVI);
|
||||||
|
|
||||||
|
long AVI_frame_size(avi_t *AVI, long frame);
|
||||||
|
int AVI_seek_start(avi_t *AVI);
|
||||||
|
int AVI_set_video_position(avi_t *AVI, long frame);
|
||||||
|
long AVI_read_frame(avi_t *AVI, uint8_t *vidbuf);
|
||||||
|
int AVI_set_audio_position(avi_t *AVI, long byte);
|
||||||
|
long AVI_read_audio(avi_t *AVI, uint8_t *audbuf, long bytes);
|
||||||
|
|
||||||
|
int AVI_read_data(avi_t *AVI, uint8_t *vidbuf, long max_vidbuf,
|
||||||
|
uint8_t *audbuf, long max_audbuf,
|
||||||
|
long *len);
|
||||||
|
|
||||||
|
void AVI_print_error(const char *str);
|
||||||
|
const char *AVI_strerror(void);
|
||||||
|
const char *AVI_syserror(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
267
veejay-ng/libel/elcache.c
Normal file
267
veejay-ng/libel/elcache.c
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2002-2006 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Cache frames from file to memory
|
||||||
|
*/
|
||||||
|
/** \defgroup elcache Efficient Frame Caching
|
||||||
|
*
|
||||||
|
* Veejay stores each retrieved frame (from the EDL) in a temporary cache.
|
||||||
|
* The cache has at most N slots, in each slot an image buffer is placed
|
||||||
|
* together with a minimum of bookkeeping (frame number and decoder ID)
|
||||||
|
*
|
||||||
|
* The caching mechanism will trash when loading a new series of frames.
|
||||||
|
* As unknown frames are loaded, old frames will be discarded.
|
||||||
|
* A very long sample will thus beat the caching mechanism if the sample only
|
||||||
|
* loops forward.
|
||||||
|
*
|
||||||
|
* This cache does *not* read-ahead, instead it keeps already played frames for repated usage.
|
||||||
|
* The caching mechanism is intended for sample playback usage. It is
|
||||||
|
* only used when looping samples that typically access compressed image data repeatedly.
|
||||||
|
* The price for such a situation is the time needed to memory-to-memory copy the image buffer.
|
||||||
|
*
|
||||||
|
* Veejay estimates the number of slots it can claim by taking a percentage
|
||||||
|
* of the available system memory.
|
||||||
|
* The caching mechanism is disabled by default.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <libvjmem/vjmem.h>
|
||||||
|
#include <libvjmsg/vj-common.h>
|
||||||
|
#include <libel/elcache.h>
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
#include <assert.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//! \typedef cache_slot_t Cache Slot for holding an image buffer
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int size;
|
||||||
|
int fmt;
|
||||||
|
long num;
|
||||||
|
void *buffer;
|
||||||
|
} cache_slot_t;
|
||||||
|
|
||||||
|
//! \typedef cache_t Cache Container for holding N cache slots
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
cache_slot_t **cache;
|
||||||
|
int len;
|
||||||
|
long *index;
|
||||||
|
} cache_t;
|
||||||
|
|
||||||
|
//! Find an available slot
|
||||||
|
/**
|
||||||
|
\param v Cache
|
||||||
|
\return Index
|
||||||
|
*/
|
||||||
|
static int cache_free_slot(cache_t *v)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for( i = 0; i < v->len; i ++ )
|
||||||
|
if( v->index[i] == -1 ) return i;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static long total_mem_used_ = 0;
|
||||||
|
|
||||||
|
//! Push an image buffer to a slot
|
||||||
|
/**
|
||||||
|
\param v Cache
|
||||||
|
\param free_slot Cache Index
|
||||||
|
\param linbuf Image buffer
|
||||||
|
\param frame_num Frame Number
|
||||||
|
\param buf_len Length of Image Buffer
|
||||||
|
\param decoder_id Decoder ID
|
||||||
|
*/
|
||||||
|
static void cache_claim_slot(cache_t *v, int free_slot, uint8_t *linbuf, long frame_num,int buf_len, int decoder_id)
|
||||||
|
{
|
||||||
|
// create new node
|
||||||
|
cache_slot_t *data = (cache_slot_t*) vj_malloc(sizeof(cache_slot_t));
|
||||||
|
data->size = buf_len;
|
||||||
|
data->num = frame_num;
|
||||||
|
data->fmt = decoder_id;
|
||||||
|
data->buffer = vj_malloc( buf_len );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( v->index[free_slot] != frame_num );
|
||||||
|
#endif
|
||||||
|
// clear old buffer
|
||||||
|
if( v->index[free_slot] >= 0 )
|
||||||
|
{
|
||||||
|
cache_slot_t *del_slot = v->cache[free_slot];
|
||||||
|
total_mem_used_ -= del_slot->size;
|
||||||
|
free( del_slot->buffer );
|
||||||
|
free( del_slot );
|
||||||
|
v->cache[free_slot] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
veejay_memcpy( data->buffer, linbuf, buf_len );
|
||||||
|
v->index[ free_slot ] = frame_num;
|
||||||
|
v->cache[ free_slot ] = data;
|
||||||
|
total_mem_used_ += buf_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Find a cached frame
|
||||||
|
/**
|
||||||
|
\param v Cache
|
||||||
|
\param frame_num Frame Number
|
||||||
|
\return Index of cached frame
|
||||||
|
*/
|
||||||
|
static int cache_find_slot( cache_t *v, long frame_num )
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int k = 0;
|
||||||
|
long n = 0;
|
||||||
|
for( i = 0; i < v->len ; i ++ )
|
||||||
|
{
|
||||||
|
long d = abs( v->index[i] - frame_num );
|
||||||
|
if( d > n )
|
||||||
|
{ n = d; k = i ; }
|
||||||
|
}
|
||||||
|
return k;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Find a Frame in the Cache
|
||||||
|
/**
|
||||||
|
\param v Cache
|
||||||
|
\param frame_num Frame Number
|
||||||
|
\return Error or Index
|
||||||
|
*/
|
||||||
|
static int cache_locate_slot( cache_t *v, long frame_num)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for( i = 0; i < v->len ; i ++ )
|
||||||
|
if( v->index[i] == frame_num )
|
||||||
|
return i;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Initialize the Caching System
|
||||||
|
/**
|
||||||
|
\param n_slots Maximum slots for this Cache
|
||||||
|
\return New Cache
|
||||||
|
*/
|
||||||
|
void *init_cache( unsigned int n_slots )
|
||||||
|
{
|
||||||
|
if(n_slots <= 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
cache_t *v = (cache_t*) vj_malloc(sizeof(cache_t));
|
||||||
|
v->len = n_slots;
|
||||||
|
v->cache = (cache_slot_t**) vj_malloc(sizeof(cache_slot_t*) * v->len );
|
||||||
|
memset( v->cache, 0, sizeof(cache_slot_t*) * v->len );
|
||||||
|
|
||||||
|
v->index = (long*) malloc(sizeof(long) * v->len );
|
||||||
|
memset( v->index, -1, sizeof(long) * v->len );
|
||||||
|
|
||||||
|
return (void*) v;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Clear all slots in Cache
|
||||||
|
/**
|
||||||
|
\param cache Cache
|
||||||
|
*/
|
||||||
|
void reset_cache(void *cache)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
cache_t *v = (cache_t*) cache;
|
||||||
|
|
||||||
|
memset( v->index, -1, sizeof(long) * v->len );
|
||||||
|
for( i = 0; i < v->len; i ++ )
|
||||||
|
{
|
||||||
|
if( v->cache[i] )
|
||||||
|
{
|
||||||
|
total_mem_used_ -= v->cache[i]->size;
|
||||||
|
if(v->cache[i]->buffer)
|
||||||
|
free(v->cache[i]->buffer);
|
||||||
|
free(v->cache[i]);
|
||||||
|
v->cache[i] = NULL;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int cache_avail_mb()
|
||||||
|
{
|
||||||
|
return ( total_mem_used_ == 0 ? 0 : total_mem_used_ / (1024 * 1024 ));
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Destroy Cache
|
||||||
|
/**
|
||||||
|
\param cache Cache
|
||||||
|
*/
|
||||||
|
void free_cache(void *cache)
|
||||||
|
{
|
||||||
|
cache_t *v = (cache_t*) cache;
|
||||||
|
reset_cache( cache );
|
||||||
|
free(v->cache);
|
||||||
|
free(v->index);
|
||||||
|
free(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
int cache_frame( void *cache, uint8_t *linbuf, int buflen, long frame_num , int decoder_id)
|
||||||
|
{
|
||||||
|
cache_t *v = (cache_t*) cache;
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( cache != NULL );
|
||||||
|
assert( linbuf != NULL );
|
||||||
|
assert( buflen > 0 );
|
||||||
|
assert( frame_num >= 0 );
|
||||||
|
#endif
|
||||||
|
int slot_num = cache_free_slot( cache );
|
||||||
|
if( slot_num == -1 )
|
||||||
|
slot_num = cache_find_slot( v, frame_num );
|
||||||
|
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert(slot_num >= 0 );
|
||||||
|
#endif
|
||||||
|
cache_claim_slot(v, slot_num, linbuf, frame_num, buflen, decoder_id);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Get a Frame from the Cache
|
||||||
|
/**
|
||||||
|
\param cache Cache
|
||||||
|
\param frame_num Frame Number
|
||||||
|
\param buf_len Buffer Length
|
||||||
|
\param decoder_id Decoder ID
|
||||||
|
\return Pointer to Image buffer or NULL
|
||||||
|
*/
|
||||||
|
uint8_t *get_cached_frame( void *cache, long frame_num, int *buf_len, int *decoder_id )
|
||||||
|
{
|
||||||
|
cache_t *v = (cache_t*) cache;
|
||||||
|
int slot = cache_locate_slot( v, frame_num );
|
||||||
|
if( slot == -1 )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
cache_slot_t *data = v->cache[ slot ];
|
||||||
|
|
||||||
|
*buf_len = data->size;
|
||||||
|
*decoder_id = data->fmt;
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( data->num == frame_num );
|
||||||
|
#endif
|
||||||
|
return (uint8_t*) data->buffer;
|
||||||
|
}
|
||||||
28
veejay-ng/libel/elcache.h
Normal file
28
veejay-ng/libel/elcache.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2002-2006 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ELCACHE_H
|
||||||
|
#define ELCACHE_H
|
||||||
|
|
||||||
|
uint8_t *get_cached_frame( void *cache, long frame_num, int *buf_len, int *decoder_id );
|
||||||
|
int cache_frame( void *cache, uint8_t *linbuf, int buflen, long frame_num , int decoder_id);
|
||||||
|
void free_cache(void *cache);
|
||||||
|
void *init_cache( unsigned int n_slots );
|
||||||
|
|
||||||
|
#endif
|
||||||
1214
veejay-ng/libel/lav_io.c
Normal file
1214
veejay-ng/libel/lav_io.c
Normal file
File diff suppressed because it is too large
Load Diff
124
veejay-ng/libel/lav_io.h
Normal file
124
veejay-ng/libel/lav_io.h
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
/*
|
||||||
|
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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LAV_IO_H
|
||||||
|
|
||||||
|
#define LAV_IO_H
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#ifdef HAVE_MLT
|
||||||
|
#include <mlt/framework/mlt.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <libel/avilib.h>
|
||||||
|
#ifdef SUPPORT_READ_DV2
|
||||||
|
#include <libel/rawdv.h>
|
||||||
|
#endif
|
||||||
|
// play with mlt here, avformat producer/several consumers (we can write to)
|
||||||
|
// for normalized output (720x576/480) , dv1394 capture and playback
|
||||||
|
|
||||||
|
#include <mjpegtools/yuv4mpeg.h>
|
||||||
|
|
||||||
|
#define LAV_INTER_UNKNOWN Y4M_UNKNOWN
|
||||||
|
#define LAV_NOT_INTERLACED Y4M_ILACE_NONE
|
||||||
|
#define LAV_INTER_TOP_FIRST Y4M_ILACE_TOP_FIRST
|
||||||
|
#define LAV_INTER_BOTTOM_FIRST Y4M_ILACE_BOTTOM_FIRST
|
||||||
|
|
||||||
|
|
||||||
|
/* chroma_format */
|
||||||
|
#define CHROMAUNKNOWN 0
|
||||||
|
#define CHROMA420 1
|
||||||
|
#define CHROMA422 2
|
||||||
|
#define CHROMA444 3
|
||||||
|
#define CHROMA411 4
|
||||||
|
|
||||||
|
/* raw data format of a single frame */
|
||||||
|
#define DATAFORMAT_MJPG 0
|
||||||
|
#define DATAFORMAT_DV2 1
|
||||||
|
#define DATAFORMAT_YUV420 2
|
||||||
|
#define DATAFORMAT_YUV422 3
|
||||||
|
#define DATAFORMAT_DIVX 4
|
||||||
|
#define DATAFORMAT_MPEG4 5
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
#ifdef HAVE_MLT
|
||||||
|
mlt_properties properties;
|
||||||
|
mlt_producer producer;
|
||||||
|
mlt_image_format format;
|
||||||
|
mlt_audio_format afmt;
|
||||||
|
#endif
|
||||||
|
avi_t *avi_fd;
|
||||||
|
#ifdef SUPPORT_READ_DV2
|
||||||
|
dv_t *dv_fd;
|
||||||
|
#endif
|
||||||
|
int jpeg_fd;
|
||||||
|
char *jpeg_filename;
|
||||||
|
#ifdef USE_GDK_PIXBUF
|
||||||
|
void *picture;
|
||||||
|
#endif
|
||||||
|
int format;
|
||||||
|
int interlacing;
|
||||||
|
int sar_w; /* "clip aspect ratio" width */
|
||||||
|
int sar_h; /* "clip aspect ratio" height */
|
||||||
|
int has_audio;
|
||||||
|
int bps;
|
||||||
|
int is_MJPG;
|
||||||
|
int MJPG_chroma;
|
||||||
|
int mmap_size;
|
||||||
|
} lav_file_t;
|
||||||
|
|
||||||
|
int lav_query_APP_marker(char format);
|
||||||
|
int lav_query_APP_length(char format);
|
||||||
|
int lav_query_polarity(char format);
|
||||||
|
lav_file_t *lav_open_output_file(char *filename, char format,
|
||||||
|
int width, int height, int interlaced, double fps,
|
||||||
|
int asize, int achans, long arate);
|
||||||
|
int lav_close(lav_file_t *lav_file);
|
||||||
|
int lav_write_frame(lav_file_t *lav_file, uint8_t *buff, long size, long count);
|
||||||
|
int lav_write_audio(lav_file_t *lav_file, uint8_t *buff, long samps);
|
||||||
|
long lav_video_frames(lav_file_t *lav_file);
|
||||||
|
int lav_video_width(lav_file_t *lav_file);
|
||||||
|
int lav_video_height(lav_file_t *lav_file);
|
||||||
|
double lav_frame_rate(lav_file_t *lav_file);
|
||||||
|
int lav_video_interlacing(lav_file_t *lav_file);
|
||||||
|
void lav_video_clipaspect(lav_file_t *lav_file, int *sar_w, int *sar_h);
|
||||||
|
int lav_video_is_MJPG(lav_file_t *lav_file);
|
||||||
|
int lav_is_DV(lav_file_t *lav_file);
|
||||||
|
int lav_video_MJPG_chroma(lav_file_t *lav_file);
|
||||||
|
const char *lav_video_compressor(lav_file_t *lav_file);
|
||||||
|
int lav_video_compressor_type(lav_file_t *lav_file);
|
||||||
|
int lav_audio_channels(lav_file_t *lav_file);
|
||||||
|
int lav_audio_bits(lav_file_t *lav_file);
|
||||||
|
long lav_audio_rate(lav_file_t *lav_file);
|
||||||
|
long lav_audio_clips(lav_file_t *lav_file);
|
||||||
|
long lav_frame_size(lav_file_t *lav_file, long frame);
|
||||||
|
int lav_seek_start(lav_file_t *lav_file);
|
||||||
|
int lav_set_video_position(lav_file_t *lav_file, long frame);
|
||||||
|
int lav_read_frame(lav_file_t *lav_file, uint8_t *vidbuf);
|
||||||
|
int lav_set_audio_position(lav_file_t *lav_file, long clip);
|
||||||
|
long lav_read_audio(lav_file_t *lav_file, uint8_t *audbuf, long samps);
|
||||||
|
int lav_filetype(lav_file_t *lav_file);
|
||||||
|
lav_file_t *lav_open_input_file(char *filename, int mmap_size);
|
||||||
|
int lav_get_field_size(uint8_t * jpegdata, long jpeglen);
|
||||||
|
const char *lav_strerror(void);
|
||||||
|
int lav_fileno( lav_file_t *lav_file );
|
||||||
|
void lav_set_default_chroma(int c);
|
||||||
|
#ifdef USE_GDK_PIXBUF
|
||||||
|
uint8_t *lav_get_frame_ptr( lav_file_t *lav_file );
|
||||||
|
void lav_set_project( int w, int h, float fps, int shift );
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
325
veejay-ng/libel/rawdv.c
Normal file
325
veejay-ng/libel/rawdv.c
Normal file
@@ -0,0 +1,325 @@
|
|||||||
|
/*
|
||||||
|
* Linux VeeJay
|
||||||
|
*
|
||||||
|
* Copyright(C)2002-2004 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
#include <config.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#ifdef SUPPORT_READ_DV2
|
||||||
|
#include <libel/rawdv.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <libvjmsg/vj-common.h>
|
||||||
|
#include <libvjmem/vjmem.h>
|
||||||
|
#include <libel/vj-mmap.h>
|
||||||
|
#include <libdv/dv.h>
|
||||||
|
#include <ffmpeg/avcodec.h>
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#define DV_PAL_SIZE 144000
|
||||||
|
#define DV_NTSC_SIZE 120000
|
||||||
|
|
||||||
|
static void rawdv_free(dv_t *dv)
|
||||||
|
{
|
||||||
|
if(dv->filename) free(dv->filename);
|
||||||
|
if(dv->buf) free(dv->buf);
|
||||||
|
if(dv) free(dv);
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_close(dv_t *dv)
|
||||||
|
{
|
||||||
|
close(dv->fd);
|
||||||
|
mmap_free(dv->mmap_region);
|
||||||
|
rawdv_free( dv);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_sampling(dv_t *dv)
|
||||||
|
{
|
||||||
|
switch(dv->fmt)
|
||||||
|
{
|
||||||
|
case e_dv_sample_411: return 4;
|
||||||
|
case e_dv_sample_422: return 2;
|
||||||
|
case e_dv_sample_420: return 1;
|
||||||
|
}
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DV_HEADER_SIZE 120000
|
||||||
|
dv_t *rawdv_open_input_file(const char *filename, int mmap_size)
|
||||||
|
{
|
||||||
|
dv_t *dv = (dv_t*) vj_malloc(sizeof(dv_t));
|
||||||
|
if(!dv) return NULL;
|
||||||
|
memset(dv, 0, sizeof(dv_t));
|
||||||
|
dv_decoder_t *decoder = NULL;
|
||||||
|
|
||||||
|
uint8_t *tmp = (uint8_t*) vj_malloc(sizeof(uint8_t) * DV_HEADER_SIZE);
|
||||||
|
memset( tmp, 0, sizeof(uint8_t) * DV_HEADER_SIZE);
|
||||||
|
off_t file_size = 0;
|
||||||
|
int n = 0;
|
||||||
|
|
||||||
|
decoder = dv_decoder_new( 1,0,0);
|
||||||
|
dv->fd = open( filename, O_RDONLY );
|
||||||
|
|
||||||
|
if(!dv->fd)
|
||||||
|
{
|
||||||
|
dv_decoder_free(decoder);
|
||||||
|
rawdv_free(dv);
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Cannot open '%s'",filename);
|
||||||
|
if(tmp)free(tmp);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
/* fseek sometimes lies about filesize - seek to end (lseek returns file offset from start)*/
|
||||||
|
file_size = lseek( dv->fd, 0, SEEK_END );
|
||||||
|
if( file_size < DV_HEADER_SIZE)
|
||||||
|
{
|
||||||
|
dv_decoder_free(decoder);
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "% is too small! ", filename);
|
||||||
|
rawdv_free(dv);
|
||||||
|
if(tmp) free(tmp);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
/* And back to start offset */
|
||||||
|
if( lseek(dv->fd,0, SEEK_SET ) < 0)
|
||||||
|
{
|
||||||
|
dv_decoder_free(decoder);
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Seek errror");
|
||||||
|
rawdv_free(dv);
|
||||||
|
if(tmp) free(tmp);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
dv->mmap_region = NULL;
|
||||||
|
if( mmap_size > 0 ) // user wants mmap
|
||||||
|
{
|
||||||
|
dv->mmap_region = mmap_file( dv->fd, 0, (mmap_size * 720 * 576 * 3),
|
||||||
|
file_size );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( dv->mmap_region == NULL )
|
||||||
|
{
|
||||||
|
if(mmap_size>0)
|
||||||
|
veejay_msg(VEEJAY_MSG_DEBUG, "Mmap failed - fallback to read");
|
||||||
|
n = read( dv->fd, tmp, DV_HEADER_SIZE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
n = mmap_read( dv->mmap_region, 0, DV_HEADER_SIZE, tmp );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( n <= 0 )
|
||||||
|
{
|
||||||
|
dv_decoder_free(decoder);
|
||||||
|
rawdv_free(dv);
|
||||||
|
if(tmp) free(tmp);
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Cannot read from '%s'", filename);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( dv_parse_header( decoder, tmp) < 0 )
|
||||||
|
{
|
||||||
|
dv_decoder_free( decoder );
|
||||||
|
rawdv_free(dv);
|
||||||
|
if(tmp) free(tmp);
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Cannot parse header");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
/* if(decoder->sampling == e_dv_sample_411)
|
||||||
|
{
|
||||||
|
dv_decoder_free( decoder );
|
||||||
|
rawdv_free(dv);
|
||||||
|
if(tmp) free(tmp);
|
||||||
|
return NULL;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
if(dv_is_PAL( decoder ) )
|
||||||
|
dv->chunk_size = DV_PAL_SIZE;
|
||||||
|
else
|
||||||
|
dv->chunk_size = DV_NTSC_SIZE;
|
||||||
|
|
||||||
|
dv->width = decoder->width;
|
||||||
|
dv->height = decoder->height;
|
||||||
|
dv->audio_rate = decoder->audio->frequency;
|
||||||
|
dv->audio_chans = decoder->audio->num_channels;
|
||||||
|
dv->audio_qbytes = decoder->audio->quantization;
|
||||||
|
dv->fps = ( dv_is_PAL( decoder) ? 25.0 : 29.97 );
|
||||||
|
dv->size = decoder->frame_size;
|
||||||
|
dv->num_frames = (file_size - DV_HEADER_SIZE) / dv->size;
|
||||||
|
dv->fmt = decoder->sampling;
|
||||||
|
// dv->fmt = ( decoder->sampling == e_dv_sample_422 ? 1 : 0);
|
||||||
|
dv->buf = (uint8_t*) vj_malloc(sizeof(uint8_t*) * dv->size);
|
||||||
|
dv->offset = 0;
|
||||||
|
|
||||||
|
|
||||||
|
dv_decoder_free( decoder );
|
||||||
|
|
||||||
|
if(tmp)
|
||||||
|
free(tmp);
|
||||||
|
|
||||||
|
/* if(dv->audio_rate)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for( i = 0; i < 4; i ++ )
|
||||||
|
dv->audio_buffers[i] = (int16_t*) vj_malloc(sizeof(int16_t) * 2 * DV_AUDIO_MAX_SAMPLES);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
veejay_msg(VEEJAY_MSG_DEBUG,
|
||||||
|
"rawDV: num frames %ld, dimensions %d x %d, at %2.2f in %s",
|
||||||
|
dv->num_frames,
|
||||||
|
dv->width,
|
||||||
|
dv->height,
|
||||||
|
dv->fps,
|
||||||
|
(dv->fmt==1?"422":"420"));
|
||||||
|
veejay_msg(VEEJAY_MSG_DEBUG,
|
||||||
|
"rawDV: frame size %d, rate %d, channels %d, bits %d",
|
||||||
|
dv->size,
|
||||||
|
dv->audio_rate,
|
||||||
|
dv->audio_chans,
|
||||||
|
dv->audio_qbytes);*/
|
||||||
|
|
||||||
|
return dv;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int rawdv_set_position(dv_t *dv, long nframe)
|
||||||
|
{
|
||||||
|
off_t offset = nframe * dv->size;
|
||||||
|
|
||||||
|
if(nframe <= 0 )
|
||||||
|
offset = 0;
|
||||||
|
else
|
||||||
|
if(nframe > dv->num_frames)
|
||||||
|
offset = dv->num_frames * dv->size;
|
||||||
|
|
||||||
|
dv->offset = offset;
|
||||||
|
|
||||||
|
if( lseek( dv->fd, offset, SEEK_SET ) < 0 )
|
||||||
|
return -1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_read_frame(dv_t *dv, uint8_t *buf )
|
||||||
|
{
|
||||||
|
int n = 0;
|
||||||
|
if(dv->mmap_region == NULL)
|
||||||
|
{
|
||||||
|
n = read( dv->fd, dv->buf, dv->size );
|
||||||
|
memcpy( buf, dv->buf, dv->size );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
n = mmap_read( dv->mmap_region, dv->offset, dv->size, buf );
|
||||||
|
}
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_read_audio_frame(dv_t *dv, uint8_t *audio )
|
||||||
|
{
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
/*
|
||||||
|
int n = dv_decode_full_audio( dv->decoder, dv->buf, dv->audio_buffers );
|
||||||
|
// interleave buffers to audio
|
||||||
|
int n_samples = dv_get_num_samples( dv->decoder );
|
||||||
|
int n_chans = dv->audio_chans;
|
||||||
|
int16_t *ch0 = dv->audio_buffers[0];
|
||||||
|
int16_t *ch1 = dv->audio_buffers[1];
|
||||||
|
int i,j;
|
||||||
|
for( i = 0; i < n_samples; i ++ )
|
||||||
|
{
|
||||||
|
*(audio) = *(ch0) & 0xff;
|
||||||
|
*(audio+1) = (*(ch0) << 8) & 0xff;
|
||||||
|
*(audio+2) = *(ch1) & 0xff;
|
||||||
|
*(audio+3) = (*(ch1)<<8) & 0xff;
|
||||||
|
*(ch0) ++;
|
||||||
|
*(ch1) ++;
|
||||||
|
*(audio) += 4;
|
||||||
|
}
|
||||||
|
return n_samples * 4;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_video_frames(dv_t *dv)
|
||||||
|
{
|
||||||
|
return dv->num_frames;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_width(dv_t *dv)
|
||||||
|
{
|
||||||
|
return dv->width;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_height(dv_t *dv)
|
||||||
|
{
|
||||||
|
return dv->height;
|
||||||
|
}
|
||||||
|
|
||||||
|
double rawdv_fps(dv_t *dv)
|
||||||
|
{
|
||||||
|
return (double) dv->fps;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_compressor(dv_t *dv)
|
||||||
|
{
|
||||||
|
return CODEC_ID_DVVIDEO;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *rawdv_video_compressor(dv_t *dv)
|
||||||
|
{
|
||||||
|
char *res = "dvsd\0";
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_audio_channels(dv_t *dv)
|
||||||
|
{
|
||||||
|
return dv->audio_chans;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_audio_bits(dv_t *dv)
|
||||||
|
{
|
||||||
|
return dv->audio_qbytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_audio_format(dv_t *dv)
|
||||||
|
{
|
||||||
|
// pcm wave format
|
||||||
|
return (0x0001);
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_audio_rate(dv_t *dv)
|
||||||
|
{
|
||||||
|
return dv->audio_rate;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_audio_bps(dv_t *dv)
|
||||||
|
{
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_frame_size(dv_t *dv)
|
||||||
|
{
|
||||||
|
return dv->size;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rawdv_interlacing(dv_t *dv)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
67
veejay-ng/libel/rawdv.h
Normal file
67
veejay-ng/libel/rawdv.h
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
#ifndef RAWDV_H
|
||||||
|
#define RAWDV_H
|
||||||
|
/*
|
||||||
|
* Linux VeeJay
|
||||||
|
*
|
||||||
|
* Copyright(C)2002-2004 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
#include <config.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <libdv/dv.h>
|
||||||
|
#include <libel/vj-mmap.h>
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
char *filename;
|
||||||
|
long num_frames;
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
float fps;
|
||||||
|
int chunk_size;
|
||||||
|
long audio_rate;
|
||||||
|
int audio_chans;
|
||||||
|
int audio_qbytes;
|
||||||
|
dv_decoder_t *decoder;
|
||||||
|
int16_t *audio_buffers[4];
|
||||||
|
off_t offset;
|
||||||
|
uint8_t *buf;
|
||||||
|
int size;
|
||||||
|
int fmt;
|
||||||
|
mmap_region_t *mmap_region;
|
||||||
|
} dv_t;
|
||||||
|
|
||||||
|
int rawdv_sampling(dv_t *dv);
|
||||||
|
int rawdv_close(dv_t *dv);
|
||||||
|
dv_t *rawdv_open_input_file(const char *filename, int mmap_size);
|
||||||
|
int rawdv_set_position(dv_t *dv, long nframe);
|
||||||
|
int rawdv_read_frame(dv_t *dv, uint8_t *buf );
|
||||||
|
int rawdv_read_audio_frame(dv_t *dv, uint8_t *buf);
|
||||||
|
int rawdv_video_frames(dv_t *dv);
|
||||||
|
int rawdv_width(dv_t *dv);
|
||||||
|
int rawdv_height(dv_t *dv);
|
||||||
|
double rawdv_fps(dv_t *dv);
|
||||||
|
int rawdv_compressor(dv_t *dv);
|
||||||
|
char *rawdv_video_compressor(dv_t *dv);
|
||||||
|
int rawdv_audio_channels(dv_t *dv);
|
||||||
|
int rawdv_audio_bits(dv_t *dv);
|
||||||
|
int rawdv_audio_format(dv_t *dv);
|
||||||
|
int rawdv_audio_rate(dv_t *dv);
|
||||||
|
int rawdv_audio_bps(dv_t *dv);
|
||||||
|
int rawdv_frame_size(dv_t *dv);
|
||||||
|
int rawdv_interlacing(dv_t *dv);
|
||||||
|
|
||||||
|
#endif
|
||||||
484
veejay-ng/libel/vj-avcodec.c
Normal file
484
veejay-ng/libel/vj-avcodec.c
Normal file
@@ -0,0 +1,484 @@
|
|||||||
|
/* veejay - Linux VeeJay
|
||||||
|
* (C) 2002-2004 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup avcodec FFmpeg AVCodec
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#include <libel/vj-avcodec.h>
|
||||||
|
#include <libel/vj-el.h>
|
||||||
|
#include <libvjmsg/vj-common.h>
|
||||||
|
#include <libvjmem/vjmem.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <libyuv/yuvconv.h>
|
||||||
|
#include <veejay/defs.h>
|
||||||
|
#ifdef SUPPORT_READ_DV2
|
||||||
|
#define __FALLBACK_LIBDV
|
||||||
|
#include <libel/vj-dv.h>
|
||||||
|
static vj_dv_encoder *dv_encoder = NULL;
|
||||||
|
#endif
|
||||||
|
//@@ FIXME
|
||||||
|
static int out_pixel_format = FMT_420;
|
||||||
|
|
||||||
|
#define YUV420_ONLY_CODEC(id) ( ( id == CODEC_ID_MJPEG || id == CODEC_ID_MJPEGB || id == CODEC_ID_MSMPEG4V3 || id == CODEC_ID_MPEG4 ) ? 1: 0)
|
||||||
|
|
||||||
|
|
||||||
|
static char* el_get_codec_name(int codec_id )
|
||||||
|
{
|
||||||
|
char name[20];
|
||||||
|
switch(codec_id)
|
||||||
|
{
|
||||||
|
case CODEC_ID_MJPEG: sprintf(name, "MJPEG"); break;
|
||||||
|
case CODEC_ID_MPEG4: sprintf(name, "MPEG4"); break;
|
||||||
|
case CODEC_ID_MSMPEG4V3: sprintf(name, "DIVX"); break;
|
||||||
|
case CODEC_ID_DVVIDEO: sprintf(name, "DVVideo"); break;
|
||||||
|
case -1 : sprintf(name, "RAW YUV"); break;
|
||||||
|
default:
|
||||||
|
sprintf(name, "Unknown"); break;
|
||||||
|
}
|
||||||
|
char *res = strdup(name);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static vj_encoder *_encoders[NUM_ENCODERS];
|
||||||
|
|
||||||
|
static vj_encoder *vj_avcodec_new_encoder( int id, void *edl, int pixel_format)
|
||||||
|
{
|
||||||
|
vj_encoder *e = (vj_encoder*) vj_malloc(sizeof(vj_encoder));
|
||||||
|
if(!e) return NULL;
|
||||||
|
memset(e, 0, sizeof(vj_encoder));
|
||||||
|
/* if( YUV420_ONLY_CODEC(id ))
|
||||||
|
{
|
||||||
|
e->data[0] = (uint8_t*) vj_malloc(sizeof(uint8_t) *
|
||||||
|
el->video_width * el->video_height );
|
||||||
|
e->data[1] = (uint8_t*) vj_malloc(sizeof(uint8_t) *
|
||||||
|
el->video_width * el->video_height /2 );
|
||||||
|
e->data[2] = (uint8_t*) vj_malloc(sizeof(uint8_t) *
|
||||||
|
el->video_width * el->video_height /2);
|
||||||
|
memset( e->data[0], 0, el->video_width * el->video_height );
|
||||||
|
memset( e->data[1], 0, el->video_width * el->video_height/2 );
|
||||||
|
memset( e->data[2], 0, el->video_width * el->video_height/2 );
|
||||||
|
}*/
|
||||||
|
|
||||||
|
if(id != 998 && id != 999 )
|
||||||
|
{
|
||||||
|
#ifdef __FALLBACK_LIBDV
|
||||||
|
if(id != CODEC_ID_DVVIDEO)
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
e->codec = avcodec_find_encoder( id );
|
||||||
|
if(!e->codec)
|
||||||
|
{
|
||||||
|
char *descr = el_get_codec_name(id);
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Cannot find Encoder codec %s", descr );
|
||||||
|
free(descr);
|
||||||
|
}
|
||||||
|
#ifdef __FALLBACK_LIBDV
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if( id != 998 && id != 999 )
|
||||||
|
{
|
||||||
|
#ifdef __FALLBACK_LIBDV
|
||||||
|
if(id != CODEC_ID_DVVIDEO )
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
e->context = avcodec_alloc_context();
|
||||||
|
e->context->bit_rate = 2750 * 1024;
|
||||||
|
e->context->max_b_frames =0;
|
||||||
|
//e->context->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL;
|
||||||
|
e->context->width = vj_el_get_width(edl);
|
||||||
|
e->context->height = vj_el_get_height(edl);
|
||||||
|
#if LIBAVCODEC_BUILD > 5010
|
||||||
|
e->context->time_base = (AVRational) { 1, vj_el_get_fps(edl) };
|
||||||
|
#else
|
||||||
|
e->context->frame_rate = vj_el_get_fps( edl );
|
||||||
|
e->context->frame_rate_base = 1;
|
||||||
|
#endif
|
||||||
|
e->context->qcompress = 0.0;
|
||||||
|
e->context->qblur = 0.0;
|
||||||
|
e->context->flags = CODEC_FLAG_QSCALE;
|
||||||
|
e->context->gop_size = 0;
|
||||||
|
e->context->sub_id = 0;
|
||||||
|
e->context->me_method = 0; // motion estimation algorithm
|
||||||
|
e->context->workaround_bugs = FF_BUG_AUTODETECT;
|
||||||
|
e->context->prediction_method = 0;
|
||||||
|
e->context->dct_algo = FF_DCT_AUTO; //global_quality?
|
||||||
|
// e->context->pix_fmt = (pixel_format == FMT_420 ? PIX_FMT_YUV420P : PIX_FMT_YUV422P );
|
||||||
|
/*
|
||||||
|
#if LIBAVCODEC_BUILD > 5010
|
||||||
|
if( YUV420_ONLY_CODEC(id) )
|
||||||
|
e->context->pix_fmt = PIX_FMT_YUV420P;
|
||||||
|
else
|
||||||
|
e->context->pix_fmt = (pixel_format == FMT_420 ? PIX_FMT_YUVJ420P : PIX_FMT_YU
|
||||||
|
VJ422P );
|
||||||
|
//@@ mjpeg encoder requires 4:2:0 planar ? wow
|
||||||
|
//(pixel_format == FMT_420 ?
|
||||||
|
// PIX_FMT_YUVJ420P : PIX_FMT_YUVJ422P );
|
||||||
|
#else
|
||||||
|
e->context->pix_fmt = (pixel_format == FMT_420 ? PIX_FMT_YUV420P : PIX_FMT_YUV422P );
|
||||||
|
#endif
|
||||||
|
if ( avcodec_open( e->context, e->codec ) < 0 )
|
||||||
|
{
|
||||||
|
char *descr = el_get_codec_name( id );
|
||||||
|
veejay_msg(VEEJAY_MSG_DEBUG, "Cannot open codec '%s'" , descr );
|
||||||
|
if(e) free(e);
|
||||||
|
if(descr) free(descr);
|
||||||
|
return NULL;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
if ( avcodec_open( e->context, e->codec ) < 0 )
|
||||||
|
{
|
||||||
|
if(e) free(e);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __FALLBACK_LIBDV
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
e->len = vj_el_get_width(edl) * vj_el_get_height(edl);
|
||||||
|
if(pixel_format == PIX_FMT_YUV422P)
|
||||||
|
e->uv_len = e->len / 2;
|
||||||
|
else
|
||||||
|
e->uv_len = e->len / 4;
|
||||||
|
e->width = vj_el_get_width(edl);
|
||||||
|
e->height = vj_el_get_height(edl);
|
||||||
|
|
||||||
|
e->out_fmt = pixel_format;
|
||||||
|
e->encoder_id = id;
|
||||||
|
|
||||||
|
/*
|
||||||
|
if( el->has_audio )
|
||||||
|
{
|
||||||
|
e->audiocodec = avcodec_find_encoder( CODEC_ID_PCM_U8 );
|
||||||
|
if(!e->audiocodec)
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Error initializing audio codec");
|
||||||
|
if(e) free(e);
|
||||||
|
}
|
||||||
|
e->context->sample_rate = el->audio_rate;
|
||||||
|
e->context->channels = el->audio_chans;
|
||||||
|
if( avcodec_open( e->context, e->audiocodec ) < 0)
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Cannot open audio context");
|
||||||
|
if(e) free(e);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void vj_avcodec_close_encoder( vj_encoder *av )
|
||||||
|
{
|
||||||
|
if(av)
|
||||||
|
{
|
||||||
|
if(av->context)
|
||||||
|
{
|
||||||
|
avcodec_close( av->context );
|
||||||
|
free(av->context);
|
||||||
|
}
|
||||||
|
free(av);
|
||||||
|
}
|
||||||
|
av = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int vj_avcodec_init(void *el)
|
||||||
|
{
|
||||||
|
int fmt;
|
||||||
|
// fmt = out_pixel_format = vj_el_get_fmt(el);
|
||||||
|
fmt = 1;
|
||||||
|
veejay_msg(0, "Warning: Encoder in fmt 1");
|
||||||
|
_encoders[ENCODER_MJPEG] = vj_avcodec_new_encoder( CODEC_ID_MJPEG, el, fmt );
|
||||||
|
if(!_encoders[ENCODER_MJPEG]) return 0;
|
||||||
|
|
||||||
|
#ifdef __FALLBACK_LIBDV
|
||||||
|
dv_encoder = vj_dv_init_encoder( (void*)el , out_pixel_format);
|
||||||
|
if(!dv_encoder)
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Unable to initialize quasar DV codec");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
_encoders[ENCODER_DVVIDEO] = vj_avcodec_new_encoder( CODEC_ID_DVVIDEO, el, fmt );
|
||||||
|
if(!_encoders[ENCODER_DVVIDEO]) return 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
_encoders[ENCODER_DIVX] = vj_avcodec_new_encoder( CODEC_ID_MSMPEG4V3 , el, fmt);
|
||||||
|
if(!_encoders[ENCODER_DIVX]) return 0;
|
||||||
|
|
||||||
|
_encoders[ENCODER_MPEG4] = vj_avcodec_new_encoder( CODEC_ID_MPEG4, el, fmt);
|
||||||
|
if(!_encoders[ENCODER_MPEG4]) return 0;
|
||||||
|
|
||||||
|
_encoders[ENCODER_YUV420] = vj_avcodec_new_encoder( 999, el, fmt);
|
||||||
|
if(!_encoders[ENCODER_YUV420]) return 0;
|
||||||
|
|
||||||
|
_encoders[ENCODER_YUV422] = vj_avcodec_new_encoder( 998, el, fmt);
|
||||||
|
if(!_encoders[ENCODER_YUV422]) return 0;
|
||||||
|
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int vj_avcodec_free()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for( i = 0; i < NUM_ENCODERS; i++)
|
||||||
|
{
|
||||||
|
if(_encoders[i]) vj_avcodec_close_encoder(_encoders[i]);
|
||||||
|
}
|
||||||
|
#ifdef __FALLBACK_LIBDV
|
||||||
|
vj_dv_free_encoder(dv_encoder);
|
||||||
|
#endif
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
void yuv422p_to_yuv420p3( uint8_t *src, uint8_t *dst[3], int w, int h)
|
||||||
|
{
|
||||||
|
AVPicture pict1,pict2;
|
||||||
|
memset(&pict1,0,sizeof(pict1));
|
||||||
|
memset(&pict2,0,sizeof(pict2));
|
||||||
|
|
||||||
|
pict1.data[0] = src;
|
||||||
|
pict1.data[1] = src+(w*h);
|
||||||
|
pict1.data[2] = src+(w*h)+((w*h)/2);
|
||||||
|
pict1.linesize[0] = w;
|
||||||
|
pict1.linesize[1] = w >> 1;
|
||||||
|
pict1.linesize[2] = w >> 1;
|
||||||
|
pict2.data[0] = dst[0];
|
||||||
|
pict2.data[1] = dst[1];
|
||||||
|
pict2.data[2] = dst[2];
|
||||||
|
pict2.linesize[0] = w;
|
||||||
|
pict2.linesize[1] = w >> 1;
|
||||||
|
pict2.linesize[2] = w >> 1;
|
||||||
|
|
||||||
|
img_convert( &pict2, PIX_FMT_YUV420P, &pict1, PIX_FMT_YUV422P, w, h );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
void yuv422p_to_yuv420p2( uint8_t *src[3], uint8_t *dst[3], int w, int h)
|
||||||
|
{
|
||||||
|
AVPicture pict1,pict2;
|
||||||
|
memset(&pict1,0,sizeof(pict1));
|
||||||
|
memset(&pict2,0,sizeof(pict2));
|
||||||
|
|
||||||
|
pict1.data[0] = src[0];
|
||||||
|
pict1.data[1] = src[1];
|
||||||
|
pict1.data[2] = src[2];
|
||||||
|
pict1.linesize[0] = w;
|
||||||
|
pict1.linesize[1] = w >> 1;
|
||||||
|
pict1.linesize[2] = w >> 1;
|
||||||
|
pict2.data[0] = dst[0];
|
||||||
|
pict2.data[1] = dst[1];
|
||||||
|
pict2.data[2] = dst[2];
|
||||||
|
pict2.linesize[0] = w;
|
||||||
|
pict2.linesize[1] = w >> 1;
|
||||||
|
pict2.linesize[2] = w >> 1;
|
||||||
|
|
||||||
|
img_convert( &pict2, PIX_FMT_YUV420P, &pict1, PIX_FMT_YUV422P, w, h );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int yuv422p_to_yuv420p( uint8_t *src[3], uint8_t *dst, int w, int h)
|
||||||
|
{
|
||||||
|
|
||||||
|
int len = w* h ;
|
||||||
|
int uv_len = len / 4;
|
||||||
|
AVPicture pict1,pict2;
|
||||||
|
memset(&pict1,0,sizeof(pict1));
|
||||||
|
memset(&pict2,0,sizeof(pict2));
|
||||||
|
|
||||||
|
pict1.data[0] = src[0];
|
||||||
|
pict1.data[1] = src[1];
|
||||||
|
pict1.data[2] = src[2];
|
||||||
|
pict1.linesize[0] = w;
|
||||||
|
pict1.linesize[1] = w >> 1;
|
||||||
|
pict1.linesize[2] = w >> 1;
|
||||||
|
pict2.data[0] = dst;
|
||||||
|
pict2.data[1] = dst + len;
|
||||||
|
pict2.data[2] = dst + len + uv_len;
|
||||||
|
pict2.linesize[0] = w;
|
||||||
|
pict2.linesize[1] = w >> 1;
|
||||||
|
pict2.linesize[2] = w >> 1;
|
||||||
|
|
||||||
|
img_convert( &pict2, PIX_FMT_YUV420P, &pict1, PIX_FMT_YUV422P, w, h );
|
||||||
|
return (len + uv_len + uv_len);
|
||||||
|
|
||||||
|
}
|
||||||
|
int yuv420p_to_yuv422p2( uint8_t *sY,uint8_t *sCb, uint8_t *sCr, uint8_t *dst[3], int w, int h )
|
||||||
|
{
|
||||||
|
const int len = w * h;
|
||||||
|
const int uv_len = len / 2;
|
||||||
|
AVPicture pict1,pict2;
|
||||||
|
memset(&pict1,0,sizeof(pict1));
|
||||||
|
memset(&pict2,0,sizeof(pict2));
|
||||||
|
pict1.data[0] = sY;
|
||||||
|
pict1.data[1] = sCb;
|
||||||
|
pict1.data[2] = sCr;
|
||||||
|
pict1.linesize[0] = w;
|
||||||
|
pict1.linesize[1] = w >> 1;
|
||||||
|
pict1.linesize[2] = w >> 1;
|
||||||
|
pict2.data[0] = dst[0];
|
||||||
|
pict2.data[1] = dst[1];
|
||||||
|
pict2.data[2] = dst[2];
|
||||||
|
pict2.linesize[0] = w;
|
||||||
|
pict2.linesize[1] = w >> 1;
|
||||||
|
pict2.linesize[2] = w >> 1;
|
||||||
|
|
||||||
|
img_convert( &pict2, PIX_FMT_YUV422P, &pict1, PIX_FMT_YUV420P, w, h );
|
||||||
|
return (len + uv_len + uv_len);
|
||||||
|
|
||||||
|
}
|
||||||
|
int yuv420p_to_yuv422p( uint8_t *sY,uint8_t *sCb, uint8_t *sCr, uint8_t *dst[3], int w, int h )
|
||||||
|
{
|
||||||
|
const int len = w * h;
|
||||||
|
const int uv_len = len / 2;
|
||||||
|
AVPicture pict1,pict2;
|
||||||
|
memset(&pict1,0,sizeof(pict1));
|
||||||
|
memset(&pict2,0,sizeof(pict2));
|
||||||
|
pict1.data[0] = sY;
|
||||||
|
pict1.data[1] = sCb;
|
||||||
|
pict1.data[2] = sCr;
|
||||||
|
pict1.linesize[0] = w;
|
||||||
|
pict1.linesize[1] = w >> 1;
|
||||||
|
pict1.linesize[2] = w >> 1;
|
||||||
|
pict2.data[0] = dst[0];
|
||||||
|
pict2.data[1] = dst[1];
|
||||||
|
pict2.data[2] = dst[2];
|
||||||
|
pict2.linesize[0] = w;
|
||||||
|
pict2.linesize[1] = w >> 1;
|
||||||
|
pict2.linesize[2] = w >> 1;
|
||||||
|
img_convert( &pict2, PIX_FMT_YUV422P, &pict1, PIX_FMT_YUV420P, w, h );
|
||||||
|
return (len + uv_len + uv_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int vj_avcodec_copy_frame( vj_encoder *av, uint8_t *src[3], uint8_t *dst )
|
||||||
|
{
|
||||||
|
if(!av)
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "No encoder !!");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if( (av->encoder_id == 999 && av->out_fmt == PIX_FMT_YUV420P) || (av->encoder_id == 998 && av->out_fmt == PIX_FMT_YUV422P))
|
||||||
|
{
|
||||||
|
/* copy */
|
||||||
|
veejay_memcpy( dst, src[0], av->len );
|
||||||
|
veejay_memcpy( dst+(av->len), src[1], av->uv_len );
|
||||||
|
veejay_memcpy( dst+(av->len+av->uv_len) , src[2], av->uv_len);
|
||||||
|
return ( av->len + av->uv_len + av->uv_len );
|
||||||
|
}
|
||||||
|
/* copy by converting */
|
||||||
|
if( av->encoder_id == 999 && av->out_fmt == PIX_FMT_YUV422P)
|
||||||
|
{
|
||||||
|
yuv422p_to_yuv420p( src, dst, av->width, av->height);
|
||||||
|
return ( av->len + (av->len/4) + (av->len/4));
|
||||||
|
}
|
||||||
|
|
||||||
|
if( av->encoder_id == 998 && av->out_fmt == PIX_FMT_YUV420P)
|
||||||
|
{
|
||||||
|
uint8_t *d[3];
|
||||||
|
d[0] = dst;
|
||||||
|
d[1] = dst + av->len;
|
||||||
|
d[2] = dst + av->len + (av->len / 2);
|
||||||
|
yuv420p_to_yuv422p2( src[0],src[1],src[2], d, av->width,av->height );
|
||||||
|
return ( av->len + av->len );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* if(av->sub_sample)
|
||||||
|
{
|
||||||
|
return(yuv422p_to_yuv420p(src,dst, av->width, av->height ));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
veejay_memcpy( dst, src[0], av->len );
|
||||||
|
veejay_memcpy( dst+(av->len), src[1], av->uv_len );
|
||||||
|
veejay_memcpy( dst+(av->len+av->uv_len) , src[2], av->uv_len);
|
||||||
|
}
|
||||||
|
return (av->len + av->uv_len + av->uv_len);
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int vj_avcodec_encode_frame( int format, uint8_t *src[3], uint8_t *buf, int buf_len)
|
||||||
|
{
|
||||||
|
AVFrame pict;
|
||||||
|
vj_encoder *av = _encoders[format];
|
||||||
|
int res=0;
|
||||||
|
memset( &pict, 0, sizeof(pict));
|
||||||
|
|
||||||
|
if(format == ENCODER_YUV420) // no compression, just copy
|
||||||
|
return vj_avcodec_copy_frame( _encoders[ENCODER_YUV420],src, buf );
|
||||||
|
if(format == ENCODER_YUV422) // no compression, just copy
|
||||||
|
return vj_avcodec_copy_frame( _encoders[ENCODER_YUV422],src, buf );
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __FALLBACK_LIBDV
|
||||||
|
if(format == ENCODER_DVVIDEO )
|
||||||
|
return vj_dv_encode_frame( dv_encoder,src, buf );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
pict.quality = 1;
|
||||||
|
pict.data[0] = src[0];
|
||||||
|
pict.data[1] = src[1];
|
||||||
|
pict.data[2] = src[2];
|
||||||
|
|
||||||
|
if( out_pixel_format == FMT_422 )
|
||||||
|
{
|
||||||
|
pict.linesize[0] = av->context->width;
|
||||||
|
pict.linesize[1] = av->context->width;
|
||||||
|
pict.linesize[2] = av->context->width;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pict.linesize[0] = av->context->width;
|
||||||
|
pict.linesize[1] = av->context->width >> 1;
|
||||||
|
pict.linesize[2] = av->context->width >> 1;
|
||||||
|
}
|
||||||
|
res = avcodec_encode_video( av->context, buf, buf_len, &pict );
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
static int vj_avcodec_copy_audio_frame( uint8_t *src, uint8_t *buf, int len)
|
||||||
|
{
|
||||||
|
veejay_memcpy( buf, src, len );
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
int vj_avcodec_encode_audio( int format, uint8_t *src, uint8_t *dst, int len, int nsamples )
|
||||||
|
{
|
||||||
|
if(format == ENCODER_YUV420)
|
||||||
|
return vj_avcodec_copy_audio_frame;
|
||||||
|
if(format == ENCODER_YUV422)
|
||||||
|
return vj_avcodec_copy_audio_frame;
|
||||||
|
vj_encoder *av = _encoders[format];
|
||||||
|
|
||||||
|
int len = avcodec_encode_audio( av->context, src, len, nsamples );
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
*/
|
||||||
70
veejay-ng/libel/vj-avcodec.h
Normal file
70
veejay-ng/libel/vj-avcodec.h
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
/* veejay - Linux VeeJay
|
||||||
|
* (C) 2002-2004 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
#ifndef VJ_AVCODEC_H
|
||||||
|
#define VJ_AVCODEC_H
|
||||||
|
|
||||||
|
//@ todo: encapsulate
|
||||||
|
#include <ffmpeg/avcodec.h>
|
||||||
|
|
||||||
|
#define ENCODER_MJPEG 0
|
||||||
|
#define ENCODER_DVVIDEO 1
|
||||||
|
#define ENCODER_DIVX 2
|
||||||
|
#define ENCODER_MPEG4 3
|
||||||
|
#define ENCODER_YUV420 4
|
||||||
|
#define ENCODER_YUV422 5
|
||||||
|
#define NUM_ENCODERS 6
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
AVCodec *codec;
|
||||||
|
AVCodec *audiocodec;
|
||||||
|
AVFrame *frame;
|
||||||
|
AVCodecContext *context;
|
||||||
|
int out_fmt;
|
||||||
|
int uv_len;
|
||||||
|
int len;
|
||||||
|
int sub_sample;
|
||||||
|
int super_sample;
|
||||||
|
int encoder_id;
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
} vj_encoder;
|
||||||
|
|
||||||
|
int vj_avcodec_init(void *el);
|
||||||
|
|
||||||
|
int vj_avcodec_encode_frame( int format, uint8_t *src[3], uint8_t *dst, int dst_len);
|
||||||
|
|
||||||
|
int vj_avcodec_free();
|
||||||
|
|
||||||
|
/* color space conversion routines, should go somewhere else someday
|
||||||
|
together with subsample.c/colorspace.c into some lib
|
||||||
|
*/
|
||||||
|
|
||||||
|
void yuv_planar_to_rgb24(uint8_t *src[3], int fmt, uint8_t *dst, int w, int h );
|
||||||
|
|
||||||
|
// from yuv 4:2:0 planar to yuv 4:2:2 planar
|
||||||
|
int yuv420p_to_yuv422p( uint8_t *Y, uint8_t *Cb, uint8_t *Cr, uint8_t *dst[3], int w, int h );
|
||||||
|
|
||||||
|
void yuv422p_to_yuv420p2( uint8_t *src[3], uint8_t *dst[3], int w, int h );
|
||||||
|
|
||||||
|
int yuv420p_to_yuv422p2( uint8_t *sY,uint8_t *sCb, uint8_t *sCr, uint8_t *dst[3], int w, int h );
|
||||||
|
|
||||||
|
void yuv422p_to_yuv420p3( uint8_t *src, uint8_t *dst[3], int w, int h);
|
||||||
|
|
||||||
|
#endif
|
||||||
278
veejay-ng/libel/vj-dv.c
Normal file
278
veejay-ng/libel/vj-dv.c
Normal file
@@ -0,0 +1,278 @@
|
|||||||
|
/*
|
||||||
|
* Linux VeeJay
|
||||||
|
*
|
||||||
|
* Copyright(C)2002-2004 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup dvvideo DV Video
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This module provides basic support for decoding and encoding raw DV files
|
||||||
|
*/
|
||||||
|
#include <config.h>
|
||||||
|
#include <libvjmsg/vj-common.h>
|
||||||
|
#ifdef SUPPORT_READ_DV2
|
||||||
|
#include <libdv/dv.h>
|
||||||
|
#include <veejay/defs.h>
|
||||||
|
#include <libel/vj-el.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <libel/vj-dv.h>
|
||||||
|
#include <libel/vj-avcodec.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define NTSC_W 720
|
||||||
|
#define NTSC_H 480
|
||||||
|
#define PAL_W 720
|
||||||
|
#define PAL_H 576
|
||||||
|
#define DV_PAL_SIZE 144000
|
||||||
|
#define DV_NTSC_SIZE 120000
|
||||||
|
#define DV_AUDIO_MAX_SAMPLES 1944
|
||||||
|
|
||||||
|
int is_dv_resolution(int w, int h)
|
||||||
|
{
|
||||||
|
if( h == NTSC_H && w == NTSC_W )
|
||||||
|
return 1;
|
||||||
|
if( h == PAL_H && w == PAL_W )
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* init the dv decoder and decode buffer*/
|
||||||
|
vj_dv_decoder *vj_dv_decoder_init(int quality, int width, int height, int pixel_format)
|
||||||
|
{
|
||||||
|
int dv_q = DV_QUALITY_COLOR;
|
||||||
|
vj_dv_decoder *d = (vj_dv_decoder*)vj_malloc(sizeof(vj_dv_decoder));
|
||||||
|
if(!d) return NULL;
|
||||||
|
d->decoder = dv_decoder_new( 1,1,0 );
|
||||||
|
if( quality == 0 )
|
||||||
|
dv_q = DV_QUALITY_FASTEST;
|
||||||
|
if( quality == 1 )
|
||||||
|
dv_q = DV_QUALITY_BEST;
|
||||||
|
|
||||||
|
d->decoder->quality = dv_q;
|
||||||
|
d->dv_video = (uint8_t*) vj_malloc(sizeof(uint8_t) * width * height * 4);
|
||||||
|
memset( d->dv_video, 0, (width*height*4));
|
||||||
|
d->fmt = pixel_format;
|
||||||
|
d->audio = 0; // audio off
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* init the dv encoder and encode buffer */
|
||||||
|
vj_dv_encoder *vj_dv_init_encoder(void * edl, int pixel_format)
|
||||||
|
{
|
||||||
|
vj_dv_encoder *e = (vj_dv_encoder*) vj_malloc(sizeof(vj_dv_encoder));
|
||||||
|
if(!e) return NULL;
|
||||||
|
e->encoder = dv_encoder_new(0,0,0);
|
||||||
|
e->encoder->isPAL = (vj_el_get_norm(edl) == 'p' ? 1 : 0);
|
||||||
|
e->encoder->is16x9 = (vj_el_get_width(edl) / vj_el_get_height(edl) >= 1.777 ? 1: 0);
|
||||||
|
e->encoder->vlc_encode_passes = 3;
|
||||||
|
e->encoder->static_qno = 0;
|
||||||
|
e->encoder->force_dct = DV_DCT_AUTO;
|
||||||
|
e->fmt = pixel_format;
|
||||||
|
|
||||||
|
e->dv_video =
|
||||||
|
(uint8_t *) vj_malloc(sizeof(uint8_t) *
|
||||||
|
(e->encoder->isPAL ?
|
||||||
|
DV_PAL_SIZE : DV_NTSC_SIZE));
|
||||||
|
memset( e->dv_video, 0 ,
|
||||||
|
(e->encoder->isPAL ? DV_PAL_SIZE: DV_NTSC_SIZE ) );
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* encode frame to dv format, dv frame will be in output_buf */
|
||||||
|
int vj_dv_encode_frame(vj_dv_encoder *encoder, uint8_t *input_buf[3], uint8_t *output_buf)
|
||||||
|
{
|
||||||
|
|
||||||
|
time_t now = time(NULL);
|
||||||
|
uint8_t *pixels[3];
|
||||||
|
int w=0; int h = 0;
|
||||||
|
if (!input_buf)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
pixels[0] = (uint8_t *) encoder->dv_video;
|
||||||
|
|
||||||
|
if (encoder->encoder->isPAL)
|
||||||
|
{
|
||||||
|
h = PAL_H;
|
||||||
|
w = PAL_W;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
h = NTSC_H;
|
||||||
|
w = NTSC_W;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( encoder->fmt == FMT_420)
|
||||||
|
{
|
||||||
|
pixels[1] = (uint8_t *) encoder->dv_video + (w * h);
|
||||||
|
pixels[2] = (uint8_t *) encoder->dv_video + (w * h * 5) / 4;
|
||||||
|
yuv420p_to_yuv422(input_buf, encoder->dv_video, w, h );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ // convert 422 planar to packed
|
||||||
|
int off = w * h / 2;
|
||||||
|
pixels[1] = (uint8_t *) encoder->dv_video + (w * h );
|
||||||
|
pixels[2] = (uint8_t *) encoder->dv_video + (w * h) + off;
|
||||||
|
yuv422p_to_yuv422(input_buf,encoder->dv_video,w,h);
|
||||||
|
}
|
||||||
|
|
||||||
|
dv_encode_full_frame( encoder->encoder, pixels, e_dv_color_yuv,
|
||||||
|
output_buf);
|
||||||
|
dv_encode_metadata(output_buf, encoder->encoder->isPAL,
|
||||||
|
encoder->encoder->is16x9, &now, 0);
|
||||||
|
dv_encode_timecode(output_buf, encoder->encoder->isPAL, 0);
|
||||||
|
|
||||||
|
if(encoder->encoder->isPAL) return DV_PAL_SIZE;
|
||||||
|
return DV_NTSC_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void vj_dv_free_encoder(vj_dv_encoder *e)
|
||||||
|
{
|
||||||
|
if(e)
|
||||||
|
{
|
||||||
|
if(e->encoder)
|
||||||
|
dv_encoder_free( e->encoder);
|
||||||
|
if(e->dv_video)
|
||||||
|
free(e->dv_video);
|
||||||
|
free(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void vj_dv_free_decoder(vj_dv_decoder *d) {
|
||||||
|
if(d->decoder)
|
||||||
|
dv_decoder_free( d->decoder );
|
||||||
|
if(d->dv_video)
|
||||||
|
free(d->dv_video);
|
||||||
|
if(d)
|
||||||
|
free(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
void vj_dv_decoder_set_audio(vj_dv_decoder *d, int audio)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void vj_dv_decoder_get_audio(vj_dv_decoder *d, uint8_t *audio_buf)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(!d->audio) return;
|
||||||
|
|
||||||
|
int n_samples = dv_get_num_samples( d->decoder);
|
||||||
|
int channels = dv_get_num_channels( d->decoder );
|
||||||
|
int i,j;
|
||||||
|
int16_t *ch0 = d->audio_buffers[0];
|
||||||
|
int16_t *ch1 = d->audio_buffers[1];
|
||||||
|
// convert short to uint8_t,
|
||||||
|
// interleave audio into single buffer
|
||||||
|
for(i = 0; i < n_samples; i ++ )
|
||||||
|
{
|
||||||
|
*(audio_buf) = ch0[i] & 0xff; //lo
|
||||||
|
*(audio_buf+1) = (ch0[i] >> 8) & 0xff; //hi
|
||||||
|
*(audio_buf+2) = ch1[i] & 0xff; //lo
|
||||||
|
*(audio_buf+3) = (ch1[i] >> 8) & 0xff; //hi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int vj_dv_decode_frame(vj_dv_decoder *d, uint8_t * input_buf, uint8_t * Y,
|
||||||
|
uint8_t * Cb, uint8_t * Cr, int width, int height, int fmt)
|
||||||
|
{
|
||||||
|
|
||||||
|
int pitches[3];
|
||||||
|
|
||||||
|
if (!input_buf)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (dv_parse_header(d->decoder, input_buf) < 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (!((d->decoder->num_dif_seqs == 10)
|
||||||
|
|| (d->decoder->num_dif_seqs == 12)))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
switch(vj_dv_decoder->sampling) {
|
||||||
|
case e_dv_sample_411:fprintf(stderr,"sample 411\n"); break;
|
||||||
|
case e_dv_sample_422:fprintf(stderr,"sample 422\n");break;
|
||||||
|
case e_dv_sample_420:fprintf(stderr,"sample 420\n");break;
|
||||||
|
default: fprintf(stderr,"unknown\n");break;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
if (d->decoder->sampling == e_dv_sample_411 ||
|
||||||
|
d->decoder->sampling == e_dv_sample_422 ||
|
||||||
|
d->decoder->sampling == e_dv_sample_420)
|
||||||
|
{
|
||||||
|
pitches[0] = width * 2;
|
||||||
|
pitches[1] = 0;
|
||||||
|
pitches[2] = 0;
|
||||||
|
uint8_t *pixels[3] = { Y , Cb, Cr };
|
||||||
|
|
||||||
|
dv_decode_full_frame(d->decoder, input_buf,
|
||||||
|
e_dv_color_yuv, pixels, pitches);
|
||||||
|
|
||||||
|
if(fmt == FMT_420)
|
||||||
|
yuy2toyv12(Y, Cb, Cr, d->dv_video, width, height);
|
||||||
|
else
|
||||||
|
yuy2toyv16(Y, Cb, Cr, d->dv_video, width, height);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
pitches[0] = width * 2;
|
||||||
|
pitches[1] = 0;
|
||||||
|
pitches[2] = 0;
|
||||||
|
|
||||||
|
|
||||||
|
if( d->decoder->sampling == e_dv_sample_420 )
|
||||||
|
{
|
||||||
|
uint8_t *pixels[3];
|
||||||
|
pixels[0] = d->dv_video;
|
||||||
|
pixels[1] = d->dv_video + (width * height);
|
||||||
|
pixels[2] = d->dv_video + (width * height * 5)/4;
|
||||||
|
dv_decode_full_frame( d->decoder, input_buf, e_dv_color_yuv,
|
||||||
|
pixels,pitches);
|
||||||
|
if(fmt==FMT_422)
|
||||||
|
yuy2toyv16( Y,Cb,Cr, d->dv_video, width ,height );
|
||||||
|
else
|
||||||
|
yuy2toyv12( Y,Cb,Cr, d->dv_video, width, height );
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( d->decoder->sampling == e_dv_sample_422 )
|
||||||
|
{
|
||||||
|
uint8_t *pixels[3];
|
||||||
|
pixels[0] = d->dv_video;
|
||||||
|
pixels[1] = d->dv_video + (width * height);
|
||||||
|
pixels[2] = d->dv_video + (width * height) + (width * height/2);
|
||||||
|
dv_decode_full_frame( d->decoder, input_buf, e_dv_color_yuv,
|
||||||
|
pixels,pitches);
|
||||||
|
|
||||||
|
if(fmt==FMT_422)
|
||||||
|
yuy2toyv16( Y,Cb,Cr, d->dv_video, width ,height );
|
||||||
|
else
|
||||||
|
yuy2toyv12( Y,Cb,Cr, d->dv_video, width, height );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
59
veejay-ng/libel/vj-dv.h
Normal file
59
veejay-ng/libel/vj-dv.h
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* Linux VeeJay
|
||||||
|
*
|
||||||
|
* Copyright(C)2002-2004 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
#ifndef VJ_DV_H
|
||||||
|
#define VJ_DV_H
|
||||||
|
#include <config.h>
|
||||||
|
#ifdef SUPPORT_READ_DV2
|
||||||
|
#include <libdv/dv.h>
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
dv_decoder_t *decoder;
|
||||||
|
uint8_t *dv_video;
|
||||||
|
int fmt;
|
||||||
|
int audio;
|
||||||
|
int16_t **audio_buffers;
|
||||||
|
} vj_dv_decoder;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
dv_encoder_t *encoder;
|
||||||
|
uint8_t *dv_video;
|
||||||
|
int fmt;
|
||||||
|
} vj_dv_encoder;
|
||||||
|
|
||||||
|
|
||||||
|
vj_dv_decoder *vj_dv_decoder_init(int quality,int width, int height, int pixel_format);
|
||||||
|
|
||||||
|
vj_dv_encoder *vj_dv_init_encoder(void * el, int pixel_format);
|
||||||
|
|
||||||
|
void vj_dv_decoder_get_audio(vj_dv_decoder *d, uint8_t *audio_buf);
|
||||||
|
|
||||||
|
|
||||||
|
void vj_dv_decoder_set_audio(vj_dv_decoder *d, int audio);
|
||||||
|
|
||||||
|
|
||||||
|
int vj_dv_decode_frame(vj_dv_decoder *d,uint8_t * in, uint8_t * Y,
|
||||||
|
uint8_t * Cb, uint8_t * Cr, int w, int h, int fmt);
|
||||||
|
|
||||||
|
int vj_dv_encode_frame(vj_dv_encoder *e,uint8_t * in[3], uint8_t * out);
|
||||||
|
void vj_dv_free_encoder(vj_dv_encoder *e);
|
||||||
|
void vj_dv_free_decoder(vj_dv_decoder *d);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
2142
veejay-ng/libel/vj-el.c
Normal file
2142
veejay-ng/libel/vj-el.c
Normal file
File diff suppressed because it is too large
Load Diff
87
veejay-ng/libel/vj-el.h
Normal file
87
veejay-ng/libel/vj-el.h
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
/* veejay - Linux VeeJay
|
||||||
|
* (C) 2002-2004 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
#ifndef VJ_MLT_EL_H
|
||||||
|
#define VJ_MLT_EL_H
|
||||||
|
|
||||||
|
//void *vj_el_init_with_args(char **filenames, int n, int flags, int deinter, int force, char norm, int fmt);
|
||||||
|
|
||||||
|
void *vj_el_open_video_file( const char *filename );
|
||||||
|
|
||||||
|
int vj_el_cache_size();
|
||||||
|
|
||||||
|
void vj_el_prepare(void); // reset cache
|
||||||
|
|
||||||
|
void vj_el_init();
|
||||||
|
|
||||||
|
void vj_el_init_chunk(int n);
|
||||||
|
|
||||||
|
void vj_el_free(void *el);
|
||||||
|
|
||||||
|
int vj_el_get_audio_frame_at(void *el, uint32_t nframe, uint8_t *dst, int speed );
|
||||||
|
|
||||||
|
int vj_el_append_video_file(void *el, char *filename);
|
||||||
|
|
||||||
|
int vj_el_write_void( char *filename, long start, long end, void *el );
|
||||||
|
|
||||||
|
int vj_el_get_video_frame(void *el, long nframe, void *frame);
|
||||||
|
|
||||||
|
int vj_el_get_audio_frame(void *el, uint32_t nframe, uint8_t *dst);
|
||||||
|
|
||||||
|
int vj_el_get_file_fourcc(void *el, int num, char *buf);
|
||||||
|
|
||||||
|
void vj_el_print(void *el);
|
||||||
|
|
||||||
|
void vj_el_frame_cache(int n);
|
||||||
|
|
||||||
|
void vj_el_show_formats(void);
|
||||||
|
|
||||||
|
void vj_el_ref(void *el, int num);
|
||||||
|
|
||||||
|
void vj_el_unref(void *el, int num);
|
||||||
|
|
||||||
|
void *vj_el_dummy(int flags, int deinterlace, int chroma, char norm, int width, int height, float fps, int fmt);
|
||||||
|
|
||||||
|
int vj_el_get_file_entry( void *el,long *start_pos, long *end_pos, long entry );
|
||||||
|
|
||||||
|
void *vj_el_clone(void *el);
|
||||||
|
|
||||||
|
void *vj_el_soft_clone(void *el);
|
||||||
|
|
||||||
|
void vj_el_set_itu601( void *edl , int status );
|
||||||
|
|
||||||
|
void vj_el_set_itu601_preference( int status );
|
||||||
|
|
||||||
|
int vj_el_framelist_clone( void *src, void *dst);
|
||||||
|
|
||||||
|
char *vj_el_write_line_ascii( void *el, int *bytes_written );
|
||||||
|
|
||||||
|
void vj_el_deinit();
|
||||||
|
|
||||||
|
char vj_el_get_norm( void *edl );
|
||||||
|
float vj_el_get_fps(void *edl);
|
||||||
|
int vj_el_get_width( void *edl );
|
||||||
|
int vj_el_get_height( void *edl );
|
||||||
|
int vj_el_get_inter( void *edl );
|
||||||
|
int vj_el_get_audio_rate( void *edl );
|
||||||
|
int vj_el_get_audio_bps( void *edl );
|
||||||
|
int vj_el_get_audio_chans( void *edl );
|
||||||
|
|
||||||
|
int vj_el_match( void *sv, void *edl);
|
||||||
|
|
||||||
|
#endif
|
||||||
147
veejay-ng/libel/vj-mmap.c
Normal file
147
veejay-ng/libel/vj-mmap.c
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
/*
|
||||||
|
* Linux VeeJay
|
||||||
|
*
|
||||||
|
* Copyright(C)2002-2004 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
#include <libel/vj-mmap.h>
|
||||||
|
#include <libvjmsg/vj-common.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <string.h>
|
||||||
|
//#include <valgrind/memcheck.h>
|
||||||
|
#include <libvjmem/vjmem.h>
|
||||||
|
#define PADDED(a,m) ( a > 0 ? (a / m->page_size) * m->page_size : 0)
|
||||||
|
|
||||||
|
/** \defgroup mmap Memory mapped files
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This modules uses mmap() , which can establish a mapping between a process address space and a file.
|
||||||
|
*
|
||||||
|
* This improves file system performance about 10% on my machine, it used currently only for DV Video
|
||||||
|
*/
|
||||||
|
|
||||||
|
void mmap_free(mmap_region_t *map)
|
||||||
|
{
|
||||||
|
if(map)
|
||||||
|
{
|
||||||
|
if(map->map_start) munmap_file(map);
|
||||||
|
}
|
||||||
|
free(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
mmap_region_t * mmap_file(int fd, int offset, int length, int fs)
|
||||||
|
{
|
||||||
|
mmap_region_t *map = (mmap_region_t*) malloc(sizeof( mmap_region_t ));
|
||||||
|
memset( map, 0, sizeof( mmap_region_t ));
|
||||||
|
|
||||||
|
map->fd = fd;
|
||||||
|
map->page_size = getpagesize();
|
||||||
|
map->map_length = length;
|
||||||
|
map->map_start = NULL;
|
||||||
|
map->eof = fs;
|
||||||
|
map->mem_offset = offset;
|
||||||
|
remap_file( map, offset );
|
||||||
|
veejay_msg(VEEJAY_MSG_DEBUG, "Memory map region is %f Mb",
|
||||||
|
( (float) length / 1048576.0 ) );
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int is_mapped( mmap_region_t *map, int offset, int size )
|
||||||
|
{
|
||||||
|
// check if memory is in mapped region
|
||||||
|
off_t real_offset = PADDED( offset, map );
|
||||||
|
size_t padding = offset % map->page_size;
|
||||||
|
size_t real_size = padding + size + real_offset;
|
||||||
|
|
||||||
|
long rel_o = (map->mem_offset > 0 ? offset - map->mem_offset : offset );
|
||||||
|
|
||||||
|
if( (rel_o + size) > map->map_length )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( real_offset >= map->start_region &&
|
||||||
|
real_offset + size <= map->end_region )
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int remap_file( mmap_region_t *map, int offset )
|
||||||
|
{
|
||||||
|
size_t padding = offset % map->page_size;
|
||||||
|
size_t new_length = map->map_length;
|
||||||
|
size_t real_length = 0;
|
||||||
|
off_t real_offset = PADDED( offset, map );
|
||||||
|
|
||||||
|
real_length = (padding + new_length);
|
||||||
|
if( real_length > map->eof )
|
||||||
|
{
|
||||||
|
real_length = PADDED(map->eof ,map);
|
||||||
|
}
|
||||||
|
if(map->map_start != NULL)
|
||||||
|
{
|
||||||
|
munmap_file( map );
|
||||||
|
}
|
||||||
|
|
||||||
|
map->mem_offset = offset;
|
||||||
|
map->map_start = mmap( 0, real_length, PROT_READ, MAP_SHARED, map->fd, real_offset );
|
||||||
|
if( map->map_start == MAP_FAILED)
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "mmap error %s", strerror(errno));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
map->data_start = map->map_start + padding;
|
||||||
|
|
||||||
|
map->start_region = real_offset;
|
||||||
|
map->end_region = real_length + real_offset;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int munmap_file( mmap_region_t *map )
|
||||||
|
{
|
||||||
|
if(map->map_start == NULL)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
int n = munmap( map->map_start, map->map_length );
|
||||||
|
if(n==-1)
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "leaving garbage %s",
|
||||||
|
strerror(errno));
|
||||||
|
}
|
||||||
|
map->map_start = NULL;
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
int mmap_read( mmap_region_t *map,int offset, int bytes, uint8_t *buf )
|
||||||
|
{
|
||||||
|
size_t padding = offset % map->page_size;
|
||||||
|
if( !is_mapped( map, offset, bytes ))
|
||||||
|
{
|
||||||
|
remap_file( map, offset );
|
||||||
|
}
|
||||||
|
|
||||||
|
int rel_offset = (map->mem_offset > 0 ? offset - map->mem_offset : offset );
|
||||||
|
|
||||||
|
uint8_t *d1 = map->data_start + rel_offset;
|
||||||
|
veejay_memcpy( buf, d1, bytes );
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
53
veejay-ng/libel/vj-mmap.h
Normal file
53
veejay-ng/libel/vj-mmap.h
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Linux VeeJay
|
||||||
|
*
|
||||||
|
* Copyright(C)2002-2004 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
#ifndef VJ_MMAP_H
|
||||||
|
#define VJ_MMAP_H
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
void *map_start; /* result of mmap() */
|
||||||
|
void *data_start; /* start of data */
|
||||||
|
uint64_t start_region;
|
||||||
|
uint64_t end_region;
|
||||||
|
off_t mem_offset; /* start of image */
|
||||||
|
int fd; /* file descriptor */
|
||||||
|
size_t page_size; /* page size */
|
||||||
|
size_t map_length; /* requested map size */
|
||||||
|
long eof; /* file size */
|
||||||
|
} mmap_region_t;
|
||||||
|
|
||||||
|
// map file portion to memory, return mapped region
|
||||||
|
mmap_region_t * mmap_file(int fd, int offset, int length, int fs);
|
||||||
|
|
||||||
|
// see if requested boundaries is mapped in memory
|
||||||
|
int is_mapped( mmap_region_t *map, int offset, int size );
|
||||||
|
|
||||||
|
// remap a portion of a file in memory
|
||||||
|
int remap_file( mmap_region_t *map, int offset );
|
||||||
|
|
||||||
|
// unmap memory
|
||||||
|
int munmap_file( mmap_region_t *map );
|
||||||
|
|
||||||
|
void mmap_free(mmap_region_t *map );
|
||||||
|
|
||||||
|
int mmap_read( mmap_region_t *map, int offset, int bytes, uint8_t *buf);
|
||||||
|
|
||||||
|
#endif
|
||||||
6
veejay-ng/libhash/Makefile.am
Normal file
6
veejay-ng/libhash/Makefile.am
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Makefile for veejay
|
||||||
|
INCLUDES = -I$(top_srcdir) -I$(includedir)
|
||||||
|
HASH_LIB_FILE = libhash.la
|
||||||
|
noinst_LTLIBRARIES = $(HASH_LIB_FILE)
|
||||||
|
libhash_la_SOURCES = hash.c
|
||||||
|
|
||||||
503
veejay-ng/libhash/Makefile.in
Normal file
503
veejay-ng/libhash/Makefile.in
Normal file
@@ -0,0 +1,503 @@
|
|||||||
|
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
SOURCES = $(libhash_la_SOURCES)
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
target_triplet = @target@
|
||||||
|
subdir = libhash
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||||
|
libhash_la_LIBADD =
|
||||||
|
am_libhash_la_OBJECTS = hash.lo
|
||||||
|
libhash_la_OBJECTS = $(am_libhash_la_OBJECTS)
|
||||||
|
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(libhash_la_SOURCES)
|
||||||
|
DIST_SOURCES = $(libhash_la_SOURCES)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
ALTIVEC_CFLAGS = @ALTIVEC_CFLAGS@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AS = @AS@
|
||||||
|
ASFLAGS = @ASFLAGS@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCAS = @CCAS@
|
||||||
|
CCASFLAGS = @CCASFLAGS@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
FFLAGS = @FFLAGS@
|
||||||
|
FFMPEG_AVCODEC_CFLAGS = @FFMPEG_AVCODEC_CFLAGS@
|
||||||
|
FFMPEG_AVCODEC_LIBS = @FFMPEG_AVCODEC_LIBS@
|
||||||
|
FFMPEG_AVFORMAT_CFLAGS = @FFMPEG_AVFORMAT_CFLAGS@
|
||||||
|
FFMPEG_AVFORMAT_LIBS = @FFMPEG_AVFORMAT_LIBS@
|
||||||
|
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||||
|
GLIB_CONFIG = @GLIB_CONFIG@
|
||||||
|
GLIB_LIBS = @GLIB_LIBS@
|
||||||
|
GL_CFLAGS = @GL_CFLAGS@
|
||||||
|
GL_LIBS = @GL_LIBS@
|
||||||
|
HAVE_ALTIVEC_FALSE = @HAVE_ALTIVEC_FALSE@
|
||||||
|
HAVE_ALTIVEC_TRUE = @HAVE_ALTIVEC_TRUE@
|
||||||
|
HAVE_ASM_MMX2_FALSE = @HAVE_ASM_MMX2_FALSE@
|
||||||
|
HAVE_ASM_MMX2_TRUE = @HAVE_ASM_MMX2_TRUE@
|
||||||
|
HAVE_ASM_MMX_FALSE = @HAVE_ASM_MMX_FALSE@
|
||||||
|
HAVE_ASM_MMX_TRUE = @HAVE_ASM_MMX_TRUE@
|
||||||
|
HAVE_ASM_NASM_FALSE = @HAVE_ASM_NASM_FALSE@
|
||||||
|
HAVE_ASM_NASM_TRUE = @HAVE_ASM_NASM_TRUE@
|
||||||
|
HAVE_ASM_SSE2_FALSE = @HAVE_ASM_SSE2_FALSE@
|
||||||
|
HAVE_ASM_SSE2_TRUE = @HAVE_ASM_SSE2_TRUE@
|
||||||
|
HAVE_ASM_SSE_FALSE = @HAVE_ASM_SSE_FALSE@
|
||||||
|
HAVE_ASM_SSE_TRUE = @HAVE_ASM_SSE_TRUE@
|
||||||
|
HAVE_DL_DLOPEN_FALSE = @HAVE_DL_DLOPEN_FALSE@
|
||||||
|
HAVE_DL_DLOPEN_TRUE = @HAVE_DL_DLOPEN_TRUE@
|
||||||
|
HAVE_JACK_FALSE = @HAVE_JACK_FALSE@
|
||||||
|
HAVE_JACK_TRUE = @HAVE_JACK_TRUE@
|
||||||
|
HAVE_MMX2_FALSE = @HAVE_MMX2_FALSE@
|
||||||
|
HAVE_MMX2_TRUE = @HAVE_MMX2_TRUE@
|
||||||
|
HAVE_MMX_FALSE = @HAVE_MMX_FALSE@
|
||||||
|
HAVE_MMX_TRUE = @HAVE_MMX_TRUE@
|
||||||
|
HAVE_PPCCPU_FALSE = @HAVE_PPCCPU_FALSE@
|
||||||
|
HAVE_PPCCPU_TRUE = @HAVE_PPCCPU_TRUE@
|
||||||
|
HAVE_SDL_FALSE = @HAVE_SDL_FALSE@
|
||||||
|
HAVE_SDL_TRUE = @HAVE_SDL_TRUE@
|
||||||
|
HAVE_SSE2_FALSE = @HAVE_SSE2_FALSE@
|
||||||
|
HAVE_SSE2_TRUE = @HAVE_SSE2_TRUE@
|
||||||
|
HAVE_SSE_FALSE = @HAVE_SSE_FALSE@
|
||||||
|
HAVE_SSE_TRUE = @HAVE_SSE_TRUE@
|
||||||
|
HAVE_V4L_FALSE = @HAVE_V4L_FALSE@
|
||||||
|
HAVE_V4L_TRUE = @HAVE_V4L_TRUE@
|
||||||
|
HAVE_X86CPU_FALSE = @HAVE_X86CPU_FALSE@
|
||||||
|
HAVE_X86CPU_TRUE = @HAVE_X86CPU_TRUE@
|
||||||
|
HAVE_XML2_FALSE = @HAVE_XML2_FALSE@
|
||||||
|
HAVE_XML2_TRUE = @HAVE_XML2_TRUE@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBDV_CFLAGS = @LIBDV_CFLAGS@
|
||||||
|
LIBDV_LIBS = @LIBDV_LIBS@
|
||||||
|
LIBGETOPT_LIB = @LIBGETOPT_LIB@
|
||||||
|
LIBM_LIBS = @LIBM_LIBS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
LT_AGE = @LT_AGE@
|
||||||
|
LT_CURRENT = @LT_CURRENT@
|
||||||
|
LT_RELEASE = @LT_RELEASE@
|
||||||
|
LT_REVISION = @LT_REVISION@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MJPEGTOOLS_CFLAGS = @MJPEGTOOLS_CFLAGS@
|
||||||
|
MJPEGTOOLS_LIBS = @MJPEGTOOLS_LIBS@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PROGRAM_NOPIC = @PROGRAM_NOPIC@
|
||||||
|
PTHREAD_LIBS = @PTHREAD_LIBS@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SDL_CFLAGS = @SDL_CFLAGS@
|
||||||
|
SDL_CONFIG = @SDL_CONFIG@
|
||||||
|
SDL_LIBS = @SDL_LIBS@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
SUPPORT_READ_DV2_FALSE = @SUPPORT_READ_DV2_FALSE@
|
||||||
|
SUPPORT_READ_DV2_TRUE = @SUPPORT_READ_DV2_TRUE@
|
||||||
|
V4LCONF_LIBS = @V4LCONF_LIBS@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
XML2_CONFIG = @XML2_CONFIG@
|
||||||
|
XML_CPPFLAGS = @XML_CPPFLAGS@
|
||||||
|
XML_LIBS = @XML_LIBS@
|
||||||
|
ac_ct_AR = @ac_ct_AR@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||||
|
ac_ct_STRIP = @ac_ct_STRIP@
|
||||||
|
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target = @target@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
target_cpu = @target_cpu@
|
||||||
|
target_os = @target_os@
|
||||||
|
target_vendor = @target_vendor@
|
||||||
|
|
||||||
|
# Makefile for veejay
|
||||||
|
INCLUDES = -I$(top_srcdir) -I$(includedir)
|
||||||
|
HASH_LIB_FILE = libhash.la
|
||||||
|
noinst_LTLIBRARIES = $(HASH_LIB_FILE)
|
||||||
|
libhash_la_SOURCES = hash.c
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .c .lo .o .obj
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libhash/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu libhash/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
clean-noinstLTLIBRARIES:
|
||||||
|
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||||
|
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
|
rm -f "$${dir}/so_locations"; \
|
||||||
|
done
|
||||||
|
libhash.la: $(libhash_la_OBJECTS) $(libhash_la_DEPENDENCIES)
|
||||||
|
$(LINK) $(libhash_la_LDFLAGS) $(libhash_la_OBJECTS) $(libhash_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Plo@am__quote@
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||||
|
|
||||||
|
.c.obj:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
|
uninstall-info-am:
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$tags $$unique; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$tags $$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(LTLIBRARIES)
|
||||||
|
installdirs:
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
|
||||||
|
mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||||
|
clean-libtool clean-noinstLTLIBRARIES ctags distclean \
|
||||||
|
distclean-compile distclean-generic distclean-libtool \
|
||||||
|
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am install-man \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
|
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||||
|
pdf pdf-am ps ps-am tags uninstall uninstall-am \
|
||||||
|
uninstall-info-am
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
1076
veejay-ng/libhash/hash.c
Normal file
1076
veejay-ng/libhash/hash.c
Normal file
File diff suppressed because it is too large
Load Diff
240
veejay-ng/libhash/hash.h
Normal file
240
veejay-ng/libhash/hash.h
Normal file
@@ -0,0 +1,240 @@
|
|||||||
|
/*
|
||||||
|
* Hash Table Data Type
|
||||||
|
* Copyright (C) 1997 Kaz Kylheku <kaz@ashi.footprints.net>
|
||||||
|
*
|
||||||
|
* Free Software License:
|
||||||
|
*
|
||||||
|
* All rights are reserved by the author, with the following exceptions:
|
||||||
|
* Permission is granted to freely reproduce and distribute this software,
|
||||||
|
* possibly in exchange for a fee, provided that this copyright notice appears
|
||||||
|
* intact. Permission is also granted to adapt this software to produce
|
||||||
|
* derivative works, as long as the modified versions carry this copyright
|
||||||
|
* notice and additional notices stating that the work has been modified.
|
||||||
|
* This source code may be translated into executable form and incorporated
|
||||||
|
* into proprietary software; there is no requirement for such software to
|
||||||
|
* contain a copyright notice related to this source.
|
||||||
|
*
|
||||||
|
* $Id: hash.h,v 1.1.1.1 2004/10/27 23:48:59 niels Exp $
|
||||||
|
* $Name: $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef HASH_H
|
||||||
|
#define HASH_H
|
||||||
|
|
||||||
|
#include <limits.h>
|
||||||
|
#ifdef KAZLIB_SIDEEFFECT_DEBUG
|
||||||
|
#include "sfx.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Blurb for inclusion into C++ translation units
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef unsigned long hashcount_t;
|
||||||
|
#define HASHCOUNT_T_MAX ULONG_MAX
|
||||||
|
|
||||||
|
typedef unsigned long hash_val_t;
|
||||||
|
#define HASH_VAL_T_MAX ULONG_MAX
|
||||||
|
|
||||||
|
extern int hash_val_t_bit;
|
||||||
|
|
||||||
|
#ifndef HASH_VAL_T_BIT
|
||||||
|
#define HASH_VAL_T_BIT ((int) hash_val_t_bit)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Hash chain node structure.
|
||||||
|
* Notes:
|
||||||
|
* 1. This preprocessing directive is for debugging purposes. The effect is
|
||||||
|
* that if the preprocessor symbol KAZLIB_OPAQUE_DEBUG is defined prior to the
|
||||||
|
* inclusion of this header, then the structure shall be declared as having
|
||||||
|
* the single member int __OPAQUE__. This way, any attempts by the
|
||||||
|
* client code to violate the principles of information hiding (by accessing
|
||||||
|
* the structure directly) can be diagnosed at translation time. However,
|
||||||
|
* note the resulting compiled unit is not suitable for linking.
|
||||||
|
* 2. This is a pointer to the next node in the chain. In the last node of a
|
||||||
|
* chain, this pointer is null.
|
||||||
|
* 3. The key is a pointer to some user supplied data that contains a unique
|
||||||
|
* identifier for each hash node in a given table. The interpretation of
|
||||||
|
* the data is up to the user. When creating or initializing a hash table,
|
||||||
|
* the user must supply a pointer to a function for comparing two keys,
|
||||||
|
* and a pointer to a function for hashing a key into a numeric value.
|
||||||
|
* 4. The value is a user-supplied pointer to void which may refer to
|
||||||
|
* any data object. It is not interpreted in any way by the hashing
|
||||||
|
* module.
|
||||||
|
* 5. The hashed key is stored in each node so that we don't have to rehash
|
||||||
|
* each key when the table must grow or shrink.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct hnode_t {
|
||||||
|
#if defined(HASH_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG) /* 1 */
|
||||||
|
struct hnode_t *hash_next; /* 2 */
|
||||||
|
const void *hash_key; /* 3 */
|
||||||
|
void *hash_data; /* 4 */
|
||||||
|
hash_val_t hash_hkey; /* 5 */
|
||||||
|
#else
|
||||||
|
int hash_dummy;
|
||||||
|
#endif
|
||||||
|
} hnode_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The comparison function pointer type. A comparison function takes two keys
|
||||||
|
* and produces a value of -1 if the left key is less than the right key, a
|
||||||
|
* value of 0 if the keys are equal, and a value of 1 if the left key is
|
||||||
|
* greater than the right key.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef int (*hash_comp_t)(const void *, const void *);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The hashing function performs some computation on a key and produces an
|
||||||
|
* integral value of type hash_val_t based on that key. For best results, the
|
||||||
|
* function should have a good randomness properties in *all* significant bits
|
||||||
|
* over the set of keys that are being inserted into a given hash table. In
|
||||||
|
* particular, the most significant bits of hash_val_t are most significant to
|
||||||
|
* the hash module. Only as the hash table expands are less significant bits
|
||||||
|
* examined. Thus a function that has good distribution in its upper bits but
|
||||||
|
* not lower is preferrable to one that has poor distribution in the upper bits
|
||||||
|
* but not the lower ones.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef hash_val_t (*hash_fun_t)(const void *);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* allocator functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef hnode_t *(*hnode_alloc_t)(void *);
|
||||||
|
typedef void (*hnode_free_t)(hnode_t *, void *);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is the hash table control structure. It keeps track of information
|
||||||
|
* about a hash table, as well as the hash table itself.
|
||||||
|
* Notes:
|
||||||
|
* 1. Pointer to the hash table proper. The table is an array of pointers to
|
||||||
|
* hash nodes (of type hnode_t). If the table is empty, every element of
|
||||||
|
* this table is a null pointer. A non-null entry points to the first
|
||||||
|
* element of a chain of nodes.
|
||||||
|
* 2. This member keeps track of the size of the hash table---that is, the
|
||||||
|
* number of chain pointers.
|
||||||
|
* 3. The count member maintains the number of elements that are presently
|
||||||
|
* in the hash table.
|
||||||
|
* 4. The maximum count is the greatest number of nodes that can populate this
|
||||||
|
* table. If the table contains this many nodes, no more can be inserted,
|
||||||
|
* and the hash_isfull() function returns true.
|
||||||
|
* 5. The high mark is a population threshold, measured as a number of nodes,
|
||||||
|
* which, if exceeded, will trigger a table expansion. Only dynamic hash
|
||||||
|
* tables are subject to this expansion.
|
||||||
|
* 6. The low mark is a minimum population threshold, measured as a number of
|
||||||
|
* nodes. If the table population drops below this value, a table shrinkage
|
||||||
|
* will occur. Only dynamic tables are subject to this reduction. No table
|
||||||
|
* will shrink beneath a certain absolute minimum number of nodes.
|
||||||
|
* 7. This is the a pointer to the hash table's comparison function. The
|
||||||
|
* function is set once at initialization or creation time.
|
||||||
|
* 8. Pointer to the table's hashing function, set once at creation or
|
||||||
|
* initialization time.
|
||||||
|
* 9. The current hash table mask. If the size of the hash table is 2^N,
|
||||||
|
* this value has its low N bits set to 1, and the others clear. It is used
|
||||||
|
* to select bits from the result of the hashing function to compute an
|
||||||
|
* index into the table.
|
||||||
|
* 10. A flag which indicates whether the table is to be dynamically resized. It
|
||||||
|
* is set to 1 in dynamically allocated tables, 0 in tables that are
|
||||||
|
* statically allocated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct hash_t {
|
||||||
|
#if defined(HASH_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
|
||||||
|
struct hnode_t **hash_table; /* 1 */
|
||||||
|
hashcount_t hash_nchains; /* 2 */
|
||||||
|
hashcount_t hash_nodecount; /* 3 */
|
||||||
|
hashcount_t hash_maxcount; /* 4 */
|
||||||
|
hashcount_t hash_highmark; /* 5 */
|
||||||
|
hashcount_t hash_lowmark; /* 6 */
|
||||||
|
hash_comp_t hash_compare; /* 7 */
|
||||||
|
hash_fun_t hash_function; /* 8 */
|
||||||
|
hnode_alloc_t hash_allocnode;
|
||||||
|
hnode_free_t hash_freenode;
|
||||||
|
void *hash_context;
|
||||||
|
hash_val_t hash_mask; /* 9 */
|
||||||
|
int hash_dynamic; /* 10 */
|
||||||
|
#else
|
||||||
|
int hash_dummy;
|
||||||
|
#endif
|
||||||
|
} hash_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Hash scanner structure, used for traversals of the data structure.
|
||||||
|
* Notes:
|
||||||
|
* 1. Pointer to the hash table that is being traversed.
|
||||||
|
* 2. Reference to the current chain in the table being traversed (the chain
|
||||||
|
* that contains the next node that shall be retrieved).
|
||||||
|
* 3. Pointer to the node that will be retrieved by the subsequent call to
|
||||||
|
* hash_scan_next().
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct hscan_t {
|
||||||
|
#if defined(HASH_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
|
||||||
|
hash_t *hash_table; /* 1 */
|
||||||
|
hash_val_t hash_chain; /* 2 */
|
||||||
|
hnode_t *hash_next; /* 3 */
|
||||||
|
#else
|
||||||
|
int hash_dummy;
|
||||||
|
#endif
|
||||||
|
} hscan_t;
|
||||||
|
|
||||||
|
extern hash_t *hash_create(hashcount_t, hash_comp_t, hash_fun_t);
|
||||||
|
extern void hash_set_allocator(hash_t *, hnode_alloc_t, hnode_free_t, void *);
|
||||||
|
extern void hash_destroy(hash_t *);
|
||||||
|
extern void hash_free_nodes(hash_t *);
|
||||||
|
extern void hash_free(hash_t *);
|
||||||
|
extern hash_t *hash_init(hash_t *, hashcount_t, hash_comp_t,
|
||||||
|
hash_fun_t, hnode_t **, hashcount_t);
|
||||||
|
extern void hash_insert(hash_t *, hnode_t *, const void *);
|
||||||
|
extern hnode_t *hash_lookup(hash_t *, const void *);
|
||||||
|
extern hnode_t *hash_delete(hash_t *, hnode_t *);
|
||||||
|
extern int hash_alloc_insert(hash_t *, const void *, void *);
|
||||||
|
extern void hash_delete_free(hash_t *, hnode_t *);
|
||||||
|
|
||||||
|
extern void hnode_put(hnode_t *, void *);
|
||||||
|
extern void *hnode_get(hnode_t *);
|
||||||
|
extern const void *hnode_getkey(hnode_t *);
|
||||||
|
extern hashcount_t hash_count(hash_t *);
|
||||||
|
extern hashcount_t hash_size(hash_t *);
|
||||||
|
|
||||||
|
extern int hash_isfull(hash_t *);
|
||||||
|
extern int hash_isempty(hash_t *);
|
||||||
|
|
||||||
|
extern void hash_scan_begin(hscan_t *, hash_t *);
|
||||||
|
extern hnode_t *hash_scan_next(hscan_t *);
|
||||||
|
extern hnode_t *hash_scan_delete(hash_t *, hnode_t *);
|
||||||
|
extern void hash_scan_delfree(hash_t *, hnode_t *);
|
||||||
|
|
||||||
|
extern int hash_verify(hash_t *);
|
||||||
|
|
||||||
|
extern hnode_t *hnode_create(void *);
|
||||||
|
extern hnode_t *hnode_init(hnode_t *, void *);
|
||||||
|
extern void hnode_destroy(hnode_t *);
|
||||||
|
|
||||||
|
#if defined(HASH_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
|
||||||
|
#ifdef KAZLIB_SIDEEFFECT_DEBUG
|
||||||
|
#define hash_isfull(H) (SFX_CHECK(H)->hash_nodecount == (H)->hash_maxcount)
|
||||||
|
#else
|
||||||
|
#define hash_isfull(H) ((H)->hash_nodecount == (H)->hash_maxcount)
|
||||||
|
#endif
|
||||||
|
#define hash_isempty(H) ((H)->hash_nodecount == 0)
|
||||||
|
#define hash_count(H) ((H)->hash_nodecount)
|
||||||
|
#define hash_size(H) ((H)->hash_nchains)
|
||||||
|
#define hnode_get(N) ((N)->hash_data)
|
||||||
|
#define hnode_getkey(N) ((N)->hash_key)
|
||||||
|
#define hnode_put(N, V) ((N)->hash_data = (V))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
10
veejay-ng/libplugger/Makefile.am
Normal file
10
veejay-ng/libplugger/Makefile.am
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
INCLUDES = -I$(top_srcdir)/libplugger -I$(includedir) -I$(top_srcdir)/libhash -I$(top_srcdir)/libvevo ${FFMPEG_CFLAGS}
|
||||||
|
|
||||||
|
AM_CFLAGS = $(CFLAGS) -freg-struct-return
|
||||||
|
|
||||||
|
LIBVJPLUG_LIB_FILE = libvjplug.la
|
||||||
|
noinst_LTLIBRARIES = $(LIBVJPLUG_LIB_FILE)
|
||||||
|
|
||||||
|
libvjplug_la_SOURCES = utility.c freeframe-loader.c frei0r-loader.c livido-loader.c plugload.c
|
||||||
|
|
||||||
509
veejay-ng/libplugger/Makefile.in
Normal file
509
veejay-ng/libplugger/Makefile.in
Normal file
@@ -0,0 +1,509 @@
|
|||||||
|
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
SOURCES = $(libvjplug_la_SOURCES)
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
target_triplet = @target@
|
||||||
|
subdir = libplugger
|
||||||
|
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||||
|
libvjplug_la_LIBADD =
|
||||||
|
am_libvjplug_la_OBJECTS = utility.lo freeframe-loader.lo \
|
||||||
|
frei0r-loader.lo livido-loader.lo plugload.lo
|
||||||
|
libvjplug_la_OBJECTS = $(am_libvjplug_la_OBJECTS)
|
||||||
|
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(libvjplug_la_SOURCES)
|
||||||
|
DIST_SOURCES = $(libvjplug_la_SOURCES)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
ALTIVEC_CFLAGS = @ALTIVEC_CFLAGS@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AS = @AS@
|
||||||
|
ASFLAGS = @ASFLAGS@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCAS = @CCAS@
|
||||||
|
CCASFLAGS = @CCASFLAGS@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
FFLAGS = @FFLAGS@
|
||||||
|
FFMPEG_AVCODEC_CFLAGS = @FFMPEG_AVCODEC_CFLAGS@
|
||||||
|
FFMPEG_AVCODEC_LIBS = @FFMPEG_AVCODEC_LIBS@
|
||||||
|
FFMPEG_AVFORMAT_CFLAGS = @FFMPEG_AVFORMAT_CFLAGS@
|
||||||
|
FFMPEG_AVFORMAT_LIBS = @FFMPEG_AVFORMAT_LIBS@
|
||||||
|
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||||
|
GLIB_CONFIG = @GLIB_CONFIG@
|
||||||
|
GLIB_LIBS = @GLIB_LIBS@
|
||||||
|
GL_CFLAGS = @GL_CFLAGS@
|
||||||
|
GL_LIBS = @GL_LIBS@
|
||||||
|
HAVE_ALTIVEC_FALSE = @HAVE_ALTIVEC_FALSE@
|
||||||
|
HAVE_ALTIVEC_TRUE = @HAVE_ALTIVEC_TRUE@
|
||||||
|
HAVE_ASM_MMX2_FALSE = @HAVE_ASM_MMX2_FALSE@
|
||||||
|
HAVE_ASM_MMX2_TRUE = @HAVE_ASM_MMX2_TRUE@
|
||||||
|
HAVE_ASM_MMX_FALSE = @HAVE_ASM_MMX_FALSE@
|
||||||
|
HAVE_ASM_MMX_TRUE = @HAVE_ASM_MMX_TRUE@
|
||||||
|
HAVE_ASM_NASM_FALSE = @HAVE_ASM_NASM_FALSE@
|
||||||
|
HAVE_ASM_NASM_TRUE = @HAVE_ASM_NASM_TRUE@
|
||||||
|
HAVE_ASM_SSE2_FALSE = @HAVE_ASM_SSE2_FALSE@
|
||||||
|
HAVE_ASM_SSE2_TRUE = @HAVE_ASM_SSE2_TRUE@
|
||||||
|
HAVE_ASM_SSE_FALSE = @HAVE_ASM_SSE_FALSE@
|
||||||
|
HAVE_ASM_SSE_TRUE = @HAVE_ASM_SSE_TRUE@
|
||||||
|
HAVE_DL_DLOPEN_FALSE = @HAVE_DL_DLOPEN_FALSE@
|
||||||
|
HAVE_DL_DLOPEN_TRUE = @HAVE_DL_DLOPEN_TRUE@
|
||||||
|
HAVE_JACK_FALSE = @HAVE_JACK_FALSE@
|
||||||
|
HAVE_JACK_TRUE = @HAVE_JACK_TRUE@
|
||||||
|
HAVE_MMX2_FALSE = @HAVE_MMX2_FALSE@
|
||||||
|
HAVE_MMX2_TRUE = @HAVE_MMX2_TRUE@
|
||||||
|
HAVE_MMX_FALSE = @HAVE_MMX_FALSE@
|
||||||
|
HAVE_MMX_TRUE = @HAVE_MMX_TRUE@
|
||||||
|
HAVE_PPCCPU_FALSE = @HAVE_PPCCPU_FALSE@
|
||||||
|
HAVE_PPCCPU_TRUE = @HAVE_PPCCPU_TRUE@
|
||||||
|
HAVE_SDL_FALSE = @HAVE_SDL_FALSE@
|
||||||
|
HAVE_SDL_TRUE = @HAVE_SDL_TRUE@
|
||||||
|
HAVE_SSE2_FALSE = @HAVE_SSE2_FALSE@
|
||||||
|
HAVE_SSE2_TRUE = @HAVE_SSE2_TRUE@
|
||||||
|
HAVE_SSE_FALSE = @HAVE_SSE_FALSE@
|
||||||
|
HAVE_SSE_TRUE = @HAVE_SSE_TRUE@
|
||||||
|
HAVE_V4L_FALSE = @HAVE_V4L_FALSE@
|
||||||
|
HAVE_V4L_TRUE = @HAVE_V4L_TRUE@
|
||||||
|
HAVE_X86CPU_FALSE = @HAVE_X86CPU_FALSE@
|
||||||
|
HAVE_X86CPU_TRUE = @HAVE_X86CPU_TRUE@
|
||||||
|
HAVE_XML2_FALSE = @HAVE_XML2_FALSE@
|
||||||
|
HAVE_XML2_TRUE = @HAVE_XML2_TRUE@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBDV_CFLAGS = @LIBDV_CFLAGS@
|
||||||
|
LIBDV_LIBS = @LIBDV_LIBS@
|
||||||
|
LIBGETOPT_LIB = @LIBGETOPT_LIB@
|
||||||
|
LIBM_LIBS = @LIBM_LIBS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
LT_AGE = @LT_AGE@
|
||||||
|
LT_CURRENT = @LT_CURRENT@
|
||||||
|
LT_RELEASE = @LT_RELEASE@
|
||||||
|
LT_REVISION = @LT_REVISION@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MJPEGTOOLS_CFLAGS = @MJPEGTOOLS_CFLAGS@
|
||||||
|
MJPEGTOOLS_LIBS = @MJPEGTOOLS_LIBS@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PROGRAM_NOPIC = @PROGRAM_NOPIC@
|
||||||
|
PTHREAD_LIBS = @PTHREAD_LIBS@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SDL_CFLAGS = @SDL_CFLAGS@
|
||||||
|
SDL_CONFIG = @SDL_CONFIG@
|
||||||
|
SDL_LIBS = @SDL_LIBS@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
SUPPORT_READ_DV2_FALSE = @SUPPORT_READ_DV2_FALSE@
|
||||||
|
SUPPORT_READ_DV2_TRUE = @SUPPORT_READ_DV2_TRUE@
|
||||||
|
V4LCONF_LIBS = @V4LCONF_LIBS@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
XML2_CONFIG = @XML2_CONFIG@
|
||||||
|
XML_CPPFLAGS = @XML_CPPFLAGS@
|
||||||
|
XML_LIBS = @XML_LIBS@
|
||||||
|
ac_ct_AR = @ac_ct_AR@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||||
|
ac_ct_STRIP = @ac_ct_STRIP@
|
||||||
|
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target = @target@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
target_cpu = @target_cpu@
|
||||||
|
target_os = @target_os@
|
||||||
|
target_vendor = @target_vendor@
|
||||||
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
INCLUDES = -I$(top_srcdir)/libplugger -I$(includedir) -I$(top_srcdir)/libhash -I$(top_srcdir)/libvevo ${FFMPEG_CFLAGS}
|
||||||
|
AM_CFLAGS = $(CFLAGS) -freg-struct-return
|
||||||
|
LIBVJPLUG_LIB_FILE = libvjplug.la
|
||||||
|
noinst_LTLIBRARIES = $(LIBVJPLUG_LIB_FILE)
|
||||||
|
libvjplug_la_SOURCES = utility.c freeframe-loader.c frei0r-loader.c livido-loader.c plugload.c
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .c .lo .o .obj
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libplugger/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu libplugger/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
clean-noinstLTLIBRARIES:
|
||||||
|
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||||
|
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
|
rm -f "$${dir}/so_locations"; \
|
||||||
|
done
|
||||||
|
libvjplug.la: $(libvjplug_la_OBJECTS) $(libvjplug_la_DEPENDENCIES)
|
||||||
|
$(LINK) $(libvjplug_la_LDFLAGS) $(libvjplug_la_OBJECTS) $(libvjplug_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freeframe-loader.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frei0r-loader.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/livido-loader.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugload.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utility.Plo@am__quote@
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||||
|
|
||||||
|
.c.obj:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
|
uninstall-info-am:
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$tags $$unique; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$tags $$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(LTLIBRARIES)
|
||||||
|
installdirs:
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
|
||||||
|
mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||||
|
clean-libtool clean-noinstLTLIBRARIES ctags distclean \
|
||||||
|
distclean-compile distclean-generic distclean-libtool \
|
||||||
|
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am install-man \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
|
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||||
|
pdf pdf-am ps ps-am tags uninstall uninstall-am \
|
||||||
|
uninstall-info-am
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
8
veejay-ng/libplugger/README
Normal file
8
veejay-ng/libplugger/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
libplugger
|
||||||
|
|
||||||
|
a convenience library for veejay to load plugins
|
||||||
|
|
||||||
|
|
||||||
|
#define WITHOUT_FREEFRAME
|
||||||
|
#define WITHOUT_FREIOR
|
||||||
10
veejay-ng/libplugger/default_plug.txt
Normal file
10
veejay-ng/libplugger/default_plug.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
instance PORTPTR
|
||||||
|
handle VOIDPTR dlopen
|
||||||
|
name STRING
|
||||||
|
num_params INT
|
||||||
|
num_inputs INT
|
||||||
|
info PORTPTR filter_templ
|
||||||
|
signature INT plug_type
|
||||||
|
|
||||||
|
|
||||||
51
veejay-ng/libplugger/defs.h
Normal file
51
veejay-ng/libplugger/defs.h
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
#ifndef PLUGDEFS_H
|
||||||
|
#define PLUGDEFS_H
|
||||||
|
#include <veejay/defs.h>
|
||||||
|
#define VEVO_PLUG_LIVIDO 0xffaa
|
||||||
|
#define VEVO_PLUG_FF 0x00ff
|
||||||
|
#define VEVO_PLUG_FR 0xffbb
|
||||||
|
#ifndef HAVE_LIVIDO_PORT_T
|
||||||
|
#define HAVE_LIVIDO_PORT_T
|
||||||
|
typedef vevo_port_t livido_port_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef void (*generic_process_f)(void *instance, double timecode);
|
||||||
|
typedef void (*generic_push_channel_f)(void *instance, int seq_num, int dir, VJFrame *frame);
|
||||||
|
typedef void (*generic_default_values_f)(void *instance, void *fx_values);
|
||||||
|
typedef void (*generic_push_parameter_f)(void *instance, int seq_num, void *value );
|
||||||
|
typedef void (*generic_clone_parameter_f)(void *instance, int seq_num, void *fx_values );
|
||||||
|
typedef void (*generic_reverse_clone_parameter_f)(void *instance, int seq_num, void *fxvalues );
|
||||||
|
typedef void (*generic_deinit_f)(void *instance);
|
||||||
|
typedef void (*generic_init_f)(void *instance, int w, int h );
|
||||||
|
|
||||||
|
extern int livido_property_num_elements(livido_port_t * p, const char *key);
|
||||||
|
extern int livido_property_atom_type(livido_port_t * p, const char *key);
|
||||||
|
extern size_t livido_property_element_size(livido_port_t * p, const char *key,const int idx);
|
||||||
|
extern livido_port_t *livido_port_new(int port_type);
|
||||||
|
extern void livido_port_free(livido_port_t * p);
|
||||||
|
extern int livido_property_set(livido_port_t * p,const char *key,int atom_type, int num_elements, void *src);
|
||||||
|
extern int livido_property_get(livido_port_t * p, const char *key, int idx, void *dst);
|
||||||
|
extern char **livido_list_properties(livido_port_t * p);
|
||||||
|
|
||||||
|
|
||||||
|
#define HOST_PARAM_NUMBER 1
|
||||||
|
#define HOST_PARAM_INDEX 2
|
||||||
|
#define HOST_PARAM_SWITCH 6
|
||||||
|
#define HOST_PARAM_COORD 3
|
||||||
|
#define HOST_PARAM_COLOR 4
|
||||||
|
#define HOST_PARAM_TEXT 5
|
||||||
|
|
||||||
|
|
||||||
|
#define livido_port_free vevo_port_free
|
||||||
|
#define livido_port_new vevo_port_new
|
||||||
|
#define livido_property_set vevo_property_set
|
||||||
|
#define livido_property_get vevo_property_get
|
||||||
|
#define livido_property_element_size vevo_property_element_size
|
||||||
|
#define livido_property_num_elements vevo_property_num_elements
|
||||||
|
#define livido_property_atom_type vevo_property_atom_type
|
||||||
|
#define livido_list_properties vevo_list_properties
|
||||||
|
//veejay only
|
||||||
|
#define livido_port_recursive_free vevo_port_recursive_free
|
||||||
|
#define livido_dump_port vevo_port_dump
|
||||||
|
#define livido_property_soft_reference vevo_property_soft_reference
|
||||||
|
#endif
|
||||||
242
veejay-ng/libplugger/freeframe-loader.c
Normal file
242
veejay-ng/libplugger/freeframe-loader.c
Normal file
@@ -0,0 +1,242 @@
|
|||||||
|
#include <config.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <dlfcn.h>
|
||||||
|
#include <libhash/hash.h>
|
||||||
|
#include <libvjmsg/vj-common.h>
|
||||||
|
#include <libvjmem/vjmem.h>
|
||||||
|
#include <libvevo/libvevo.h>
|
||||||
|
#include <libplugger/defs.h>
|
||||||
|
#include <libyuv/yuvconv.h>
|
||||||
|
#include <veejay/portdef.h>
|
||||||
|
#include <ffmpeg/avcodec.h>
|
||||||
|
#define LINUX 1
|
||||||
|
#include <libplugger/specs/FreeFrame.h>
|
||||||
|
#define V_BITS 32
|
||||||
|
|
||||||
|
/** \defgroup freeframe FreeFrame Host
|
||||||
|
*
|
||||||
|
* Provides a host implementation for FreeFrame plugins, see http://freeframe.sourceforge.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if (V_BITS == 32)
|
||||||
|
#define FF_CAP_V_BITS_VIDEO FF_CAP_32BITVIDEO
|
||||||
|
#elif (V_BITS == 24)
|
||||||
|
#define FF_CAP_V_BITS_VIDEO FF_CAP_24BITVIDEO
|
||||||
|
#else // V_BITS = 16
|
||||||
|
#define FF_CAP_V_BITS_VIDEO FF_CAP_16BITVIDEO
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void* deal_with_ff( void *handle, char *name )
|
||||||
|
{
|
||||||
|
void *port = vevo_port_new( VEVO_FF_PORT );
|
||||||
|
char *plugin_name = NULL;
|
||||||
|
plugMainType *q = (plugMainType*) dlsym( handle, "plugMain" );
|
||||||
|
|
||||||
|
if( q == NULL )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR,"\tBorked FF plugin '%s': %s", name, dlerror());
|
||||||
|
vevo_port_free( port );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
PlugInfoStruct *pis = (q(FF_GETINFO, NULL, 0)).PISvalue;
|
||||||
|
|
||||||
|
if ((q(FF_GETPLUGINCAPS, (LPVOID)FF_CAP_V_BITS_VIDEO, 0)).ivalue != FF_TRUE)
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "%s:%d", __FUNCTION__,__LINE__ );
|
||||||
|
vevo_port_free(port);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (pis->APIMajorVersion < 1)
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Cowardly refusing FF API version < 1.0" );
|
||||||
|
vevo_port_free(port);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin_name = strdup( pis->pluginName );
|
||||||
|
if ( (q(FF_INITIALISE, NULL, 0 )).ivalue == FF_FAIL )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Cannot call init()");
|
||||||
|
vevo_port_free(port);
|
||||||
|
if(plugin_name) free(plugin_name);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int n_params = q( FF_GETNUMPARAMETERS, NULL, 0 ).ivalue;
|
||||||
|
if( n_params == FF_FAIL )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Cannot get number of parameters");
|
||||||
|
vevo_port_free(port);
|
||||||
|
if(plugin_name) free(plugin_name);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
int mix = 0;
|
||||||
|
void *base = (void*) q;
|
||||||
|
vevo_property_set( port, "handle", VEVO_ATOM_TYPE_VOIDPTR,1, &handle );
|
||||||
|
vevo_property_set( port, "name", VEVO_ATOM_TYPE_STRING,1, &plugin_name );
|
||||||
|
vevo_property_set( port, "base", VEVO_ATOM_TYPE_VOIDPTR, 1, &base );
|
||||||
|
vevo_property_set( port, "instance", VEVO_ATOM_TYPE_INT, 0, NULL );
|
||||||
|
vevo_property_set( port, "n_params", VEVO_ATOM_TYPE_INT, 1,&n_params );
|
||||||
|
vevo_property_set( port, "mixer", VEVO_ATOM_TYPE_INT, 1,&mix );
|
||||||
|
|
||||||
|
int p;
|
||||||
|
for( p= 0; p < n_params; p ++ )
|
||||||
|
{
|
||||||
|
void *parameter = vevo_port_new( VEVO_FF_PARAM_PORT );
|
||||||
|
|
||||||
|
int type = q( FF_GETPARAMETERTYPE, (LPVOID) p, 0 ).ivalue;
|
||||||
|
// name, kind, flags, description, min,max,default,transition
|
||||||
|
vevo_property_set( parameter, "type", VEVO_ATOM_TYPE_INT, 1, &type);
|
||||||
|
|
||||||
|
int min = 0;
|
||||||
|
int max = 100;
|
||||||
|
|
||||||
|
if( type == FF_TYPE_BOOLEAN )
|
||||||
|
{
|
||||||
|
min = 0;
|
||||||
|
max = 1;
|
||||||
|
}
|
||||||
|
else if( type == FF_TYPE_TEXT )
|
||||||
|
{
|
||||||
|
min = 0;
|
||||||
|
max = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
vevo_property_set( parameter, "min", VEVO_ATOM_TYPE_INT,1, &min );
|
||||||
|
vevo_property_set( parameter, "max", VEVO_ATOM_TYPE_INT,1, &max );
|
||||||
|
|
||||||
|
float dvalue = 0.0;
|
||||||
|
dvalue = q( FF_GETPARAMETERDEFAULT, (LPVOID) p, 0).fvalue;
|
||||||
|
int ivalue = (int)(dvalue * 100.0);
|
||||||
|
vevo_property_set( parameter, "default", VEVO_ATOM_TYPE_INT,1 ,&ivalue );
|
||||||
|
|
||||||
|
char key[20];
|
||||||
|
snprintf(key,20, "p%02d", p );
|
||||||
|
vevo_property_set( port, key, VEVO_ATOM_TYPE_VOIDPTR, 1, ¶meter );
|
||||||
|
}
|
||||||
|
free(plugin_name);
|
||||||
|
return port;
|
||||||
|
}
|
||||||
|
|
||||||
|
int freeframe_plug_init( void *plugin, int w, int h )
|
||||||
|
{
|
||||||
|
VideoInfoStruct v;
|
||||||
|
v.frameWidth = w;
|
||||||
|
v.frameHeight = h;
|
||||||
|
v.orientation = 1;
|
||||||
|
v.bitDepth = FF_CAP_V_BITS_VIDEO;
|
||||||
|
|
||||||
|
void *base = NULL;
|
||||||
|
int error = vevo_property_get( plugin, "base", 0, &base);
|
||||||
|
#ifdef STRICT_CHECING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
plugMainType *q = (plugMainType*) base;
|
||||||
|
int instance = q( FF_INSTANTIATE, &v, 0).ivalue;
|
||||||
|
if( instance == FF_FAIL )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Unable to initialize plugin");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
vevo_property_set( plugin, "instance", VEVO_ATOM_TYPE_INT, 1, &instance );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void freeframe_plug_deinit( void *plugin )
|
||||||
|
{
|
||||||
|
void *base = NULL;
|
||||||
|
int error = vevo_property_get( plugin, "base", 0, &base);
|
||||||
|
#ifdef STRICT_CHECING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
plugMainType *q = (plugMainType*) base;
|
||||||
|
|
||||||
|
int instance = 0;
|
||||||
|
error = vevo_property_get( plugin, "instance", 0, &instance );
|
||||||
|
#ifdef STRICT_CHECING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if( instance )
|
||||||
|
q( FF_DEINSTANTIATE, NULL, instance );
|
||||||
|
}
|
||||||
|
|
||||||
|
void freeframe_plug_free( void *plugin )
|
||||||
|
{
|
||||||
|
int n = 0;
|
||||||
|
void *base = NULL;
|
||||||
|
int error = vevo_property_get( plugin, "base", 0, &base);
|
||||||
|
#ifdef STRICT_CHECING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
plugMainType *q = (plugMainType*) base;
|
||||||
|
q( FF_DEINITIALISE, NULL, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
int freeframe_plug_process( void *plugin, void *in )
|
||||||
|
{
|
||||||
|
void *base = NULL;
|
||||||
|
int error = vevo_property_get( plugin, "base", 0, &base);
|
||||||
|
#ifdef STRICT_CHECING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
plugMainType *q = (plugMainType*) base;
|
||||||
|
int instance = 0;
|
||||||
|
error = vevo_property_get( plugin, "instance",0, &instance );
|
||||||
|
#ifdef STRICT_CHECING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
q( FF_PROCESSFRAME, in, instance );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void freeframe_plug_control( void *port, int *args )
|
||||||
|
{
|
||||||
|
SetParameterStruct v;
|
||||||
|
void *base = NULL;
|
||||||
|
vevo_property_get( port, "base", 0, &base);
|
||||||
|
plugMainType *q = (plugMainType*) base;
|
||||||
|
int p,num_params=0;
|
||||||
|
int instance = 0;
|
||||||
|
int error = 0;
|
||||||
|
error = vevo_property_get( port, "n_params", 0, &num_params);
|
||||||
|
#ifdef STRICT_CHECING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
error = vevo_property_get( port, "instance", 0, &instance );
|
||||||
|
#ifdef STRICT_CHECING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for( p = 0; p < num_params; p ++ )
|
||||||
|
{
|
||||||
|
v.value = ((float) args[p]) * 0.01;
|
||||||
|
v.index = p;
|
||||||
|
q( FF_SETPARAMETER, &v, instance );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void freeframe_plug_process_ext( void *port, void *in0, void *in1, void *out)
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifdef STRICT_CHECING
|
||||||
|
assert(0);
|
||||||
|
#endif
|
||||||
|
/* void *base = NULL;
|
||||||
|
vevo_property_get( plugin, "base", 0, &base);
|
||||||
|
plugMainType *q = (plugMainType*) base;
|
||||||
|
int instance = 0;
|
||||||
|
vevo_property_get( plugin, "instance",0, &instance );
|
||||||
|
q( FF_PROCESSFRAME, buffer, instance );*/
|
||||||
|
|
||||||
|
}
|
||||||
12
veejay-ng/libplugger/freeframe-loader.h
Normal file
12
veejay-ng/libplugger/freeframe-loader.h
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#ifndef FREEFRAME_LOADER
|
||||||
|
#define FREEFRAME_LOADER
|
||||||
|
void* deal_with_ff( void *handle, char *name );
|
||||||
|
|
||||||
|
int freeframe_plug_init( void *plugin , int w, int h );
|
||||||
|
void freeframe_plug_deinit( void *plugin );
|
||||||
|
void freeframe_plug_free( void *plugin );
|
||||||
|
int freeframe_plug_process( void *plugin, void *in );
|
||||||
|
void freeframe_plug_process_ext( void *plugin, void *in0, void *in1, void *out);
|
||||||
|
void freeframe_plug_control( void *plugin, int *args );
|
||||||
|
|
||||||
|
#endif
|
||||||
315
veejay-ng/libplugger/frei0r-loader.c
Normal file
315
veejay-ng/libplugger/frei0r-loader.c
Normal file
@@ -0,0 +1,315 @@
|
|||||||
|
#include <config.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <dlfcn.h>
|
||||||
|
#include <libhash/hash.h>
|
||||||
|
#include <libvjmsg/vj-common.h>
|
||||||
|
#include <libvjmem/vjmem.h>
|
||||||
|
#include <libvevo/libvevo.h>
|
||||||
|
#include <libplugger/defs.h>
|
||||||
|
#include <libyuv/yuvconv.h>
|
||||||
|
#include <ffmpeg/avcodec.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <veejay/portdef.h>
|
||||||
|
#ifdef HAVE_STRICT
|
||||||
|
#include <assert.h>
|
||||||
|
#endif
|
||||||
|
/** \defgroup freior Freior Host
|
||||||
|
*
|
||||||
|
* This module provides a Frei0r Host
|
||||||
|
*/
|
||||||
|
#include <libplugger/specs/frei0r.h>
|
||||||
|
|
||||||
|
typedef f0r_instance_t (*f0r_construct_f)(unsigned int width, unsigned int height);
|
||||||
|
|
||||||
|
typedef void (*f0r_destruct_f)(f0r_instance_t instance);
|
||||||
|
|
||||||
|
typedef void (*f0r_deinit_f)(void);
|
||||||
|
|
||||||
|
typedef int (*f0r_init_f)(void);
|
||||||
|
|
||||||
|
typedef void (*f0r_get_plugin_info_f)(f0r_plugin_info_t *info);
|
||||||
|
|
||||||
|
typedef void (*f0r_get_param_info_f)(f0r_param_info_t *info, int param_index);
|
||||||
|
|
||||||
|
typedef void (*f0r_update_f)(f0r_instance_t instance, double time, const uint32_t *inframe, uint32_t *outframe);
|
||||||
|
|
||||||
|
typedef void (*f0r_update2_f)(f0r_instance_t instance, double time, const uint32_t *inframe1, const uint32_t *inframe2, const uint32_t *inframe3, uint32_t *outframe);
|
||||||
|
|
||||||
|
typedef void (*f0r_set_param_value_f)(f0r_instance_t *instance, f0r_param_t *param, int param_index);
|
||||||
|
|
||||||
|
|
||||||
|
static int init_param_fr( void *port, int p, int hint)
|
||||||
|
{
|
||||||
|
void *parameter = vevo_port_new( VEVO_FR_PARAM_PORT );
|
||||||
|
int min = 0;
|
||||||
|
int max = 100;
|
||||||
|
int dv = 50;
|
||||||
|
int n_values = 0;
|
||||||
|
|
||||||
|
switch(hint)
|
||||||
|
{
|
||||||
|
case F0R_PARAM_DOUBLE:
|
||||||
|
n_values = 1;
|
||||||
|
break;
|
||||||
|
case F0R_PARAM_BOOL:
|
||||||
|
max = 1;
|
||||||
|
dv = 0;
|
||||||
|
n_values = 1;
|
||||||
|
break;
|
||||||
|
case F0R_PARAM_COLOR:
|
||||||
|
n_values = 3;
|
||||||
|
break;
|
||||||
|
case F0R_PARAM_POSITION:
|
||||||
|
n_values = 2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( n_values > 0 )
|
||||||
|
{
|
||||||
|
int values[n_values];
|
||||||
|
int k;
|
||||||
|
for( k = 0; k < n_values; k ++ ) values[k] = 0;
|
||||||
|
vevo_property_set( parameter, "value", VEVO_ATOM_TYPE_INT, n_values, &values );
|
||||||
|
}
|
||||||
|
|
||||||
|
vevo_property_set( parameter, "value", VEVO_ATOM_TYPE_INT, 0, NULL );
|
||||||
|
|
||||||
|
vevo_property_set( parameter, "min", VEVO_ATOM_TYPE_INT,1, &min );
|
||||||
|
vevo_property_set( parameter, "max", VEVO_ATOM_TYPE_INT,1, &max );
|
||||||
|
vevo_property_set( parameter, "default", VEVO_ATOM_TYPE_INT,1, &dv );
|
||||||
|
vevo_property_set( parameter, "hint", VEVO_ATOM_TYPE_INT,1, &hint );
|
||||||
|
|
||||||
|
|
||||||
|
char key[20];
|
||||||
|
snprintf(key,20, "p%02d", p );
|
||||||
|
vevo_property_set( port, key, VEVO_ATOM_TYPE_VOIDPTR, 1, ¶meter );
|
||||||
|
|
||||||
|
return n_values;
|
||||||
|
}
|
||||||
|
void* deal_with_fr( void *handle, char *name)
|
||||||
|
{
|
||||||
|
void *port = vevo_port_new( VEVO_FR_PORT );
|
||||||
|
char *plugin_name = NULL;
|
||||||
|
f0r_init_f f0r_init = dlsym( handle, "f0r_init" );
|
||||||
|
if( f0r_init == NULL )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': %s", name, dlerror());
|
||||||
|
vevo_port_free( port );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
f0r_deinit_f f0r_deinit = dlsym( handle, "f0r_deinit" );
|
||||||
|
if( f0r_deinit == NULL )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': %s", name, dlerror());
|
||||||
|
vevo_port_free( port );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
f0r_get_plugin_info_f f0r_info = dlsym( handle, "f0r_get_plugin_info");
|
||||||
|
if( f0r_info == NULL )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': %s", name, dlerror());
|
||||||
|
vevo_port_free( port );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
f0r_get_param_info_f f0r_param= dlsym( handle, "f0r_get_param_info" );
|
||||||
|
if( f0r_param == NULL )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': %s", name, dlerror());
|
||||||
|
vevo_port_free( port );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
//@ gamble
|
||||||
|
void *f0r_construct = dlsym( handle, "f0r_construct" );
|
||||||
|
void *f0r_destruct = dlsym( handle, "f0r_destruct" );
|
||||||
|
void *processf = dlsym( handle, "f0r_update" );
|
||||||
|
// void *processm = dlsym( handle, "f0r_update2" );
|
||||||
|
void *set_params = dlsym( handle, "f0r_set_param_value" );
|
||||||
|
|
||||||
|
|
||||||
|
vevo_property_set( port, "handle", VEVO_ATOM_TYPE_VOIDPTR,1, &handle );
|
||||||
|
vevo_property_set( port, "init", VEVO_ATOM_TYPE_VOIDPTR, 1, &f0r_init );
|
||||||
|
vevo_property_set( port, "deinit", VEVO_ATOM_TYPE_VOIDPTR, 1, &f0r_deinit );
|
||||||
|
vevo_property_set( port, "info", VEVO_ATOM_TYPE_VOIDPTR, 1, &f0r_info );
|
||||||
|
vevo_property_set( port, "parameters", VEVO_ATOM_TYPE_VOIDPTR, 1, &f0r_param );
|
||||||
|
vevo_property_set( port, "construct", VEVO_ATOM_TYPE_VOIDPTR, 1, &f0r_construct );
|
||||||
|
vevo_property_set( port, "destruct", VEVO_ATOM_TYPE_VOIDPTR, 1, &f0r_destruct );
|
||||||
|
vevo_property_set( port, "process", VEVO_ATOM_TYPE_VOIDPTR, 1, &processf);
|
||||||
|
// vevo_property_set( port, "process_mix", VEVO_ATOM_TYPE_VOIDPTR, 1, &processm);
|
||||||
|
vevo_property_set( port, "set_params", VEVO_ATOM_TYPE_VOIDPTR,1,&set_params);
|
||||||
|
|
||||||
|
f0r_plugin_info_t finfo;
|
||||||
|
f0r_param_info_t pinfo;
|
||||||
|
|
||||||
|
memset( &finfo,0,sizeof(f0r_plugin_info_t));
|
||||||
|
memset( &pinfo,0,sizeof(f0r_param_info_t));
|
||||||
|
|
||||||
|
|
||||||
|
if( (*f0r_init)() == 0)
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': ", name);
|
||||||
|
vevo_port_free( port );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
(*f0r_info)(&finfo);
|
||||||
|
|
||||||
|
if( finfo.frei0r_version != FREI0R_MAJOR_VERSION )
|
||||||
|
{
|
||||||
|
(*f0r_deinit)();
|
||||||
|
vevo_port_free(port);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
int extra = 0;
|
||||||
|
//@ fixme
|
||||||
|
// if( finfo.plugin_type == F0R_PLUGIN_TYPE_MIXER2 )
|
||||||
|
// extra = 1;
|
||||||
|
|
||||||
|
int n_params = finfo.num_params;
|
||||||
|
int r_params = 0;
|
||||||
|
int p = 0;
|
||||||
|
for ( p = 0; p < n_params; p ++ )
|
||||||
|
{
|
||||||
|
(*f0r_param)(&pinfo,p);
|
||||||
|
r_params += init_param_fr( port, p, pinfo.type );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( r_params > 8 )
|
||||||
|
r_params = 8;
|
||||||
|
|
||||||
|
char *plug_name = strdup( finfo.name );
|
||||||
|
vevo_property_set( port, "n_params", VEVO_ATOM_TYPE_INT, 1, &r_params );
|
||||||
|
vevo_property_set( port, "f0r_p", VEVO_ATOM_TYPE_INT,1, &n_params );
|
||||||
|
vevo_property_set( port, "name", VEVO_ATOM_TYPE_STRING,1, &plug_name );
|
||||||
|
vevo_property_set( port, "mixer", VEVO_ATOM_TYPE_INT,1, &extra );
|
||||||
|
free(plug_name);
|
||||||
|
return port;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int frei0r_plug_init( void *plugin , int w, int h )
|
||||||
|
{
|
||||||
|
f0r_construct_f base;
|
||||||
|
vevo_property_get( plugin, "construct", 0, &base);
|
||||||
|
f0r_instance_t k = (*base)(w,h);
|
||||||
|
vevo_property_set(plugin, "instance", VEVO_ATOM_TYPE_VOIDPTR, 1, &k);
|
||||||
|
if( k == NULL )
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Unable to initialize plugin");
|
||||||
|
// store instance running status
|
||||||
|
int state = 1;
|
||||||
|
vevo_property_set( plugin, "running", VEVO_ATOM_TYPE_INT, 1, &state );
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
void frei0r_plug_deinit( void *plugin, int w, int h )
|
||||||
|
{
|
||||||
|
int state = 0;
|
||||||
|
vevo_property_get( plugin, "state", 0, &state );
|
||||||
|
if(!state)
|
||||||
|
return;
|
||||||
|
|
||||||
|
f0r_destruct_f base;
|
||||||
|
vevo_property_get( plugin, "destruct", 0, &base);
|
||||||
|
f0r_instance_t instance;
|
||||||
|
vevo_property_get( plugin, "instance", 0, &instance );
|
||||||
|
(*base)(instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
void frei0r_plug_free( void *plugin )
|
||||||
|
{
|
||||||
|
int n = 0;
|
||||||
|
//@@ clear parameters
|
||||||
|
f0r_deinit_f base;
|
||||||
|
vevo_property_get( plugin, "deinit", 0, &base);
|
||||||
|
(*base)();
|
||||||
|
vevo_property_get( plugin, "f0r_p", 0, &n );
|
||||||
|
}
|
||||||
|
|
||||||
|
int frei0r_plug_process( void *plugin, void *buffer, void *out_buffer )
|
||||||
|
{
|
||||||
|
f0r_update_f base;
|
||||||
|
vevo_property_get( plugin, "process", 0, &base );
|
||||||
|
f0r_instance_t instance;
|
||||||
|
vevo_property_get( plugin, "instance",0, &instance );
|
||||||
|
(*base)( instance, rand(), buffer, out_buffer );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void frei0r_plug_control( void *port, int *args )
|
||||||
|
{
|
||||||
|
int p,num_params=0;
|
||||||
|
vevo_property_get( port, "n_params", 0, &num_params);
|
||||||
|
int v_params = 0;
|
||||||
|
|
||||||
|
f0r_set_param_value_f q;
|
||||||
|
|
||||||
|
vevo_property_get( port, "set_params", 0, &q);
|
||||||
|
for( p = 0; p < num_params; p ++ )
|
||||||
|
{
|
||||||
|
char key[20];
|
||||||
|
sprintf(key, "p%02d", p );
|
||||||
|
void *param = NULL;
|
||||||
|
vevo_property_get( port, key, 0, ¶m );
|
||||||
|
if( param ) continue;
|
||||||
|
|
||||||
|
int n = vevo_property_element_size( param, "value", p );
|
||||||
|
|
||||||
|
f0r_param_position_t pos;
|
||||||
|
f0r_param_color_t col;
|
||||||
|
|
||||||
|
double value = 0.0;
|
||||||
|
int instance = 0;
|
||||||
|
vevo_property_get( port, "instance", 0, &instance );
|
||||||
|
int max = 0;
|
||||||
|
vevo_property_get( param, "max",0,&max);
|
||||||
|
|
||||||
|
void *fparam = NULL;
|
||||||
|
switch(n)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
value = ( (double) args[v_params] * (max == 100 ? 0.01: 1));
|
||||||
|
fparam = &value;
|
||||||
|
v_params ++;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
pos.x = ( (double) args[v_params] * 0.01 );
|
||||||
|
v_params ++;
|
||||||
|
pos.y = ( (double) args[v_params] * 0.01 );
|
||||||
|
v_params ++;
|
||||||
|
fparam = &pos;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
col.r = ( (double) args[v_params] * 0.01 );
|
||||||
|
v_params ++;
|
||||||
|
col.g = ( (double) args[v_params] * 0.01 );
|
||||||
|
v_params ++;
|
||||||
|
col.b = ( (double) args[v_params] * 0.01 );
|
||||||
|
v_params ++;
|
||||||
|
fparam = &col;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if( fparam )
|
||||||
|
(*q)( instance, fparam, p );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void frei0r_plug_process_ext( void *plugin, void *in0, void *in1, void *out)
|
||||||
|
{
|
||||||
|
f0r_update2_f base;
|
||||||
|
vevo_property_get( plugin, "process_mix", 0, &base );
|
||||||
|
f0r_instance_t instance;
|
||||||
|
vevo_property_get( plugin, "instance",0, &instance );
|
||||||
|
(*base)( instance, rand(), in0, in1, NULL, out );
|
||||||
|
}
|
||||||
18
veejay-ng/libplugger/frei0r-loader.h
Normal file
18
veejay-ng/libplugger/frei0r-loader.h
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#ifndef FREIORLOADER_H
|
||||||
|
#define FREIORLOADER_H
|
||||||
|
|
||||||
|
void* deal_with_fr( void *handle, char *name );
|
||||||
|
|
||||||
|
int frei0r_plug_init( void *plugin , int w, int h );
|
||||||
|
|
||||||
|
void frei0r_plug_deinit( void *plugin );
|
||||||
|
|
||||||
|
void frei0r_plug_free( void *plugin );
|
||||||
|
|
||||||
|
int frei0r_plug_process( void *plugin, void *in, void *out );
|
||||||
|
|
||||||
|
void frei0r_plug_control( void *plugin, int *args );
|
||||||
|
|
||||||
|
void frei0r_plug_process_ext( void *plugin, void *in1, void *in2, void *out);
|
||||||
|
|
||||||
|
#endif
|
||||||
901
veejay-ng/libplugger/livido-loader.c
Normal file
901
veejay-ng/libplugger/livido-loader.c
Normal file
@@ -0,0 +1,901 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2002-2006 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup livido Livido Host
|
||||||
|
*
|
||||||
|
* See livido specification at http://livido.dyne.org
|
||||||
|
*
|
||||||
|
* This implements an almost complete and hopefully "correct" livido host.
|
||||||
|
*/
|
||||||
|
#include <config.h>
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
#include <assert.h>
|
||||||
|
#endif
|
||||||
|
#include <string.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <dlfcn.h>
|
||||||
|
#include <libhash/hash.h>
|
||||||
|
#include <libvjmsg/vj-common.h>
|
||||||
|
#include <libvjmem/vjmem.h>
|
||||||
|
#include <libvevo/libvevo.h>
|
||||||
|
#include <libplugger/defs.h>
|
||||||
|
#include <libplugger/specs/livido.h>
|
||||||
|
#include <veejay/portdef.h>
|
||||||
|
#include <libyuv/yuvconv.h>
|
||||||
|
#include <ffmpeg/avcodec.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <libplugger/utility.h>
|
||||||
|
#include <libplugger/livido-loader.h>
|
||||||
|
|
||||||
|
#define LIVIDO_COPY 1
|
||||||
|
|
||||||
|
#define IS_RGB_PALETTE( p ) ( p < 512 ? 1 : 0 )
|
||||||
|
|
||||||
|
static int pref_palette_ = 0;
|
||||||
|
static int pref_palette_ffmpeg_ = 0;
|
||||||
|
static int livido_signature_ = VEVO_PLUG_LIVIDO;
|
||||||
|
|
||||||
|
typedef void (*livido_set_parameter_f)( void *instance, void *value );
|
||||||
|
|
||||||
|
static struct
|
||||||
|
{
|
||||||
|
int lp;
|
||||||
|
int pf;
|
||||||
|
} palette_list_[] =
|
||||||
|
{
|
||||||
|
{ LIVIDO_PALETTE_RGB888, PIX_FMT_RGB24 },
|
||||||
|
{ LIVIDO_PALETTE_BGR888, PIX_FMT_BGR24 },
|
||||||
|
{ LIVIDO_PALETTE_RGB565, PIX_FMT_RGB565 },
|
||||||
|
{ LIVIDO_PALETTE_YUV422P,PIX_FMT_YUV422P },
|
||||||
|
{ LIVIDO_PALETTE_YUV420P,PIX_FMT_YUV420P },
|
||||||
|
{ LIVIDO_PALETTE_YUV444P,PIX_FMT_YUV444P },
|
||||||
|
{ LIVIDO_PALETTE_RGBA32, PIX_FMT_RGBA32 },
|
||||||
|
{ -1, -1 }
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct
|
||||||
|
{
|
||||||
|
int it;
|
||||||
|
int pf;
|
||||||
|
} img_palettes_[] =
|
||||||
|
{
|
||||||
|
{ 0, PIX_FMT_YUV420P },
|
||||||
|
{ 1, PIX_FMT_YUV422P },
|
||||||
|
{ 2, PIX_FMT_YUV444P },
|
||||||
|
{ -1, -1 },
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct
|
||||||
|
{
|
||||||
|
int it;
|
||||||
|
int lp;
|
||||||
|
} vj_palettes_[] =
|
||||||
|
{
|
||||||
|
{ 0, LIVIDO_PALETTE_YUV420P },
|
||||||
|
{ 1, LIVIDO_PALETTE_YUV422P },
|
||||||
|
{ 2, LIVIDO_PALETTE_YUV444P },
|
||||||
|
{ -1, -1 },
|
||||||
|
};
|
||||||
|
|
||||||
|
static int select_ffmpeg_palette(int lvd_palette )
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
for( i = 0; palette_list_[i].pf != -1 ; i ++ )
|
||||||
|
if( lvd_palette == palette_list_[i].lp )
|
||||||
|
return palette_list_[i].pf;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
static int select_livido_palette(int palette )
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
for( i = 0; palette_list_[i].pf != -1 ; i ++ )
|
||||||
|
if( palette == palette_list_[i].pf )
|
||||||
|
return palette_list_[i].lp;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int configure_channel( void *instance, const char *name, int channel_id, VJFrame *frame )
|
||||||
|
{
|
||||||
|
void *channel = NULL;
|
||||||
|
int error = 0;
|
||||||
|
void *pd[4];
|
||||||
|
|
||||||
|
error = vevo_property_get( instance, name, channel_id, &channel );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
if( error != LIVIDO_NO_ERROR )
|
||||||
|
veejay_msg(0, "Key '%s' element %d does not exist in fx instance", name, channel_id );
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
error = vevo_property_set( channel , "fps" , LIVIDO_ATOM_TYPE_DOUBLE,1, &(frame->fps));
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
int rowstrides[4] = { frame->width, frame->uv_width, frame->uv_width, 0 };
|
||||||
|
error = vevo_property_set( channel , "rowstrides", LIVIDO_ATOM_TYPE_INT,4, &rowstrides );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
error = vevo_property_set( channel , "timecode", LIVIDO_ATOM_TYPE_DOUBLE,1, &(frame->timecode));
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
pd[0] = (void*) frame->data[0];
|
||||||
|
pd[1] = (void*) frame->data[1];
|
||||||
|
pd[2] = (void*) frame->data[2];
|
||||||
|
pd[3] = (void*) frame->data[3];
|
||||||
|
|
||||||
|
error = vevo_property_set( channel, "pixel_data",LIVIDO_ATOM_TYPE_VOIDPTR, 4, &pd);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int hsampling = 0;
|
||||||
|
if( vevo_property_get( channel, "HOST_sampling", 0, &hsampling ) == LIVIDO_NO_ERROR && name[0] == 'i')
|
||||||
|
{
|
||||||
|
void *sampler = NULL;
|
||||||
|
error = vevo_property_get(channel, "HOST_sampler", 0, &sampler );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
chroma_supersample( hsampling, sampler, pd, frame->width,
|
||||||
|
frame->height );
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void livido_plug_parameter_set_text( void *parameter, void *value )
|
||||||
|
{
|
||||||
|
veejay_msg(0,"%s: value = '%s'", __FUNCTION__, *((char*) value ));
|
||||||
|
vevo_property_set( parameter, "value", LIVIDO_ATOM_TYPE_STRING, 1, value );
|
||||||
|
}
|
||||||
|
void livido_plug_parameter_set_number( void *parameter, void *value )
|
||||||
|
{
|
||||||
|
veejay_msg(0,"%s: value = '%d'", __FUNCTION__, *((double*) value ));
|
||||||
|
vevo_property_set( parameter, "value", LIVIDO_ATOM_TYPE_DOUBLE, 1, value );
|
||||||
|
}
|
||||||
|
void livido_plug_parameter_set_index( void *parameter, void *value)
|
||||||
|
{
|
||||||
|
veejay_msg(0,"%s: value = '%s'", __FUNCTION__, *((int*) value ));
|
||||||
|
vevo_property_set( parameter, "value", VEVO_ATOM_TYPE_INT, 1, value );
|
||||||
|
}
|
||||||
|
void livido_plug_parameter_set_bool( void *parameter, void *value )
|
||||||
|
{
|
||||||
|
veejay_msg(0,"%s: value = '%s'", __FUNCTION__, *((int*) value ));
|
||||||
|
vevo_property_set( parameter, "value", VEVO_ATOM_TYPE_BOOL, 1, value );
|
||||||
|
}
|
||||||
|
void livido_plug_parameter_set_color( void *parameter,void *value )
|
||||||
|
{
|
||||||
|
veejay_msg(0,"%s: array", __FUNCTION__);
|
||||||
|
vevo_property_set( parameter, "value", VEVO_ATOM_TYPE_DOUBLE, 4, value );
|
||||||
|
}
|
||||||
|
void livido_plug_parameter_set_coord( void *parameter, void *value )
|
||||||
|
{
|
||||||
|
veejay_msg(0,"%s: array", __FUNCTION__);
|
||||||
|
vevo_property_set( parameter, "value", LIVIDO_ATOM_TYPE_DOUBLE, 2, value );
|
||||||
|
}
|
||||||
|
|
||||||
|
static int livido_scan_parameters( void *plugin, void *plugger_port )
|
||||||
|
{
|
||||||
|
int n = 0;
|
||||||
|
int vj_np = 0;
|
||||||
|
int NP = vevo_property_num_elements( plugin , "in_parameter_templates");
|
||||||
|
int error = 0;
|
||||||
|
|
||||||
|
if( NP <= 0 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
for( n = 0; n < NP; n ++ )
|
||||||
|
{
|
||||||
|
char key[20];
|
||||||
|
void *param = NULL;
|
||||||
|
|
||||||
|
error = vevo_property_get( plugin, "in_parameter_templates", n, ¶m );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
sprintf(key, "p%02d", n );
|
||||||
|
|
||||||
|
int ikind = 0;
|
||||||
|
char *kind = get_str_vevo( param, "kind" );
|
||||||
|
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( kind != NULL );
|
||||||
|
#endif
|
||||||
|
void *vje_port = vevo_port_new( VEVO_VJE_PORT );
|
||||||
|
int tmp[4];
|
||||||
|
double dtmp[4];
|
||||||
|
|
||||||
|
vevo_property_set( plugger_port, key, LIVIDO_ATOM_TYPE_PORTPTR,1, &vje_port );
|
||||||
|
|
||||||
|
if(strcasecmp(kind, "NUMBER") == 0 ) {
|
||||||
|
ikind = HOST_PARAM_NUMBER; vj_np ++;
|
||||||
|
clone_prop_vevo( param, vje_port, "default", "value" );
|
||||||
|
clone_prop_vevo( param, vje_port, "default", "default" );
|
||||||
|
clone_prop_vevo( param, vje_port, "min", "min" );
|
||||||
|
clone_prop_vevo( param, vje_port, "max", "max" );
|
||||||
|
double a = 0;
|
||||||
|
double b = 0;
|
||||||
|
vevo_property_get( vje_port,"value" ,0, &a );
|
||||||
|
vevo_property_get( param,"default" ,0, &b );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( a == b );
|
||||||
|
#endif
|
||||||
|
} else if (strcasecmp(kind, "INDEX") == 0 ) {
|
||||||
|
ikind = HOST_PARAM_INDEX; vj_np ++;
|
||||||
|
clone_prop_vevo( param, vje_port, "default", "value" );
|
||||||
|
clone_prop_vevo( param, vje_port, "default", "default" );
|
||||||
|
clone_prop_vevo( param, vje_port, "min", "min" );
|
||||||
|
clone_prop_vevo( param, vje_port, "max", "max" );
|
||||||
|
} else if (strcasecmp(kind, "SWITCH") == 0 ) {
|
||||||
|
ikind = HOST_PARAM_SWITCH; vj_np ++;
|
||||||
|
clone_prop_vevo( param, vje_port, "default", "value" );
|
||||||
|
clone_prop_vevo( param, vje_port, "default", "default" );
|
||||||
|
tmp[0] = 0; tmp[1] = 1;
|
||||||
|
vevo_property_set(vje_port, "min", VEVO_ATOM_TYPE_BOOL,1, &tmp[0] );
|
||||||
|
vevo_property_set(vje_port, "max", VEVO_ATOM_TYPE_BOOL,1, &tmp[1] );
|
||||||
|
} else if (strcasecmp(kind, "COORDINATE" ) == 0 ) {
|
||||||
|
ikind = HOST_PARAM_COORD; vj_np += 2;
|
||||||
|
dtmp[0] = 0.0; dtmp[1] = 0.0;
|
||||||
|
vevo_property_set(vje_port, "min", VEVO_ATOM_TYPE_DOUBLE,1, &dtmp[0] );
|
||||||
|
dtmp[1] = 1.0; dtmp[0] = 1.0;
|
||||||
|
vevo_property_set(vje_port, "max", VEVO_ATOM_TYPE_DOUBLE,1, &dtmp[1] );
|
||||||
|
double *dv = get_dbl_arr_vevo( vje_port, "default" );
|
||||||
|
vevo_property_set(vje_port, "default", VEVO_ATOM_TYPE_DOUBLE,2,&dv );
|
||||||
|
vevo_property_set(vje_port, "value", VEVO_ATOM_TYPE_DOUBLE,2,&dv );
|
||||||
|
free(dv);
|
||||||
|
} else if (strcasecmp(kind, "COLOR" ) == 0 ) {
|
||||||
|
ikind = HOST_PARAM_COLOR; vj_np += 3; // fixme, should be 4
|
||||||
|
dtmp[0] = 0.0; dtmp[1] = 0.0; dtmp[2] = 0.0; dtmp[3] = 0.0;
|
||||||
|
vevo_property_set(vje_port, "min", VEVO_ATOM_TYPE_DOUBLE,4, &dtmp );
|
||||||
|
dtmp[0] = 1.0; dtmp[1] = 1.0; dtmp[2] = 1.0; dtmp[3] = 1.0;
|
||||||
|
vevo_property_set(vje_port, "max", VEVO_ATOM_TYPE_DOUBLE,4, &dtmp );
|
||||||
|
double *dv = get_dbl_arr_vevo( vje_port, "default" );
|
||||||
|
vevo_property_set(vje_port, "default", VEVO_ATOM_TYPE_DOUBLE,2,&dv );
|
||||||
|
free(dv);
|
||||||
|
} else if (strcasecmp(kind, "TEXT" ) == 0 ) {
|
||||||
|
ikind = HOST_PARAM_TEXT;
|
||||||
|
vj_np ++;
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert(0); //@implement me
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
vevo_property_set( param, "HOST_kind", VEVO_ATOM_TYPE_INT,1,&ikind );
|
||||||
|
vevo_property_set( vje_port, "HOST_kind", VEVO_ATOM_TYPE_INT,1,&ikind );
|
||||||
|
|
||||||
|
}
|
||||||
|
return vj_np;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*nt vevo_property_from_string( vevo_port_t *port, const char *s, const char *key, int n_elem, int type)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int init_parameter_port(livido_port_t *ptr, livido_port_t *in_param )
|
||||||
|
{
|
||||||
|
int kind = 0;
|
||||||
|
int error = vevo_property_get( ptr, "HOST_kind", 0, &kind );
|
||||||
|
|
||||||
|
if( error != VEVO_NO_ERROR )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
livido_set_parameter_f pctrl;
|
||||||
|
|
||||||
|
switch(kind)
|
||||||
|
{
|
||||||
|
case HOST_PARAM_INDEX:
|
||||||
|
pctrl = livido_plug_parameter_set_index; break;
|
||||||
|
case HOST_PARAM_NUMBER:
|
||||||
|
pctrl = livido_plug_parameter_set_number; break;
|
||||||
|
case HOST_PARAM_SWITCH:
|
||||||
|
pctrl = livido_plug_parameter_set_bool; break;
|
||||||
|
case HOST_PARAM_COORD:
|
||||||
|
pctrl = livido_plug_parameter_set_coord; break;
|
||||||
|
case HOST_PARAM_COLOR:
|
||||||
|
pctrl = livido_plug_parameter_set_color; break;
|
||||||
|
case HOST_PARAM_TEXT:
|
||||||
|
pctrl = livido_plug_parameter_set_text; break;
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
vevo_property_set( in_param, "HOST_parameter_func", LIVIDO_ATOM_TYPE_VOIDPTR,1,&pctrl );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int match_palette(livido_port_t *ptr, int palette )
|
||||||
|
{
|
||||||
|
int p;
|
||||||
|
int np = vevo_property_num_elements( ptr, "palette_list" );
|
||||||
|
int error = 0;
|
||||||
|
for( p = 0; p < np; p ++ )
|
||||||
|
{
|
||||||
|
int ppalette = 0;
|
||||||
|
error = vevo_property_get( ptr, "palette_list", p, &ppalette );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
if( palette == ppalette )
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int find_cheap_palette(livido_port_t *c, livido_port_t *ptr , int w)
|
||||||
|
{
|
||||||
|
int palette = LIVIDO_PALETTE_YUV444P;
|
||||||
|
if( match_palette(ptr,palette ))
|
||||||
|
{
|
||||||
|
void *sampler = subsample_init(w);
|
||||||
|
int mode = (pref_palette_ == LIVIDO_PALETTE_YUV422P ? SSM_422_444 : SSM_420_JPEG_BOX);
|
||||||
|
|
||||||
|
vevo_property_set( c, "HOST_sampler", LIVIDO_ATOM_TYPE_VOIDPTR,
|
||||||
|
1,&sampler);
|
||||||
|
vevo_property_set( c, "HOST_sampling", LIVIDO_ATOM_TYPE_INT,
|
||||||
|
1, &mode );
|
||||||
|
vevo_property_set( c, "current_palette", LIVIDO_ATOM_TYPE_INT,
|
||||||
|
1, &palette );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( match_palette(ptr, LIVIDO_PALETTE_RGB24 ) )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
if( match_palette(ptr, LIVIDO_PALETTE_RGBA32 ))
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int init_channel_port(livido_port_t *ptr, livido_port_t *in_channel, int w, int h)
|
||||||
|
{
|
||||||
|
int np = vevo_property_num_elements( ptr, "palette_list" );
|
||||||
|
int p = 0;
|
||||||
|
int palette = 0;
|
||||||
|
int plug_pp = 0;
|
||||||
|
int flags = 0;
|
||||||
|
int error = vevo_property_get( ptr, "palette_list", 0, &plug_pp );
|
||||||
|
|
||||||
|
if( np < 0 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if( match_palette( ptr, pref_palette_ ))
|
||||||
|
vevo_property_set( in_channel, "current_palette", LIVIDO_ATOM_TYPE_INT,1,&pref_palette_ );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(!find_cheap_palette(in_channel ,ptr,w))
|
||||||
|
{
|
||||||
|
veejay_msg(0, "No support for any palette in plugin");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
error = vevo_property_get( ptr, "flags", 0, &flags );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
livido_property_set( in_channel, "width", LIVIDO_ATOM_TYPE_INT,1,&w );
|
||||||
|
livido_property_set( in_channel, "height", LIVIDO_ATOM_TYPE_INT,1,&h );
|
||||||
|
livido_property_set( in_channel, "flags", LIVIDO_ATOM_TYPE_INT,1,&flags );
|
||||||
|
|
||||||
|
|
||||||
|
error = vevo_property_get( in_channel, "current_palette",0,NULL );
|
||||||
|
if( error != LIVIDO_NO_ERROR )
|
||||||
|
{
|
||||||
|
veejay_msg(0, "No suitable palette found.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//@ w x h as HOST_width, HOST_height
|
||||||
|
/* utility function to instantiate a port from a template, only sets parent_template */
|
||||||
|
static int init_ports_from_template( livido_port_t *filter_instance, livido_port_t *template, int id, const char *name, const char *iname, int w, int h, int host_palette )
|
||||||
|
{
|
||||||
|
int num = 0;
|
||||||
|
int i;
|
||||||
|
int error = 0;
|
||||||
|
error = livido_property_get( template, name, 0, NULL);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
num = livido_property_num_elements( template, name );
|
||||||
|
|
||||||
|
if(num <= 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
livido_port_t *in_channels[num];
|
||||||
|
|
||||||
|
for( i = 0; i < num; i ++ )
|
||||||
|
{
|
||||||
|
livido_port_t *ptr = NULL;
|
||||||
|
error = livido_property_get( template, name, i, &ptr );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
in_channels[i] = livido_port_new( id );
|
||||||
|
livido_property_set( in_channels[i], "parent_template",LIVIDO_ATOM_TYPE_PORTPTR,1, &ptr);
|
||||||
|
livido_property_soft_reference( in_channels[i], "parent_template" );
|
||||||
|
;
|
||||||
|
if( id == LIVIDO_PORT_TYPE_CHANNEL )
|
||||||
|
{
|
||||||
|
if(!init_channel_port( ptr,in_channels[i],w,h))
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else if( id == LIVIDO_PORT_TYPE_PARAMETER )
|
||||||
|
{
|
||||||
|
if(!init_parameter_port( ptr, in_channels[i] ))
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assert(0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
livido_property_set( filter_instance, iname, LIVIDO_ATOM_TYPE_PORTPTR,num, in_channels );
|
||||||
|
livido_property_soft_reference( filter_instance, name );
|
||||||
|
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* initialize a plugin */
|
||||||
|
void *livido_plug_init(void *plugin,int w, int h )
|
||||||
|
{
|
||||||
|
void *plug_info = NULL;
|
||||||
|
void *filter_templ = NULL;
|
||||||
|
int flags =0;
|
||||||
|
int error = vevo_property_get( plugin, "instance", 0, &plug_info);
|
||||||
|
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
error = vevo_property_get( plug_info, "filters",0,&filter_templ);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
void *filter_instance = livido_port_new( LIVIDO_PORT_TYPE_FILTER_INSTANCE );
|
||||||
|
|
||||||
|
int num_in_channels = init_ports_from_template(
|
||||||
|
filter_instance, filter_templ,
|
||||||
|
LIVIDO_PORT_TYPE_CHANNEL,
|
||||||
|
"in_channel_templates", "in_channels",
|
||||||
|
w,h, 0);
|
||||||
|
|
||||||
|
if( num_in_channels < 0 )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
int num_out_channels = init_ports_from_template(
|
||||||
|
filter_instance, filter_templ,
|
||||||
|
LIVIDO_PORT_TYPE_CHANNEL,
|
||||||
|
"out_channel_templates", "out_channels",
|
||||||
|
w,h, 0 );
|
||||||
|
|
||||||
|
if( num_out_channels < 0 )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
int num_in_params = init_ports_from_template(
|
||||||
|
filter_instance, filter_templ,
|
||||||
|
LIVIDO_PORT_TYPE_PARAMETER,
|
||||||
|
"in_parameter_templates", "in_parameters",
|
||||||
|
w,h, 0 );
|
||||||
|
|
||||||
|
if( num_in_params < 0 )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
int num_out_params = init_ports_from_template(
|
||||||
|
filter_instance, filter_templ,
|
||||||
|
LIVIDO_PORT_TYPE_PARAMETER,
|
||||||
|
"in_parameter_templates", "in_parameters",
|
||||||
|
w,h,0 );
|
||||||
|
|
||||||
|
if( num_out_params < 0 )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( num_in_params >= 0 );
|
||||||
|
assert( num_in_channels >= 0 );
|
||||||
|
assert( num_out_channels >= 0 );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//@ call livido init
|
||||||
|
livido_init_f init_f;
|
||||||
|
error = vevo_property_get( filter_templ, "init_func", 0, &init_f );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
error = (*init_f)( (livido_port_t*) filter_instance );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//@ ok, finish
|
||||||
|
vevo_property_set( filter_instance, "filter_templ", VEVO_ATOM_TYPE_PORTPTR,1, &filter_templ );
|
||||||
|
vevo_property_soft_reference( filter_instance, "filter_templ" );
|
||||||
|
|
||||||
|
|
||||||
|
//@ prepare function pointers for plugloader to call
|
||||||
|
generic_process_f gpf = livido_plug_process;
|
||||||
|
vevo_property_set( filter_instance, "HOST_plugin_process_f", VEVO_ATOM_TYPE_VOIDPTR,1,&gpf );
|
||||||
|
generic_push_channel_f gpu = livido_push_channel;
|
||||||
|
vevo_property_set( filter_instance, "HOST_plugin_push_f", VEVO_ATOM_TYPE_VOIDPTR,1,&gpu );
|
||||||
|
generic_default_values_f gdv = livido_plug_retrieve_values;
|
||||||
|
vevo_property_set( filter_instance, "HOST_plugin_defaults_f", VEVO_ATOM_TYPE_VOIDPTR,1,&gdv );
|
||||||
|
generic_push_parameter_f gpp = livido_set_parameter;
|
||||||
|
vevo_property_set( filter_instance, "HOST_plugin_param_f", VEVO_ATOM_TYPE_VOIDPTR,1,&gpp );
|
||||||
|
generic_clone_parameter_f gcc = livido_clone_parameter;
|
||||||
|
vevo_property_set( filter_instance, "HOST_plugin_param_clone_f", VEVO_ATOM_TYPE_VOIDPTR,1,&gcc );
|
||||||
|
generic_reverse_clone_parameter_f grc = livido_reverse_clone_parameter;
|
||||||
|
vevo_property_set( filter_instance, "HOST_plugin_param_reverse_f", VEVO_ATOM_TYPE_VOIDPTR,1,&grc );
|
||||||
|
generic_deinit_f gin = livido_plug_deinit;
|
||||||
|
vevo_property_set( filter_instance, "HOST_plugin_deinit_f", VEVO_ATOM_TYPE_VOIDPTR,1,&gin);
|
||||||
|
|
||||||
|
return filter_instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void livido_push_channel( void *instance,const char *key, int n, VJFrame *frame ) // in_channels / out_channels
|
||||||
|
{
|
||||||
|
int error;
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
int num_in_channels = vevo_property_num_elements( instance, key);
|
||||||
|
if( n < 0 || n >= num_in_channels )
|
||||||
|
veejay_msg(0, "%s: Cannot push channel %d", __FUNCTION__ , n );
|
||||||
|
assert( n >= 0 && n < num_in_channels );
|
||||||
|
assert( frame != NULL );
|
||||||
|
#endif
|
||||||
|
configure_channel( instance, key, n, frame );
|
||||||
|
}
|
||||||
|
|
||||||
|
void livido_plug_process( void *instance, double time_code )
|
||||||
|
{
|
||||||
|
void *filter_templ = NULL;
|
||||||
|
int error = vevo_property_get( instance, "filter_templ",0,&filter_templ);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
livido_process_f process;
|
||||||
|
error = vevo_property_get( filter_templ, "process_func", 0, &process );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
assert( (*process) != NULL );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
(*process)( instance, 0.0 );
|
||||||
|
|
||||||
|
//see if output channel needs downsampling
|
||||||
|
void *channel = NULL;
|
||||||
|
int hsampling = 0;
|
||||||
|
error = vevo_property_get( instance, "out_channels", 0, &channel );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if( vevo_property_get( channel, "HOST_sampling",0,&hsampling ) ==
|
||||||
|
LIVIDO_NO_ERROR )
|
||||||
|
{
|
||||||
|
void *sampler = NULL;
|
||||||
|
error = vevo_property_get( channel, "HOST_sampler",0,&sampler);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
uint8_t *pd[4];
|
||||||
|
int n = 0;
|
||||||
|
int w = 0;
|
||||||
|
int h = 0;
|
||||||
|
for( n = 0; n < 4; n ++ )
|
||||||
|
vevo_property_get( channel, "pixel_data",n,&pd[n]);
|
||||||
|
vevo_property_get( channel, "width", 0, &w );
|
||||||
|
vevo_property_get( channel, "height", 0, &h );
|
||||||
|
|
||||||
|
chroma_subsample( hsampling,sampler,pd,w,h );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void livido_plug_deinit( void *instance )
|
||||||
|
{
|
||||||
|
void *filter_templ = NULL;
|
||||||
|
int error = vevo_property_get( instance, "filter_templ", 0, &filter_templ );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
livido_deinit_f deinit;
|
||||||
|
error = vevo_property_get( filter_templ, "deinit_func", 0, &deinit );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
(*deinit)( instance );
|
||||||
|
|
||||||
|
int n;
|
||||||
|
int np = vevo_property_num_elements( instance, "in_channels" );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( np >= 0 );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for( n = 0; n < np ; n ++ )
|
||||||
|
{
|
||||||
|
void *ic = NULL;
|
||||||
|
int hs = 0;
|
||||||
|
error = vevo_property_get( instance, "in_channels",n, &ic );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
if( vevo_property_get( ic, "HOST_sampling",0,&hs ) == LIVIDO_NO_ERROR )
|
||||||
|
{
|
||||||
|
void *sampler = NULL;
|
||||||
|
error = vevo_property_get( ic, "HOST_sampler", 0, &sampler );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
subsample_free(sampler);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void *channel = NULL;
|
||||||
|
int hsampling = 0;
|
||||||
|
error = vevo_property_get( instance, "out_channels", 0, &channel );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
if( vevo_property_get( channel, "HOST_sampling",0,&hsampling ) ==
|
||||||
|
LIVIDO_NO_ERROR )
|
||||||
|
{
|
||||||
|
void *sampler = NULL;
|
||||||
|
error = vevo_property_get(channel, "HOST_sampler",0,&sampler );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( sampler != NULL );
|
||||||
|
#endif
|
||||||
|
subsample_free(sampler);
|
||||||
|
}
|
||||||
|
|
||||||
|
livido_port_recursive_free( instance );
|
||||||
|
|
||||||
|
instance = NULL;
|
||||||
|
}
|
||||||
|
//get plugin defaults
|
||||||
|
void livido_plug_retrieve_values( void *instance, void *fx_values )
|
||||||
|
{
|
||||||
|
int vj_np = vevo_property_num_elements( instance, "in_parameters" );
|
||||||
|
int i;
|
||||||
|
for( i = 0; i < vj_np; i ++ )
|
||||||
|
{
|
||||||
|
char vkey[10];
|
||||||
|
void *param = NULL;
|
||||||
|
void *param_templ = NULL;
|
||||||
|
int error = vevo_property_get( instance, "in_parameters", i, ¶m);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
error = vevo_property_get( param, "parent_template", 0, ¶m_templ );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
if( error != LIVIDO_NO_ERROR )
|
||||||
|
veejay_msg(0,"%s: parent_template not found in Parameter %d/%d, error code %d", __FUNCTION__, i, vj_np,error );
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
sprintf(vkey, "p%02d", i );
|
||||||
|
clone_prop_vevo( param_templ, fx_values, "default", vkey );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int livido_set_parameter_from_string( void *instance, int p, const char *str, void *fx_values )
|
||||||
|
{
|
||||||
|
void *param = NULL;
|
||||||
|
void *param_templ = NULL;
|
||||||
|
int error = vevo_property_get( instance, "in_parameters", p, ¶m );
|
||||||
|
if(error != VEVO_NO_ERROR )
|
||||||
|
return 0;
|
||||||
|
error = vevo_property_get( param, "parent_template",0,¶m_templ);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == VEVO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
int kind = 0;
|
||||||
|
error = vevo_property_get( param_templ, "HOST_kind",0,&kind );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == VEVO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
int res = 0;
|
||||||
|
char vkey[64];
|
||||||
|
sprintf(vkey, "p%02d", p );
|
||||||
|
|
||||||
|
switch(kind)
|
||||||
|
{
|
||||||
|
case HOST_PARAM_INDEX:
|
||||||
|
res = vevo_property_from_string( fx_values,str, vkey,1, VEVO_ATOM_TYPE_INT );
|
||||||
|
break;
|
||||||
|
case HOST_PARAM_NUMBER:
|
||||||
|
res = vevo_property_from_string( fx_values,str, vkey,1, VEVO_ATOM_TYPE_DOUBLE );
|
||||||
|
break;
|
||||||
|
case HOST_PARAM_SWITCH:
|
||||||
|
res = vevo_property_from_string( fx_values,str, vkey,1, VEVO_ATOM_TYPE_BOOL );
|
||||||
|
break;
|
||||||
|
case HOST_PARAM_COORD:
|
||||||
|
res = vevo_property_from_string( fx_values ,str, vkey,2, VEVO_ATOM_TYPE_DOUBLE );
|
||||||
|
break;
|
||||||
|
case HOST_PARAM_COLOR:
|
||||||
|
res = vevo_property_from_string( fx_values,str, vkey,3, VEVO_ATOM_TYPE_DOUBLE );
|
||||||
|
break;
|
||||||
|
case HOST_PARAM_TEXT:
|
||||||
|
res = vevo_property_from_string( fx_values,str, vkey,1, VEVO_ATOM_TYPE_STRING );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
// set plugin defaults
|
||||||
|
void livido_reverse_clone_parameter( void *instance, int seq, void *fx_value_port )
|
||||||
|
{
|
||||||
|
int vj_np = vevo_property_num_elements( instance, "in_parameters" );
|
||||||
|
int i;
|
||||||
|
for( i = 0; i < vj_np; i ++ )
|
||||||
|
{
|
||||||
|
char vkey[10];
|
||||||
|
void *param = NULL;
|
||||||
|
int error = vevo_property_get( instance, "in_parameters", i, ¶m);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
sprintf(vkey, "p%02d", i );
|
||||||
|
clone_prop_vevo( fx_value_port, param,vkey, "value" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void livido_clone_parameter( void *instance, int seq, void *fx_value_port )
|
||||||
|
{
|
||||||
|
int vj_np = vevo_property_num_elements( instance, "in_parameters" );
|
||||||
|
int i;
|
||||||
|
for( i = 0; i < vj_np; i ++ )
|
||||||
|
{
|
||||||
|
char vkey[10];
|
||||||
|
void *param = NULL;
|
||||||
|
int error = vevo_property_get( instance, "in_parameters", i, ¶m);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
sprintf(vkey, "p%02d", i );
|
||||||
|
clone_prop_vevo( fx_value_port, param,vkey, "value" );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void livido_set_parameter( void *instance, int seq, void *value )
|
||||||
|
{
|
||||||
|
void *param = NULL;
|
||||||
|
void *param_templ = NULL;
|
||||||
|
int error = vevo_property_get( instance, "in_parameters", seq, ¶m);
|
||||||
|
if( error == LIVIDO_NO_ERROR )
|
||||||
|
{
|
||||||
|
livido_set_parameter_f pctrl;
|
||||||
|
error = vevo_property_get( param, "HOST_parameter_func", 0, &pctrl );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == 0 );
|
||||||
|
#endif
|
||||||
|
(*pctrl)( instance, value );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void* deal_with_livido( void *handle, const char *name )
|
||||||
|
{
|
||||||
|
void *port = vevo_port_new( VEVO_LIVIDO_PORT );
|
||||||
|
char *plugin_name = NULL;
|
||||||
|
int lvd = 1;
|
||||||
|
int type = VEVO_LIVIDO_PORT;
|
||||||
|
|
||||||
|
livido_setup_f livido_setup = dlsym( handle, "livido_setup" );
|
||||||
|
|
||||||
|
livido_setup_t setup[] = {
|
||||||
|
{ (void(*)()) vj_malloc },
|
||||||
|
{ (void(*)()) free },
|
||||||
|
{ (void(*)())memset },
|
||||||
|
{ (void(*)())memcpy },
|
||||||
|
{ (void(*)())vevo_port_new },
|
||||||
|
{ (void(*)())vevo_port_free },
|
||||||
|
{ (void(*)())vevo_property_set },
|
||||||
|
{ (void(*)())vevo_property_get },
|
||||||
|
{ (void(*)())vevo_property_num_elements },
|
||||||
|
{ (void(*)())vevo_property_atom_type },
|
||||||
|
{ (void(*)())vevo_property_element_size },
|
||||||
|
{ (void(*)())vevo_list_properties }
|
||||||
|
};
|
||||||
|
|
||||||
|
void *livido_plugin = livido_setup( setup, 100 );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( livido_plugin != NULL );
|
||||||
|
#endif
|
||||||
|
if(!livido_plugin)
|
||||||
|
{
|
||||||
|
vevo_port_free( port );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
vevo_property_set( port, "instance", LIVIDO_ATOM_TYPE_PORTPTR, 1,&livido_plugin );
|
||||||
|
vevo_property_set( port, "handle", LIVIDO_ATOM_TYPE_VOIDPTR,1,&handle );
|
||||||
|
|
||||||
|
void *filter_templ = NULL;
|
||||||
|
int error = vevo_property_get( livido_plugin, "filters",0,&filter_templ);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
int n_params = livido_scan_parameters( filter_templ, port );
|
||||||
|
|
||||||
|
//@ p%02d is a key with a portptr value. it contains min,max,defaults for each plugin setup()
|
||||||
|
int is_mix = 0;
|
||||||
|
int n_inputs = livido_property_num_elements( filter_templ, "in_channel_templates" );
|
||||||
|
|
||||||
|
//@ Now, prefix the name with LVD
|
||||||
|
plugin_name = get_str_vevo( filter_templ, "name" );
|
||||||
|
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( plugin_name != NULL );
|
||||||
|
#endif
|
||||||
|
char *clone_name = (char*) malloc( strlen(plugin_name) + 4);
|
||||||
|
sprintf(clone_name, "LVD%s", plugin_name );
|
||||||
|
|
||||||
|
vevo_property_set( port, "num_params", VEVO_ATOM_TYPE_INT, 1, &n_params );
|
||||||
|
vevo_property_set( port, "name", VEVO_ATOM_TYPE_STRING,1, &clone_name );
|
||||||
|
vevo_property_set( port, "num_inputs", VEVO_ATOM_TYPE_INT,1, &n_inputs);
|
||||||
|
vevo_property_set( port, "info", LIVIDO_ATOM_TYPE_PORTPTR,1,&filter_templ );
|
||||||
|
vevo_property_set( port, "HOST_plugin_type", VEVO_ATOM_TYPE_INT,1,&livido_signature_);
|
||||||
|
|
||||||
|
free(clone_name);
|
||||||
|
free(plugin_name);
|
||||||
|
|
||||||
|
return port;
|
||||||
|
}
|
||||||
|
|
||||||
|
void livido_set_pref_palette( int pref_palette )
|
||||||
|
{
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( pref_palette == PIX_FMT_YUV420P || pref_palette == PIX_FMT_YUV422P ||
|
||||||
|
pref_palette == PIX_FMT_YUV444P);
|
||||||
|
#endif
|
||||||
|
pref_palette_ffmpeg_ = pref_palette;
|
||||||
|
pref_palette_ = select_livido_palette( pref_palette );
|
||||||
|
}
|
||||||
|
|
||||||
|
void livido_exit( void )
|
||||||
|
{
|
||||||
|
}
|
||||||
38
veejay-ng/libplugger/livido-loader.h
Normal file
38
veejay-ng/libplugger/livido-loader.h
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
#ifndef LIVIDO_LOADER_H
|
||||||
|
#define LIVIDO_LOADER_H
|
||||||
|
|
||||||
|
void *deal_with_livido(void *handle, const char *name);
|
||||||
|
|
||||||
|
void *livido_plug_init( void *plugin, int w, int h );
|
||||||
|
|
||||||
|
void livido_plug_deinit( void *plugin );
|
||||||
|
|
||||||
|
void livido_plug_free( void *plugin );
|
||||||
|
|
||||||
|
void livido_plug_process( void *plugin, double timecode );
|
||||||
|
|
||||||
|
//@ set preferred palette
|
||||||
|
void livido_set_pref_palette( int pref_palette );
|
||||||
|
|
||||||
|
int livido_plug_inplace( void *instance );
|
||||||
|
|
||||||
|
void livido_push_channel( void *instance,const char *key, int n, VJFrame *frame );
|
||||||
|
#define livido_push_input_channel(instance,n,frame) livido_push_channel( instance, "in_channels", n , frame )
|
||||||
|
#define livido_push_output_channel(instance,n,frame) livido_push_channel( instance, "out_channels",n, frame )
|
||||||
|
|
||||||
|
//@ get default values
|
||||||
|
void livido_plug_retrieve_values( void *instance, void *fx_values );
|
||||||
|
|
||||||
|
//@ takes another port and clones into value
|
||||||
|
void livido_clone_parameter( void *instance, int seq, void *fx_value_port );
|
||||||
|
|
||||||
|
void livido_reverse_clone_parameter( void *instance, int seq, void *fx_value_port );
|
||||||
|
|
||||||
|
void livido_set_parameter( void *instance, int seq, void *value );
|
||||||
|
|
||||||
|
void livido_set_parameters_scaled( void *plugin, int *args );
|
||||||
|
|
||||||
|
void livido_exit( void );
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
720
veejay-ng/libplugger/plugload.c
Normal file
720
veejay-ng/libplugger/plugload.c
Normal file
@@ -0,0 +1,720 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2002-2006 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/** \defgroup VeVoPlugin Plugin Loader
|
||||||
|
*
|
||||||
|
* The Plugin Loader can handle:
|
||||||
|
* -# Livido plugins
|
||||||
|
* -# Frei0r plugins
|
||||||
|
* -# FreeFrame plugins
|
||||||
|
*/
|
||||||
|
#include <config.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <dlfcn.h>
|
||||||
|
#include <libhash/hash.h>
|
||||||
|
#include <libvjmsg/vj-common.h>
|
||||||
|
#include <libvjmem/vjmem.h>
|
||||||
|
#include <veejay/portdef.h>
|
||||||
|
#include <libvevo/libvevo.h>
|
||||||
|
#include <libplugger/defs.h>
|
||||||
|
#include <libplugger/specs/livido.h>
|
||||||
|
#include <libyuv/yuvconv.h>
|
||||||
|
#include <ffmpeg/avcodec.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <libplugger/plugload.h>
|
||||||
|
#include <libplugger/freeframe-loader.h>
|
||||||
|
#include <libplugger/frei0r-loader.h>
|
||||||
|
#include <libplugger/livido-loader.h>
|
||||||
|
#include <ffmpeg/avcodec.h>
|
||||||
|
#include <ffmpeg/avutil.h>
|
||||||
|
|
||||||
|
static vevo_port_t **index_map_ = NULL;
|
||||||
|
static vevo_port_t *illegal_plugins_ =NULL;
|
||||||
|
static int index_ = 0;
|
||||||
|
static void *buffer_ = NULL;
|
||||||
|
static void *buffer2_ = NULL;
|
||||||
|
static void *buffer_b_ = NULL;
|
||||||
|
static int base_width_ =0;
|
||||||
|
static int base_height_ =0;
|
||||||
|
static int n_ff_ = 0;
|
||||||
|
static int n_fr_ = 0;
|
||||||
|
static int n_lvd_ = 0;
|
||||||
|
static int base_fmt_ = -1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* port of plugins by name
|
||||||
|
*
|
||||||
|
* by name: get a value of a parameter, set a value of a parameter
|
||||||
|
*
|
||||||
|
* get parameter description
|
||||||
|
* get plugin name etc
|
||||||
|
*
|
||||||
|
* this will make libvje obsolete
|
||||||
|
* this will make the fx chain structure in libsample obsolete
|
||||||
|
* this will change vj performer
|
||||||
|
* this will change vj event
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* merge vevo-sample to sampleadm and merge with libstream
|
||||||
|
* before continuing.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int select_f( const struct dirent *d )
|
||||||
|
{
|
||||||
|
return ( strstr( d->d_name, ".so" ) != NULL );
|
||||||
|
}
|
||||||
|
|
||||||
|
int plug_set_param_from_str( void *plugin , int p, const char *str, void *values )
|
||||||
|
{
|
||||||
|
int type = 0;
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( plugin != NULL );
|
||||||
|
#endif
|
||||||
|
return livido_set_parameter_from_string( plugin, p, str, values );
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *instantiate_plugin( void *plugin, int w , int h )
|
||||||
|
{
|
||||||
|
int type = 0;
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( plugin != NULL );
|
||||||
|
#endif
|
||||||
|
int error = vevo_property_get( plugin, "HOST_plugin_type", 0, &type);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == VEVO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
/*
|
||||||
|
if( type == VEVO_FF_PORT )
|
||||||
|
{
|
||||||
|
return freeframe_plug_init( plugin,w,h );
|
||||||
|
}
|
||||||
|
else if( type == VEVO_FR_PORT )
|
||||||
|
{
|
||||||
|
return frei0r_plug_init( plugin,w,h);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
if ( type == VEVO_PLUG_LIVIDO )
|
||||||
|
return livido_plug_init(plugin,w,h);
|
||||||
|
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( type == VEVO_PLUG_LIVIDO );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}//@ warning: if init fails, plugin data should be freed (failed plugin)
|
||||||
|
|
||||||
|
static void deinstantiate_plugin( void *instance )
|
||||||
|
{
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( instance != NULL );
|
||||||
|
#endif
|
||||||
|
generic_deinit_f gin;
|
||||||
|
int error = vevo_property_get( instance, "HOST_plugin_deinit_f", 0, &gin );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == 0 );
|
||||||
|
#endif
|
||||||
|
(*gin)( instance );
|
||||||
|
}
|
||||||
|
|
||||||
|
static void add_to_plugin_list( const char *path )
|
||||||
|
{
|
||||||
|
if(!path)
|
||||||
|
return;
|
||||||
|
|
||||||
|
int i;
|
||||||
|
char fullname[PATH_MAX+1];
|
||||||
|
struct dirent **files = NULL;
|
||||||
|
struct stat sbuf;
|
||||||
|
int res = 0;
|
||||||
|
|
||||||
|
memset( &sbuf,0 ,sizeof(struct stat));
|
||||||
|
res = stat( path, &sbuf );
|
||||||
|
|
||||||
|
if( res != 0 )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "File or directory '%s' does not exist (skip)", path);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( S_ISREG( sbuf.st_mode ) )
|
||||||
|
{
|
||||||
|
vevo_property_set( illegal_plugins_, path, LIVIDO_ATOM_TYPE_STRING, 0, NULL );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !S_ISDIR( sbuf.st_mode ) )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Not a directory : '%s'", path );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int n_files = scandir( path, &files, select_f, alphasort );
|
||||||
|
if( n_files <= 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
for( i = 0 ; i < n_files; i ++ )
|
||||||
|
{
|
||||||
|
char *name = files[i]->d_name;
|
||||||
|
|
||||||
|
if( vevo_property_get( illegal_plugins_, name, 0 , NULL ) == 0 )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "'%s' marked as bad", name);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
bzero(fullname , PATH_MAX+1);
|
||||||
|
|
||||||
|
sprintf(fullname, "%s/%s", path,name );
|
||||||
|
|
||||||
|
void *handle = dlopen(fullname, RTLD_NOW );
|
||||||
|
|
||||||
|
if(!handle)
|
||||||
|
{
|
||||||
|
veejay_msg(0,"\tPlugin '%s' error '%s'", fullname,
|
||||||
|
dlerror() );
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
veejay_msg(0, "\tOpened plugin '%s' in '%s'", name,path );
|
||||||
|
|
||||||
|
if(dlsym( handle, "plugMain" ))
|
||||||
|
{
|
||||||
|
void *plugin = deal_with_ff( handle, name );
|
||||||
|
if( plugin )
|
||||||
|
{
|
||||||
|
index_map_[ index_ ] = plugin;
|
||||||
|
index_ ++;
|
||||||
|
n_ff_ ++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
dlclose( handle );
|
||||||
|
}
|
||||||
|
|
||||||
|
if(dlsym( handle, "f0r_construct" ))
|
||||||
|
{
|
||||||
|
void *plugin = deal_with_fr( handle, name );
|
||||||
|
if( plugin )
|
||||||
|
{
|
||||||
|
index_map_[ index_ ] = plugin;
|
||||||
|
index_ ++;
|
||||||
|
n_fr_ ++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
dlclose( handle );
|
||||||
|
}
|
||||||
|
|
||||||
|
if(dlsym( handle, "livido_setup" ))
|
||||||
|
{
|
||||||
|
void *plugin = deal_with_livido( handle , name );
|
||||||
|
if( plugin )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "Load livido plugin '%s' to slot %d",name, index_);
|
||||||
|
|
||||||
|
index_map_[index_] = plugin;
|
||||||
|
index_ ++;
|
||||||
|
n_lvd_ ++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Failed to load '%s'",name );
|
||||||
|
dlclose(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for( i = 0; i < n_files; i ++ )
|
||||||
|
free( files[i] );
|
||||||
|
free(files);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_plugin(void *plugin)
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( plugin != NULL );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int type = 0;
|
||||||
|
int error = vevo_property_get( plugin, "HOST_plugin_type", 0, &type);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == 0 );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char *name = get_str_vevo( plugin, "name" );
|
||||||
|
|
||||||
|
veejay_msg(0, "%s: Free plugin '%s' %p, Type %x",
|
||||||
|
__FUNCTION__,name,plugin,type );
|
||||||
|
free(name);
|
||||||
|
|
||||||
|
int n = 0;
|
||||||
|
|
||||||
|
// freeframe_plug_free( plugin );
|
||||||
|
// frei0r_plug_free( plugin );
|
||||||
|
// livido_plug_free( plugin );
|
||||||
|
|
||||||
|
|
||||||
|
// free_parameters(plugin,n);
|
||||||
|
|
||||||
|
void *handle = NULL;
|
||||||
|
error = vevo_property_get( plugin, "handle", 0 , &handle );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == 0 );
|
||||||
|
#endif
|
||||||
|
if( handle ) dlclose( handle );
|
||||||
|
// vevo_port_free( plugin );
|
||||||
|
/*
|
||||||
|
// livido_port_rrfree( plugin );
|
||||||
|
switch(type)
|
||||||
|
{
|
||||||
|
case VEVO_PLUG_LIVIDO: livido_plug_free( plugin ); break;
|
||||||
|
case VEVO_PLUG_FR:break;
|
||||||
|
case VEVO_PLUG_FF:break;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// livido_port_rrfree( plugin );
|
||||||
|
if( type == VEVO_PLUG_LIVIDO )
|
||||||
|
{
|
||||||
|
//@FIXME
|
||||||
|
// livido_port_free( plugin );
|
||||||
|
vevo_port_recursive_free( plugin );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_plugins()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
vevo_port_recursive_free( illegal_plugins_ );
|
||||||
|
|
||||||
|
for( i = 0; i < index_ ; i ++ )
|
||||||
|
free_plugin( index_map_[i]);
|
||||||
|
free( index_map_ );
|
||||||
|
index_ = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define CONFIG_FILE_LEN 65535
|
||||||
|
|
||||||
|
static int scan_plugins()
|
||||||
|
{
|
||||||
|
char *home = getenv( "HOME" );
|
||||||
|
char path[PATH_MAX];
|
||||||
|
char data[CONFIG_FILE_LEN];
|
||||||
|
if(!home) return 0;
|
||||||
|
|
||||||
|
sprintf( path , "%s/.veejay/plugins" , home );
|
||||||
|
|
||||||
|
int fd = open( path, O_RDONLY );
|
||||||
|
if( fd < 0 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
bzero( data, CONFIG_FILE_LEN );
|
||||||
|
|
||||||
|
if( read( fd, data, CONFIG_FILE_LEN ) > 0 )
|
||||||
|
{
|
||||||
|
int len = strlen(data);
|
||||||
|
int j;
|
||||||
|
int k = 0;
|
||||||
|
char value[PATH_MAX];
|
||||||
|
bzero( value, PATH_MAX );
|
||||||
|
|
||||||
|
char *pch = strtok( data, "\n" );
|
||||||
|
while( pch != NULL )
|
||||||
|
{
|
||||||
|
veejay_msg(0, "Add '%s'",pch );
|
||||||
|
add_to_plugin_list( pch );
|
||||||
|
pch = strtok( NULL, "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
for( j=0; j < len; j ++ )
|
||||||
|
{
|
||||||
|
if(data[j] == '\0' )
|
||||||
|
break;
|
||||||
|
if( data[j] == '\n' )
|
||||||
|
{ add_to_plugin_list( value ); bzero(value,PATH_MAX); k =0;}
|
||||||
|
|
||||||
|
if( isascii( data[j] ) && data[j] != '\n')
|
||||||
|
{ value[k] = data[j]; if( k < PATH_MAX) k ++; }
|
||||||
|
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void plug_sys_free(void)
|
||||||
|
{
|
||||||
|
free_plugins();
|
||||||
|
if( buffer_ )
|
||||||
|
free( buffer_ );
|
||||||
|
if( buffer2_ )
|
||||||
|
free( buffer2_ );
|
||||||
|
if( buffer_b_)
|
||||||
|
free( buffer_b_ );
|
||||||
|
}
|
||||||
|
|
||||||
|
void plug_sys_init( int fmt, int w, int h )
|
||||||
|
{
|
||||||
|
buffer_ = (void*) malloc( w * h * 4);
|
||||||
|
memset( buffer_, 0, w * h * 4);
|
||||||
|
buffer2_ = (void*) malloc( w * h * 4);
|
||||||
|
memset( buffer2_, 0, w * h * 4);
|
||||||
|
buffer_b_ = (void*) malloc( w * h * 4);
|
||||||
|
memset( buffer_b_, 0, w * h * 4);
|
||||||
|
|
||||||
|
base_width_ = w;
|
||||||
|
base_height_ = h;
|
||||||
|
|
||||||
|
switch(fmt)
|
||||||
|
{
|
||||||
|
case FMT_420:
|
||||||
|
base_fmt_ = PIX_FMT_YUV420P;
|
||||||
|
break;
|
||||||
|
case FMT_422:
|
||||||
|
base_fmt_ = PIX_FMT_YUV422P;
|
||||||
|
break;
|
||||||
|
case FMT_444:
|
||||||
|
base_fmt_ = PIX_FMT_YUV444P;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
veejay_msg(0, "%s: Unknown pixel format",__FUNCTION__);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert(0);
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
plug_sys_set_palette( base_fmt_ );
|
||||||
|
}
|
||||||
|
|
||||||
|
int plug_sys_detect_plugins(void)
|
||||||
|
{
|
||||||
|
index_map_ = (vevo_port_t**) malloc(sizeof(vevo_port_t*) * 256 );
|
||||||
|
|
||||||
|
illegal_plugins_ = vevo_port_new( VEVO_ILLEGAL );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( illegal_plugins_ != NULL );
|
||||||
|
#endif
|
||||||
|
if(!scan_plugins())
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR,
|
||||||
|
"Cannot locate plugins in $HOME/.veejay/plugins" );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "Veejay plugin system initialized");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "-------------------------------------------------------------------------------------------");
|
||||||
|
//@ display copyright notice in binary form
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\tFreeFrame - cross-platform real-time video effects");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\t(C) Copyright 2002 Marcus Clements www.freeframe.org. All Rights reserved.");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\thttp://freeframe.sourceforge.net");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\tFound %d FreeFrame %s",
|
||||||
|
n_ff_ , n_ff_ == 1 ? "plugin" : "plugins" );
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\tfrei0r - a minimalistic plugin API for video effects");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\t(C) Copyright 2004 Georg Seidel, Phillip Promesberger and Martin Bayer.");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\t Licensed as GPL");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\thttp://www.piksel.org/frei0r");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\tFound %d frei0r %s",
|
||||||
|
n_fr_ , n_fr_ == 1 ? "plugin" : "plugins" );
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\tLivido - (Linux) Video Dynamic Objects" );
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\t(C) Copyright 2005 Gabriel 'Salsaman' Finch, Niels Elburg, Dennis 'Jaromil' Rojo");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\t Daniel Fischer, Martin Bayer, Kentaro Fukuchi and Andraz Tori");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\t Licensed as LGPL");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\tFound %d Livido %s",
|
||||||
|
n_lvd_, n_lvd_ == 1 ? "plugin" :"plugins" );
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "-------------------------------------------------------------------------------------------");
|
||||||
|
|
||||||
|
|
||||||
|
return index_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void plug_clone_from_parameters(void *instance, void *fx_values)
|
||||||
|
{
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( instance != NULL );
|
||||||
|
#endif
|
||||||
|
generic_reverse_clone_parameter_f grc;
|
||||||
|
int error = vevo_property_get( instance, "HOST_plugin_param_reverse_f", 0, &grc );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == 0 );
|
||||||
|
#endif
|
||||||
|
(*grc)( instance ,0, fx_values );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void plug_clone_parameters( void *instance, void *fx_values )
|
||||||
|
{
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( instance != NULL );
|
||||||
|
#endif
|
||||||
|
generic_clone_parameter_f gcc;
|
||||||
|
int error = vevo_property_get( instance, "HOST_plugin_param_clone_f", 0, &gcc );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == 0 );
|
||||||
|
#endif
|
||||||
|
(*gcc)( instance, 0, fx_values );
|
||||||
|
}
|
||||||
|
|
||||||
|
void plug_set_parameter( void *instance, int seq_num,int n_elements,void *value )
|
||||||
|
{
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( instance != NULL );
|
||||||
|
#endif
|
||||||
|
generic_push_parameter_f gpp;
|
||||||
|
int error = vevo_property_get( instance, "HOST_plugin_param_f", 0, &gpp );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == 0 );
|
||||||
|
#endif
|
||||||
|
(*gpp)( instance, seq_num, value );
|
||||||
|
}
|
||||||
|
|
||||||
|
void plug_get_defaults( void *instance, void *fx_values )
|
||||||
|
{
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( instance != NULL );
|
||||||
|
#endif
|
||||||
|
generic_default_values_f gdv;
|
||||||
|
int error = vevo_property_get( instance, "HOST_plugin_defaults_f", 0, &gdv );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == 0 );
|
||||||
|
#endif
|
||||||
|
(*gdv)( instance, fx_values );
|
||||||
|
}
|
||||||
|
void plug_set_defaults( void *instance, void *fx_values )
|
||||||
|
{
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( instance != NULL );
|
||||||
|
#endif
|
||||||
|
generic_clone_parameter_f gcp;
|
||||||
|
int error = vevo_property_get( instance, "HOST_plugin_param_clone_f", 0, &gcp );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == 0 );
|
||||||
|
#endif
|
||||||
|
(*gcp)( instance, 0,fx_values );
|
||||||
|
}
|
||||||
|
void plug_deactivate( void *instance )
|
||||||
|
{
|
||||||
|
deinstantiate_plugin( instance );
|
||||||
|
}
|
||||||
|
|
||||||
|
void *plug_activate( int fx_id )
|
||||||
|
{
|
||||||
|
if(!index_map_[fx_id] )
|
||||||
|
{
|
||||||
|
veejay_msg(0,"Plugin %d is not loaded",fx_id);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return instantiate_plugin( index_map_[fx_id], base_width_,base_height_);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *plug_get_name( int fx_id )
|
||||||
|
{
|
||||||
|
if(!index_map_[fx_id] )
|
||||||
|
return NULL;
|
||||||
|
char *name = get_str_vevo( index_map_[fx_id], "name" );
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
int plug_get_fx_id_by_name( const char *name )
|
||||||
|
{
|
||||||
|
int n = 0;
|
||||||
|
for(n = 0; n < index_; n ++ )
|
||||||
|
{
|
||||||
|
char *plugname = plug_get_name( n );
|
||||||
|
if(plugname)
|
||||||
|
{
|
||||||
|
if( strncasecmp(name,plugname,strlen(plugname)) == 0 )
|
||||||
|
{
|
||||||
|
free(plugname);
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
free(plugname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int plug_get_num_input_channels( int fx_id )
|
||||||
|
{
|
||||||
|
if(!index_map_[fx_id] )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
int res = 0;
|
||||||
|
int error = vevo_property_get( index_map_[fx_id], "num_inputs",0,&res);
|
||||||
|
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == VEVO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
int plug_get_num_parameters( int fx_id )
|
||||||
|
{
|
||||||
|
if(!index_map_[fx_id] )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
int res = 0;
|
||||||
|
int error = vevo_property_get( index_map_[fx_id], "num_params",0,&res);
|
||||||
|
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == VEVO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
void plug_control( int fx_id, void *instance, int *args )
|
||||||
|
{
|
||||||
|
vevo_port_t *port = index_map_[ fx_id ];
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert ( port != NULL );
|
||||||
|
#endif
|
||||||
|
int type = 0;
|
||||||
|
int error= 0;
|
||||||
|
error = vevo_property_get( port, "type", 0, &type);
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
if( type == VEVO_FF_PORT )
|
||||||
|
{
|
||||||
|
freeframe_plug_control( port, args );
|
||||||
|
}
|
||||||
|
else if ( type == VEVO_FR_PORT )
|
||||||
|
{
|
||||||
|
frei0r_plug_control( port, args );
|
||||||
|
}
|
||||||
|
else if ( type == VEVO_LIVIDO_PORT )
|
||||||
|
{
|
||||||
|
// livido_plug_control( port, args );
|
||||||
|
livido_set_parameters_scaled( port, args );
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
void plug_sys_set_palette( int pref_palette )
|
||||||
|
{
|
||||||
|
base_fmt_ = pref_palette;
|
||||||
|
livido_set_pref_palette( base_fmt_ );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
static void plug_process_mix( VJFrame *frame, VJFrame *frame_b,int fx_id )
|
||||||
|
{
|
||||||
|
void *plugin = index_map_[fx_id];
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( plugin != NULL );
|
||||||
|
assert( frame != NULL );
|
||||||
|
assert( frame_b != NULL );
|
||||||
|
#endif
|
||||||
|
util_convertrgba32( frame->data, base_width_, base_height_, base_format_, frame->shift_v, buffer_ );
|
||||||
|
|
||||||
|
util_convertrgba32( frame_b->data,base_width_,base_height_, base_format_, frame_b->shift_v, buffer_b_ );
|
||||||
|
|
||||||
|
process_mix_plugin( plugin, buffer_, buffer_b_, buffer2_ );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( buffer2_ != NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
if( base_fmt_ == 0 )
|
||||||
|
{
|
||||||
|
assert( (frame->width * frame->height) == frame->len );
|
||||||
|
assert( (frame->uv_width * frame->uv_height) == frame->uv_len );
|
||||||
|
|
||||||
|
assert( (frame->width / 2 ) == frame->uv_width );
|
||||||
|
assert( (frame->height /2 ) == frame->uv_height );
|
||||||
|
|
||||||
|
assert( frame->shift_v == 1 );
|
||||||
|
assert( frame->shift_h == 1 );
|
||||||
|
|
||||||
|
}
|
||||||
|
if( base_fmt_ == 1 )
|
||||||
|
{
|
||||||
|
assert( (frame->width * frame->height) == frame->len );
|
||||||
|
assert( (frame->uv_width * frame->uv_height) == frame->uv_len );
|
||||||
|
assert( frame->width /2 == frame->uv_width );
|
||||||
|
assert( (frame->height ) == frame->uv_height );
|
||||||
|
assert( frame->shift_v == 0 );
|
||||||
|
assert( frame->shift_h == 1 );
|
||||||
|
|
||||||
|
}
|
||||||
|
assert( base_fmt_ == 0 || base_fmt_ == 1 );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
util_convertsrc( buffer2_, base_width_, base_height_, base_format_, frame->data );
|
||||||
|
}*/
|
||||||
|
|
||||||
|
void plug_push_frame( void *instance, int out, int seq_num, void *frame_info )
|
||||||
|
{
|
||||||
|
VJFrame *frame = (VJFrame*) frame_info;
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( instance != NULL );
|
||||||
|
#endif
|
||||||
|
generic_push_channel_f gpu;
|
||||||
|
int error = vevo_property_get( instance, "HOST_plugin_push_f", 0, &gpu );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == 0 );
|
||||||
|
#endif
|
||||||
|
(*gpu)( instance, (out ? "out_channels" : "in_channels" ), seq_num, frame );
|
||||||
|
}
|
||||||
|
|
||||||
|
void plug_process( void *instance )
|
||||||
|
{
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( instance != NULL );
|
||||||
|
#endif
|
||||||
|
generic_process_f gpf;
|
||||||
|
int error = vevo_property_get( instance, "HOST_plugin_process_f", 0, &gpf );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( error == 0 );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
(*gpf)( instance,0.0 );
|
||||||
|
|
||||||
|
/*
|
||||||
|
// it is frei0r or freeframe mixing plugin
|
||||||
|
int is_mix = 0;
|
||||||
|
error = vevo_property_get( plugin, "mixer", 0, &is_mix );
|
||||||
|
#ifdef HAVE_STRICT_
|
||||||
|
assert( error == LIVIDO_NO_ERROR );
|
||||||
|
#endif
|
||||||
|
if( is_mix )
|
||||||
|
{
|
||||||
|
plug_process_mix( frame, b, fx_id );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
util_convertrgba32( frame->data, base_width_, base_height_, base_format_, frame->shift_v, buffer_ );
|
||||||
|
|
||||||
|
void *res_frame = process_plug_plugin( plugin, buffer_, buffer2_ );
|
||||||
|
#ifdef STRICT_CHECKING
|
||||||
|
assert( res_frame != NULL );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
util_convertsrc( res_frame, base_width_, base_height_, base_format_, frame->data );
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
43
veejay-ng/libplugger/plugload.h
Normal file
43
veejay-ng/libplugger/plugload.h
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#ifndef PLUGINLOADER_
|
||||||
|
#define PLUGINLOADER_
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2002-2006 Niels Elburg <nelburg@looze.net>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
video plugin loader library to wrap up all kinds of standards
|
||||||
|
*/
|
||||||
|
|
||||||
|
void plug_sys_free(void);
|
||||||
|
void plug_sys_init( int fmt, int w, int h );
|
||||||
|
void plug_sys_set_palette( int palette );
|
||||||
|
int plug_sys_detect_plugins(void);
|
||||||
|
char *plug_get_name( int fx_id );
|
||||||
|
int plug_get_fx_id_by_name( const char *name );
|
||||||
|
int plug_get_num_input_channels( int fx_id );
|
||||||
|
int plug_set_param_from_str( void *plugin , int p, const char *str, void *fx_values );
|
||||||
|
//@ initialize plugin
|
||||||
|
void *plug_activate( int fx_id );
|
||||||
|
void plug_deactivate( void *instance );
|
||||||
|
void plug_push_frame( void *instance, int out, int seq_num, void *frame );
|
||||||
|
void plug_process( void *instance );
|
||||||
|
void plug_get_defaults( void *instance, void *fx_values );
|
||||||
|
void plug_set_parameter( void *instance, int seq_num, int n_elements,void *value );
|
||||||
|
int plug_inplace( void *instance );
|
||||||
|
|
||||||
|
#endif
|
||||||
207
veejay-ng/libplugger/specs/FreeFrame.h
Normal file
207
veejay-ng/libplugger/specs/FreeFrame.h
Normal file
@@ -0,0 +1,207 @@
|
|||||||
|
#ifndef __FREEFRAME_H__
|
||||||
|
#define __FREEFRAME_H__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// FreeFrame.h
|
||||||
|
//
|
||||||
|
// FreeFrame Open Video Plugin Prototype
|
||||||
|
// C Version
|
||||||
|
|
||||||
|
// www.freeframe.org
|
||||||
|
// marcus@freeframe.org
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Copyright (c) 2002, Marcus Clements www.freeframe.org
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
FreeFrame 1.0 upgrade by Pete Warden
|
||||||
|
www.petewarden.com
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in
|
||||||
|
the documentation and/or other materials provided with the
|
||||||
|
distribution.
|
||||||
|
* Neither the name of FreeFrame nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived
|
||||||
|
from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef LINUX
|
||||||
|
|
||||||
|
typedef unsigned int DWORD;
|
||||||
|
typedef void * LPVOID;
|
||||||
|
typedef unsigned char BYTE;
|
||||||
|
|
||||||
|
#elif MACOS
|
||||||
|
|
||||||
|
typedef unsigned int DWORD;
|
||||||
|
typedef unsigned char BYTE;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// #defines
|
||||||
|
|
||||||
|
#define FF_EFFECT 0
|
||||||
|
#define FF_FAIL 0xFFFFFFFF
|
||||||
|
#define FF_SUCCESS 0
|
||||||
|
#define FF_TRUE 1
|
||||||
|
#define FF_FALSE 0
|
||||||
|
|
||||||
|
#define FF_GETINFO 0
|
||||||
|
#define FF_INITIALISE 1
|
||||||
|
#define FF_DEINITIALISE 2
|
||||||
|
#define FF_PROCESSFRAME 3
|
||||||
|
#define FF_GETNUMPARAMETERS 4
|
||||||
|
#define FF_GETPARAMETERNAME 5
|
||||||
|
#define FF_GETPARAMETERDEFAULT 6
|
||||||
|
#define FF_GETPARAMETERDISPLAY 7
|
||||||
|
#define FF_SETPARAMETER 8
|
||||||
|
#define FF_GETPARAMETER 9
|
||||||
|
#define FF_GETPLUGINCAPS 10
|
||||||
|
#define FF_INSTANTIATE 11
|
||||||
|
#define FF_DEINSTANTIATE 12
|
||||||
|
#define FF_GETEXTENDEDINFO 13
|
||||||
|
#define FF_PROCESSFRAMECOPY 14
|
||||||
|
#define FF_GETPARAMETERTYPE 15
|
||||||
|
|
||||||
|
#define FF_CAP_16BITVIDEO 0
|
||||||
|
#define FF_CAP_24BITVIDEO 1
|
||||||
|
#define FF_CAP_32BITVIDEO 2
|
||||||
|
#define FF_CAP_PROCESSFRAMECOPY 3
|
||||||
|
#define FF_CAP_MINIMUMINPUTFRAMES 10
|
||||||
|
#define FF_CAP_MAXIMUMINPUTFRAMES 11
|
||||||
|
#define FF_CAP_COPYORINPLACE 15
|
||||||
|
|
||||||
|
#define FF_CAP_PREFER_NONE 0
|
||||||
|
#define FF_CAP_PREFER_INPLACE 1
|
||||||
|
#define FF_CAP_PREFER_COPY 2
|
||||||
|
#define FF_CAP_PREFER_BOTH 3
|
||||||
|
|
||||||
|
#define FF_TYPE_BOOLEAN 0
|
||||||
|
#define FF_TYPE_EVENT 1
|
||||||
|
#define FF_TYPE_RED 2
|
||||||
|
#define FF_TYPE_GREEN 3
|
||||||
|
#define FF_TYPE_BLUE 4
|
||||||
|
#define FF_TYPE_XPOS 5
|
||||||
|
#define FF_TYPE_YPOS 6
|
||||||
|
#define FF_TYPE_STANDARD 10
|
||||||
|
#define FF_TYPE_TEXT 100
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// FreeFrame types
|
||||||
|
|
||||||
|
typedef struct PlugInfoStructTag {
|
||||||
|
DWORD APIMajorVersion;
|
||||||
|
DWORD APIMinorVersion;
|
||||||
|
BYTE uniqueID[4]; // 4 chars uniqueID - not null terminated
|
||||||
|
BYTE pluginName[16]; // 16 chars plugin friendly name - not null terminated
|
||||||
|
DWORD pluginType; // Effect or source
|
||||||
|
} PlugInfoStruct;
|
||||||
|
|
||||||
|
typedef struct PlugExtendedInfoStructTag {
|
||||||
|
DWORD PluginMajorVersion;
|
||||||
|
DWORD PluginMinorVersion;
|
||||||
|
char* Description;
|
||||||
|
char* About;
|
||||||
|
DWORD FreeFrameExtendedDataSize;
|
||||||
|
void* FreeFrameExtendedDataBlock;
|
||||||
|
} PlugExtendedInfoStruct;
|
||||||
|
|
||||||
|
typedef struct VideoInfoStructTag {
|
||||||
|
DWORD frameWidth; // width of frame in pixels
|
||||||
|
DWORD frameHeight; // height of frame in pixels
|
||||||
|
DWORD bitDepth; // enumerated indicator of bit depth of video
|
||||||
|
// 0 = 16 bit 5-6-5 1 = 24bit packed 2 = 32bit
|
||||||
|
DWORD orientation; // video frame orientation meaningful values:
|
||||||
|
// 1 = origin at top left 2 = origin at bottom left
|
||||||
|
} VideoInfoStruct;
|
||||||
|
|
||||||
|
typedef struct ProcessFrameCopyStructTag {
|
||||||
|
DWORD numInputFrames;
|
||||||
|
void** InputFrames;
|
||||||
|
void* OutputFrame;
|
||||||
|
} ProcessFrameCopyStruct;
|
||||||
|
|
||||||
|
typedef struct SetParameterStructTag {
|
||||||
|
DWORD index;
|
||||||
|
float value;
|
||||||
|
} SetParameterStruct;
|
||||||
|
|
||||||
|
typedef union plugMainUnionTag {
|
||||||
|
DWORD ivalue;
|
||||||
|
float fvalue;
|
||||||
|
VideoInfoStruct *VISvalue;
|
||||||
|
PlugInfoStruct *PISvalue;
|
||||||
|
char *svalue;
|
||||||
|
} plugMainUnion;
|
||||||
|
|
||||||
|
typedef plugMainUnion plugMainType(DWORD, LPVOID, DWORD);
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Function prototypes
|
||||||
|
//
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// plugMain - The one and only exposed function
|
||||||
|
// parameters:
|
||||||
|
// functionCode - tells the plugin which function is being called
|
||||||
|
// pParam - 32-bit parameter or 32-bit pointer to parameter structure
|
||||||
|
// instanceID - 32-bit instance identifier. Only used for instance specific functions
|
||||||
|
//
|
||||||
|
// PLUGIN DEVELOPERS: you shouldn't need to change this function
|
||||||
|
//
|
||||||
|
// All parameters are cast as 32-bit untyped pointers and cast to appropriate
|
||||||
|
// types here
|
||||||
|
//
|
||||||
|
// All return values are cast to 32-bit untyped pointers here before return to
|
||||||
|
// the host
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
|
||||||
|
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, DWORD instanceID);
|
||||||
|
|
||||||
|
__declspec(dllexport) void* __stdcall plugMain(DWORD functionCode, LPVOID pParam, DWORD instanceID);
|
||||||
|
|
||||||
|
typedef __declspec(dllimport) void* (__stdcall *FF_Main_FuncPtr)(DWORD, LPVOID, DWORD);
|
||||||
|
|
||||||
|
#elif LINUX
|
||||||
|
|
||||||
|
plugMainUnion plugMain(DWORD functionCode, LPVOID pParam, DWORD instanceID);
|
||||||
|
|
||||||
|
#elif MACOS
|
||||||
|
|
||||||
|
typedef void* (*FF_Main_FuncPtr)(DWORD ,void *, DWORD);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
567
veejay-ng/libplugger/specs/frei0r.h
Normal file
567
veejay-ng/libplugger/specs/frei0r.h
Normal file
@@ -0,0 +1,567 @@
|
|||||||
|
/** @mainpage frei0r - a minimalistic plugin API for video effects
|
||||||
|
*
|
||||||
|
* @section sec_intro Introduction
|
||||||
|
*
|
||||||
|
* This is frei0r - a minimalistic plugin API for video effects.
|
||||||
|
*
|
||||||
|
* The main emphasis is on simplicity - there are many different applications
|
||||||
|
* that use video effects, and they all have different requirements regarding
|
||||||
|
* their internal plugin API. And that's why frei0r does not try to be a
|
||||||
|
* one-in-all general video plugin API, but instead an API for the most
|
||||||
|
* common video effects: simple filters, sources and mixers that can be
|
||||||
|
* controlled by parameters.
|
||||||
|
*
|
||||||
|
* It's our hope that this way these simple effects can be shared between
|
||||||
|
* many applications, avoiding their reimplementation by different
|
||||||
|
* projects.
|
||||||
|
*
|
||||||
|
* On the other hand, this is not meant as a competing standard to
|
||||||
|
* more ambitious efforts that try to satisfy the needs of many different
|
||||||
|
* applications and more complex effects.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @section sec_overview Overview
|
||||||
|
*
|
||||||
|
* If you are new to frei0r, the best thing is probably to have
|
||||||
|
* a look at the <a href="frei0r_8h-source.html">frei0r header</a>,
|
||||||
|
* which is quite simple.
|
||||||
|
*
|
||||||
|
* After that, you might want to look at the
|
||||||
|
* <a href="frei0r_8h.html">frei0r functions</a> in more detail.
|
||||||
|
*
|
||||||
|
* When developing a new frei0r effect, you have to choose
|
||||||
|
* - which effect type to use (\ref PLUGIN_TYPE),
|
||||||
|
* - which color model to use (\ref COLOR_MODEL), and
|
||||||
|
* - which parameter types (\ref PARAM_TYPE) your effect will support.
|
||||||
|
*
|
||||||
|
* To round things up, you should decide whether your effect should have
|
||||||
|
* an associated icon (\ref icons), and where it will be installed
|
||||||
|
* (\ref pluglocations).
|
||||||
|
*
|
||||||
|
* @section sec_changes Changes
|
||||||
|
*
|
||||||
|
* @subsection sec_changes_1_0_1_1 From frei0r 1.0 to frei0r 1.1
|
||||||
|
*
|
||||||
|
* - added specifications for plugin locations
|
||||||
|
* - added specifications for frei0r icons
|
||||||
|
* - added RGBA8888 color model
|
||||||
|
* - added packed32 color model
|
||||||
|
* - added better specification of color models
|
||||||
|
* - added string type
|
||||||
|
* - added bounds to resolution (8 <= width, height <= 2048)
|
||||||
|
* - width and height must be an integer multiple of 8
|
||||||
|
* - frame data must be 16 byte aligned
|
||||||
|
* - improved update specification (must not change parameters,
|
||||||
|
* must restore fpu state)
|
||||||
|
* - added note for applications to ignore effects with unknown fields
|
||||||
|
* - added new plugin types mixer2 and mixer3
|
||||||
|
* - added section about \ref concurrency
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \addtogroup pluglocations Plugin Locations
|
||||||
|
* @section sec_pluglocations Plugin Locations
|
||||||
|
*
|
||||||
|
* For Unix platforms there are rules for the location of frei0r plugins.
|
||||||
|
*
|
||||||
|
* frei0r 1.x plugin files should be located in
|
||||||
|
*
|
||||||
|
* - (1) /usr/lib/frei0r-1/\<vendor\>
|
||||||
|
* - (2) /usr/local/lib/frei0r-1/\<vendor\>
|
||||||
|
* - (3) $HOME/.frei0r-1/lib/\<vendor\>
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
*
|
||||||
|
* - /usr/lib/frei0r-1/mob/flippo.so
|
||||||
|
* - /usr/lib/frei0r-1/drone/flippo.so
|
||||||
|
* - /usr/local/lib/frei0r-1/gephex/coma/invert0r.so
|
||||||
|
* - /home/martin/.frei0r-1/lib/martin/test.so
|
||||||
|
*
|
||||||
|
* Like in these examples plugins should be placed in "vendor" subdirs
|
||||||
|
* to reduce name clashes.
|
||||||
|
*
|
||||||
|
* @subsection sec_order Plugin Loading Order
|
||||||
|
*
|
||||||
|
* The application shall load plugins in the following order: 3, 2, 1.
|
||||||
|
* If a name clash occurs (two or more frei0r plugins with identical
|
||||||
|
* effect name), the plugins in directory 3 have precedence over plugins
|
||||||
|
* in directory 2, and those in directory 2 have precedence over plugins
|
||||||
|
* in directory 1.
|
||||||
|
*
|
||||||
|
* This makes it possible for users to "override" effects that are
|
||||||
|
* installed in system wide directories by placing plugins in their
|
||||||
|
* home directory.
|
||||||
|
*
|
||||||
|
* The order of loading plugins inside each of the directories
|
||||||
|
* 1, 2, and 3 is not defined.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*\addtogroup icons Icons for frei0r effects
|
||||||
|
* @section sec_icons Icons for frei0r effects
|
||||||
|
*
|
||||||
|
* Each frei0r effect can have an associated icon.
|
||||||
|
*
|
||||||
|
* @subsection sec_icon_format Icon Format
|
||||||
|
*
|
||||||
|
* The format of frei0r icons must be png.
|
||||||
|
* Recommended resolution is 64x64.
|
||||||
|
* The icon filename of an effect with effect name "frei0r"
|
||||||
|
* must be "frei0r.png".
|
||||||
|
*
|
||||||
|
* @subsection sec_icon_location Icon location
|
||||||
|
*
|
||||||
|
* The exact location where the application should look for the
|
||||||
|
* plugin is platform dependant.
|
||||||
|
*
|
||||||
|
* For Windows platforms, the icon should be at the same place as
|
||||||
|
* the plugin containing the effect.
|
||||||
|
*
|
||||||
|
* For Unix platforms, the following mapping from plugin location
|
||||||
|
* to icon location must be used:
|
||||||
|
*
|
||||||
|
* Let \<plugin_path\>/\<plugin\> be a frei0r plugin with name \<effect_name\>.
|
||||||
|
* Then the corresponding icon (if any) shall be located in
|
||||||
|
* \<icon_path\>/\<effect_name\>.png.
|
||||||
|
* \<icon_path\> can be obtained in the following way:
|
||||||
|
*
|
||||||
|
* @verbatim
|
||||||
|
<plugin_path> | <icon_path>
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
$HOME/.frei0r-1/lib/<vendor> | $HOME/.frei0r-1/icons/<vendor>
|
||||||
|
/usr/local/lib/frei0r-1/<vendor> | /usr/local/share/frei0r-1/icons/<vendor>
|
||||||
|
/usr/lib/frei0r-1/<vendor> | /usr/share/frei0r-1/icons/<vendor>
|
||||||
|
* | <plugin_path>
|
||||||
|
@endverbatim
|
||||||
|
*
|
||||||
|
* (The wildcard '*' stands for any other plugin_path)
|
||||||
|
*
|
||||||
|
* For other platforms, no location is defined. We recommend to use the
|
||||||
|
* plugin path where possible.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \addtogroup concurrency Concurrency
|
||||||
|
* @section sec_concurrency Concurrency
|
||||||
|
*
|
||||||
|
* - \ref f0r_init
|
||||||
|
* - \ref f0r_deinit
|
||||||
|
*
|
||||||
|
* These methods must not be called more than once. It is obvious that no
|
||||||
|
* concurrent calls are allowed.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* - \ref f0r_get_plugin_info
|
||||||
|
* - \ref f0r_get_param_info
|
||||||
|
* - \ref f0r_construct
|
||||||
|
* - \ref f0r_destruct
|
||||||
|
*
|
||||||
|
* Concurrent calls of these functions are allowed.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* - \ref f0r_set_param_value
|
||||||
|
* - \ref f0r_get_param_value
|
||||||
|
* - \ref f0r_update
|
||||||
|
* - \ref f0r_update2
|
||||||
|
*
|
||||||
|
* If a thread is in one of these methods its allowed for another thread to
|
||||||
|
* enter one of theses methods for a different effect instance. But for one
|
||||||
|
* effect instance only one thread is allowed to execute any of these methods.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
* \brief This file defines the frei0r api, version 1.1.
|
||||||
|
*
|
||||||
|
* A conforming plugin must implement and export all functions declared in
|
||||||
|
* this header.
|
||||||
|
*
|
||||||
|
* A conforming application must accept only those plugins which use
|
||||||
|
* allowed values for the described fields.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef INCLUDED_FREI0R_H
|
||||||
|
#define INCLUDED_FREI0R_H
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The frei0r API major version
|
||||||
|
*/
|
||||||
|
#define FREI0R_MAJOR_VERSION 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The frei0r API minor version
|
||||||
|
*/
|
||||||
|
#define FREI0R_MINOR_VERSION 1
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* f0r_init() is called once when the plugin is loaded by the application.
|
||||||
|
* \see f0r_deinit
|
||||||
|
*/
|
||||||
|
int f0r_init();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* f0r_deinit is called once when the plugin is unloaded by the application.
|
||||||
|
* \see f0r_init
|
||||||
|
*/
|
||||||
|
void f0r_deinit();
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/** \addtogroup PLUGIN_TYPE Type of the Plugin
|
||||||
|
* These defines determine whether the plugin is a
|
||||||
|
* source, a filter or one of the two mixer types
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** one input and one output */
|
||||||
|
#define F0R_PLUGIN_TYPE_FILTER 0
|
||||||
|
/** just one output */
|
||||||
|
#define F0R_PLUGIN_TYPE_SOURCE 1
|
||||||
|
/** two inputs and one output */
|
||||||
|
#define F0R_PLUGIN_TYPE_MIXER2 2
|
||||||
|
/** three inputs and one output */
|
||||||
|
#define F0R_PLUGIN_TYPE_MIXER3 3
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/** \addtogroup COLOR_MODEL Color Models
|
||||||
|
* List of supported color models.
|
||||||
|
*
|
||||||
|
* Note: the color models are endian independent, because the
|
||||||
|
* color components are defined by their positon in memory, not
|
||||||
|
* by their significance in an uint32_t value.
|
||||||
|
*
|
||||||
|
* For effects that work on the color components,
|
||||||
|
* RGBA8888 is the recommended color model for frei0r-1.1 effects.
|
||||||
|
* For effects that only work on pixels, PACKED32 is the recommended
|
||||||
|
* color model since it helps the application to avoid unnecessary
|
||||||
|
* color conversions.
|
||||||
|
*
|
||||||
|
* Effects can choose an appropriate color model, applications must support
|
||||||
|
* all color models and do conversions if necessary. Source effects
|
||||||
|
* must not use the PACKED32 color model because the application must know
|
||||||
|
* in which color model the created framebuffers are represented.
|
||||||
|
*
|
||||||
|
* For each color model, a frame consists of width*height pixels which
|
||||||
|
* are stored row-wise and consecutively in memory. The size of a pixel is
|
||||||
|
* 4 bytes. There is no extra pitch parameter
|
||||||
|
* (i.e. the pitch is simply width*4).
|
||||||
|
*
|
||||||
|
* The following additional constraints must be honored:
|
||||||
|
* - The top-most line of a frame is stored first in memory.
|
||||||
|
* - A frame must be aligned to a 16 byte border in memory.
|
||||||
|
* - The width and height of a frame must be positive
|
||||||
|
* - The width and height of a frame must be integer multiples of 8
|
||||||
|
*
|
||||||
|
* These constraints make sure that each line is stored at an address aligned
|
||||||
|
* to 16 byte.
|
||||||
|
*/
|
||||||
|
/*@{*/
|
||||||
|
/**
|
||||||
|
* In BGRA8888, each pixel is represented by 4 consecutive
|
||||||
|
* unsigned bytes, where the first byte value represents
|
||||||
|
* the blue, the second the green, and the third the red color
|
||||||
|
* component of the pixel. The last value represents the
|
||||||
|
* alpha value.
|
||||||
|
*/
|
||||||
|
#define F0R_COLOR_MODEL_BGRA8888 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In RGBA8888, each pixel is represented by 4 consecutive
|
||||||
|
* unsigned bytes, where the first byte value represents
|
||||||
|
* the red, the second the green, and the third the blue color
|
||||||
|
* component of the pixel. The last value represents the
|
||||||
|
* alpha value.
|
||||||
|
*/
|
||||||
|
#define F0R_COLOR_MODEL_RGBA8888 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In PACKED32, each pixel is represented by 4 consecutive
|
||||||
|
* bytes, but it is not defined how the color componets are
|
||||||
|
* stored. The true color format could be RGBA8888,
|
||||||
|
* BGRA8888, a packed 32 bit YUV format, or any other
|
||||||
|
* color format that stores pixels in 32 bit.
|
||||||
|
*
|
||||||
|
* This is useful for effects that don't work on color but
|
||||||
|
* only on pixels (for example a mirror effect).
|
||||||
|
*
|
||||||
|
* Note that source effects must not use this color model.
|
||||||
|
*/
|
||||||
|
#define F0R_COLOR_MODEL_PACKED32 2
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The f0r_plugin_info_t structure is filled in by the plugin
|
||||||
|
* to tell the application about its name, type, number of parameters,
|
||||||
|
* and version.
|
||||||
|
*
|
||||||
|
* An application should ignore (i.e. not use) frei0r effects that
|
||||||
|
* have unknown values in the plugin_type or color_model field.
|
||||||
|
* It should also ignore effects with a too high frei0r_version.
|
||||||
|
*
|
||||||
|
* This is necessary to be able to extend the frei0r spec (e.g.
|
||||||
|
* by adding new color models or plugin types) in a way that does not
|
||||||
|
* result in crashes when loading effects that make use of these
|
||||||
|
* extensions into an older application.
|
||||||
|
*
|
||||||
|
* All strings are unicode, 0-terminated, and the encoding is utf-8.
|
||||||
|
*/
|
||||||
|
typedef struct f0r_plugin_info
|
||||||
|
{
|
||||||
|
const char* name; /**< The (short) name of the plugin */
|
||||||
|
const char* author; /**< The plugin author */
|
||||||
|
/** The plugin type
|
||||||
|
* \see PLUGIN_TYPE
|
||||||
|
*/
|
||||||
|
int plugin_type;
|
||||||
|
int color_model; /**< The color model used */
|
||||||
|
int frei0r_version; /**< The frei0r major version this plugin is built for*/
|
||||||
|
int major_version; /**< The major version of the plugin */
|
||||||
|
int minor_version; /**< The minor version of the plugin */
|
||||||
|
int num_params; /**< The number of parameters of the plugin */
|
||||||
|
const char* explanation; /**< An optional explanation string */
|
||||||
|
} f0r_plugin_info_t;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is called once after init. The plugin has to fill in the values in info.
|
||||||
|
*
|
||||||
|
* \param info Pointer to an info struct allocated by the application.
|
||||||
|
*/
|
||||||
|
void f0r_get_plugin_info(f0r_plugin_info_t* info);
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/** \addtogroup PARAM_TYPE Parameter Types
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parameter type for boolean values
|
||||||
|
* \see f0r_param_bool
|
||||||
|
*/
|
||||||
|
#define F0R_PARAM_BOOL 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parameter type for doubles
|
||||||
|
* \see f0r_param_double
|
||||||
|
*/
|
||||||
|
#define F0R_PARAM_DOUBLE 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parameter type for color
|
||||||
|
* \see f0r_param_color
|
||||||
|
*/
|
||||||
|
#define F0R_PARAM_COLOR 2
|
||||||
|
/**
|
||||||
|
* Parameter type for position
|
||||||
|
* \see f0r_param_position
|
||||||
|
*/
|
||||||
|
#define F0R_PARAM_POSITION 3
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parameter type for string
|
||||||
|
* \see f0r_param_string
|
||||||
|
*/
|
||||||
|
#define F0R_PARAM_STRING 4
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The boolean type. The allowed range of values is [0, 1].
|
||||||
|
* [0, 0.5[ is mapped to false and [0.5, 1] is mapped to true.
|
||||||
|
*/
|
||||||
|
typedef double f0r_param_bool;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The double type. The allowed range of values is [0, 1].
|
||||||
|
*/
|
||||||
|
typedef double f0r_param_double;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The color type. All three color components are in the range [0, 1].
|
||||||
|
*/
|
||||||
|
typedef struct f0r_param_color
|
||||||
|
{
|
||||||
|
float r; /**< red color component */
|
||||||
|
float g; /**< green color component */
|
||||||
|
float b; /**< blue color component */
|
||||||
|
} f0r_param_color_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The position type. Both position coordinates are in the range [0, 1].
|
||||||
|
*/
|
||||||
|
typedef struct f0r_param_position
|
||||||
|
{
|
||||||
|
double x; /**< x coordinate */
|
||||||
|
double y; /**< y coordinate */
|
||||||
|
} f0r_param_position_t;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The string type.
|
||||||
|
* Zero terminated array of 8-bit values in utf-8 encoding
|
||||||
|
*/
|
||||||
|
typedef char f0r_param_string;
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Similar to f0r_plugin_info_t, this structure is filled by the plugin
|
||||||
|
* for every parameter.
|
||||||
|
*
|
||||||
|
* All strings are unicode, 0-terminated, and the encoding is utf-8.
|
||||||
|
*/
|
||||||
|
typedef struct f0r_param_info
|
||||||
|
{
|
||||||
|
const char* name; /**<The (short) name of the param */
|
||||||
|
int type; /**<The type (see the F0R_PARAM_* defines) */
|
||||||
|
const char* explanation; /**<Optional explanation (can be 0) */
|
||||||
|
} f0r_param_info_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* f0r_get_param_info is called by the application to query the type of
|
||||||
|
* each parameter.
|
||||||
|
*
|
||||||
|
* \param info is allocated by the application and filled by the plugin
|
||||||
|
* \param param_index the index of the parameter to be queried (from 0 to
|
||||||
|
* num_params-1)
|
||||||
|
*/
|
||||||
|
void f0r_get_param_info(f0r_param_info_t* info, int param_index);
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transparent instance pointer of the frei0r effect.
|
||||||
|
*/
|
||||||
|
typedef void* f0r_instance_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for effect instances. The plugin returns a pointer to
|
||||||
|
* its internal instance structure.
|
||||||
|
*
|
||||||
|
* The resolution has to be an integer multiple of 8,
|
||||||
|
* must be greater than 0 and be at most 2048 in both dimensions.
|
||||||
|
*
|
||||||
|
* \param width The x-resolution of the processed video frames
|
||||||
|
* \param height The y-resolution of the processed video frames
|
||||||
|
* \returns 0 on failure or a pointer != 0 on success
|
||||||
|
*
|
||||||
|
* \see f0r_destruct
|
||||||
|
*/
|
||||||
|
f0r_instance_t f0r_construct(unsigned int width, unsigned int height);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Destroys an effect instance.
|
||||||
|
*
|
||||||
|
* \param instance The pointer to the plugins internal instance structure.
|
||||||
|
*
|
||||||
|
* \see f0r_construct
|
||||||
|
*/
|
||||||
|
void f0r_destruct(f0r_instance_t instance);
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transparent parameter handle.
|
||||||
|
*/
|
||||||
|
typedef void* f0r_param_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function allows the application to set the parameter values of an
|
||||||
|
* effect instance. Validity of the parameter pointer is handled by the
|
||||||
|
* application thus the data must be copied by the effect.
|
||||||
|
*
|
||||||
|
* \param instance the effect instance
|
||||||
|
* \param param pointer to the parameter value
|
||||||
|
* \param param_index index of the parameter
|
||||||
|
*
|
||||||
|
* \see f0r_get_param_value
|
||||||
|
*/
|
||||||
|
void f0r_set_param_value(f0r_instance_t instance,
|
||||||
|
f0r_param_t param, int param_index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function allows the application to query the parameter values of an
|
||||||
|
* effect instance.
|
||||||
|
*
|
||||||
|
* \param instance the effect instance
|
||||||
|
* \param param pointer to the parameter value
|
||||||
|
* \param param_index index of the parameter
|
||||||
|
*
|
||||||
|
* \see f0r_set_param_value
|
||||||
|
*/
|
||||||
|
void f0r_get_param_value(f0r_instance_t instance,
|
||||||
|
f0r_param_t param, int param_index);
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is where the core effect processing happens. The application calls it
|
||||||
|
* after it has set the necessary parameter values.
|
||||||
|
* inframe and outframe must be aligned to an integer multiple of 16 bytes
|
||||||
|
* in memory.
|
||||||
|
*
|
||||||
|
* This funcition should not alter the parameters of the effect in any
|
||||||
|
* way (\ref f0r_get_param_value should return the same values after a call
|
||||||
|
* to \ref f0r_update as before the call).
|
||||||
|
*
|
||||||
|
* The function is responsible to restore the fpu state (e.g. rounding mode)
|
||||||
|
* and mmx state if applicable before it returns to the caller.
|
||||||
|
*
|
||||||
|
* The host mustn't call \ref f0r_update for effects of type
|
||||||
|
* \ref F0R_PLUGIN_TYPE_MIXER2 and \ref F0R_PLUGIN_TYPE_MIXER3.
|
||||||
|
*
|
||||||
|
* \param instance the effect instance
|
||||||
|
* \param time the application time in seconds but with subsecond resolution
|
||||||
|
* (e.g. milli-second resolution). The resolution should be at least
|
||||||
|
* the inter-frame period of the application.
|
||||||
|
* \param inframe the incoming video frame (can be zero for sources)
|
||||||
|
* \param outframe the resulting video frame
|
||||||
|
*
|
||||||
|
* \see f0r_update2
|
||||||
|
*/
|
||||||
|
void f0r_update(f0r_instance_t instance,
|
||||||
|
double time, const uint32_t* inframe, uint32_t* outframe);
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For effects of type \ref F0R_PLUGIN_TYPE_SOURCE or
|
||||||
|
* \ref F0R_PLUGIN_TYPE_FILTER this method is optional. The \ref f0r_update
|
||||||
|
* method must still be exported for these two effect types. If both are
|
||||||
|
* provided the behavior of them must be the same.
|
||||||
|
*
|
||||||
|
* Effects of type \ref F0R_PLUGIN_TYPE_MIXER2 or \ref F0R_PLUGIN_TYPE_MIXER3 must provide the new \ref f0r_update2 method.
|
||||||
|
|
||||||
|
* \param instance the effect instance
|
||||||
|
* \param time the application time in seconds but with subsecond resolution
|
||||||
|
* (e.g. milli-second resolution). The resolution should be at least
|
||||||
|
* the inter-frame period of the application.
|
||||||
|
* \param inframe1 the first incoming video frame (can be zero for sources)
|
||||||
|
* \param inframe2 the second incoming video frame
|
||||||
|
(can be zero for sources and filters)
|
||||||
|
* \param inframe3 the third incoming video frame
|
||||||
|
(can be zero for sources, filters and mixer3)
|
||||||
|
* \param outframe the resulting video frame
|
||||||
|
*
|
||||||
|
* \see f0r_update
|
||||||
|
*/
|
||||||
|
void f0r_update2(f0r_instance_t instance,
|
||||||
|
double time,
|
||||||
|
const uint32_t* inframe1,
|
||||||
|
const uint32_t* inframe2,
|
||||||
|
const uint32_t* inframe3,
|
||||||
|
uint32_t* outframe);
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#endif
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user