summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS22
-rw-r--r--COPYING680
-rw-r--r--COPYING.LIB962
-rw-r--r--ChangeLog312
-rw-r--r--INSTALL472
-rw-r--r--Makefile.am124
-rw-r--r--NEWS713
-rw-r--r--README494
-rw-r--r--RELEASE211
-rw-r--r--REQUIREMENTS154
-rw-r--r--[-rwxr-xr-x]autogen.sh232
-rw-r--r--configure.ac734
-rw-r--r--docs/.cvsignore1
-rw-r--r--docs/Makefile.am2
-rw-r--r--docs/version.entities.in4
-rw-r--r--gst-libs/Makefile.am2
-rw-r--r--gst-libs/gst/Makefile.am14
-rw-r--r--gst-libs/gst/gettext.h138
-rw-r--r--gst-libs/gst/gl/Makefile.am50
-rw-r--r--gst-libs/gst/gl/glextensions.c190
-rw-r--r--gst-libs/gst/gl/glextensions.h64
-rw-r--r--gst-libs/gst/gl/gstglbuffer.c454
-rw-r--r--gst-libs/gst/gl/gstglbuffer.h76
-rw-r--r--gst-libs/gst/gl/gstgldisplay.c875
-rw-r--r--gst-libs/gst/gl/gstgldisplay.h85
-rw-r--r--gst-libs/gst/gl/gstglfilter.c323
-rw-r--r--gst-libs/gst/gl/gstglfilter.h65
-rw-r--r--gst-libs/gst/gst-i18n-plugin.h74
-rw-r--r--gst-plugins-gl.doap108
-rw-r--r--gst-plugins-gl.spec.in456
-rw-r--r--gst/Makefile.am6
-rw-r--r--gst/gl/.cvsignore1
-rw-r--r--gst/gl/BUGS24
-rw-r--r--gst/gl/Makefile.am59
-rw-r--r--gst/gl/color_matrix.c243
-rw-r--r--gst/gl/glimagesink.c561
-rw-r--r--gst/gl/glimagesink.h79
-rw-r--r--gst/gl/gltestsrc.c495
-rw-r--r--gst/gl/gltestsrc.h57
-rw-r--r--gst/gl/gstglconvert.c198
-rw-r--r--gst/gl/gstgldownload.c323
-rw-r--r--gst/gl/gstglfilterexample.c243
-rw-r--r--gst/gl/gstgltestsrc.c632
-rw-r--r--gst/gl/gstgltestsrc.h116
-rw-r--r--gst/gl/gstglupload.c437
-rw-r--r--gst/gl/gstopengl.c77
-rw-r--r--m4/.cvsignore17
-rw-r--r--m4/Makefile.am36
-rw-r--r--pkgconfig/.cvsignore1
-rw-r--r--pkgconfig/Makefile.am46
-rw-r--r--pkgconfig/gstreamer-gl-uninstalled.pc.in30
-rw-r--r--pkgconfig/gstreamer-gl.pc.in26
-rw-r--r--po/.cvsignore16
-rw-r--r--po/LINGUAS2
-rw-r--r--po/Makevars82
-rw-r--r--po/POTFILES.in2
-rw-r--r--po/en.po34
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/check/Makefile.am88
-rw-r--r--tests/check/generic/states.c444
-rw-r--r--tests/check/pipelines/simple-launch-lines.c298
61 files changed, 3077 insertions, 9689 deletions
diff --git a/AUTHORS b/AUTHORS
index 5cef5a3..d3f5a12 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,21 +1 @@
-Erik Walthinsen <omega@temple-baptist.com>
-Matt Howell <mhowell@users.sourceforge.net>
-Brent Bradburn <bbradburn@users.sourceforge.net>
-Wim Taymans <wim.taymans@chello.be>
-Richard Boulton <richard@tartarus.org>
-Zaheer Abbas Merali <zaheerabbas at merali dot org>
-David I. Lehn <dlehn@users.sourceforge.net>
-Chris Emerson <chris@tartarus.org>
-Jens Thiele <karme@unforgettable.com>
-Thomas Nyberg <thomas@codefactory.se>
-Bastien Nocera <hadess@hadess.net>
-Christian Fredrik Kalager Schaller <Uraeus@linuxrising.org>
-Thomas Vander Stichele <thomas@apestaart.org>
-Andy Wingo <wingo@pobox.com>
-Cameron Hutchison <camh@xdna.net>
-David Schleef <ds@schleef.org>
-Benjamin Otte <in7y118@public.uni-hamburg.de>
-Ronald Bultje <rbultje@ronald.bitfreak.net>
-Julien MOUTTE <julien@moutte.net>
-Jan Schmidt <thaytan@mad.scientist.com>
-Arwed v. Merkatz <v.merkatz@gmx.net>
+
diff --git a/COPYING b/COPYING
index 60549be..f89b4fa 100644
--- a/COPYING
+++ b/COPYING
@@ -1,340 +1,340 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 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.
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 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.
diff --git a/COPYING.LIB b/COPYING.LIB
index eb685a5..e17b0a8 100644
--- a/COPYING.LIB
+++ b/COPYING.LIB
@@ -1,481 +1,481 @@
- GNU LIBRARY GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 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.
-
-[This is the first released version of the library GPL. It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
- 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 Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it. You can use it for
-your libraries, 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 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 a program 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.
-
- Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
- Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library. If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, 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 companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software. To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
- Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs. This
-license, the GNU Library General Public License, applies to certain
-designated libraries. This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
- The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it. Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program. However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
- Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries. We
-concluded that weaker conditions might promote sharing better.
-
- However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves. This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them. (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.) The hope is that this
-will lead to faster development of free libraries.
-
- 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, while the latter only
-works together with the library.
-
- Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
- GNU LIBRARY GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-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 compile 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) 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.
-
- c) 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.
-
- d) 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 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.
-
- 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 to
-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 Library 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
-
- Appendix: 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 Library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; 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.
-
-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!
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ 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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, 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 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 a program 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.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ 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, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+ c) 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.
+
+ d) 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 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.
+
+ 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 to
+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 Library 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
+
+ Appendix: 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 Library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; 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.
+
+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!
diff --git a/ChangeLog b/ChangeLog
index 7b98daf..0419e85 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,156 +1,156 @@
-2008-04-06 Sebastian Dröge <slomo@circular-chaos.org>
-
- Patch by: Damien Lespiau <damien dot lespiau at gmail dot com>
-
- * configure.ac:
- Actually build dlls when cross-compiling with mingw32.
- Fixes bug #526247.
-
-2008-03-24 David Schleef <ds@schleef.org>
-
- * Makefile.am:
- * configure.ac: Fix build system for recent changes in m4
- files. Fixed problem building gst/gl/
-
-2008-02-23 Tim-Philipp Müller <tim at centricular dot net>
-
- * gst-libs/gst/gl/gstglbuffer.c:
- (gst_gl_buffer_format_from_video_format):
- Fix compiler warning if there are video format
- enums gstglbuffer doesn't know about yet.
-
- * gst-libs/gst/gl/gstgldisplay.c:
- (gst_gl_display_upload_texture_rectangle),
- (gst_gl_display_draw_texture):
- Fix printf format for 64-bit integers.
-
-2008-01-31 David Schleef <ds@schleef.org>
-
- * configure.ac:
- * pkgconfig/Makefile.am:
- * pkgconfig/gstreamer-gl-uninstalled.pc.in:
- * pkgconfig/gstreamer-gl.pc.in:
- * pkgconfig/gstreamer-plugins-gl-uninstalled.pc.in:
- * pkgconfig/gstreamer-plugins-gl.pc.in:
- Rename pkgconfig files. And install them.
- * tests/check/Makefile.am:
- * tests/check/generic/states.c:
- * tests/check/pipelines/simple-launch-lines.c:
- Add some tests copied from -good.
-
-2008-01-31 Tim-Philipp Müller <tim at centricular dot net>
-
- * gst-libs/gst/gl/Makefile.am:
- The library needs to link against libgstvideo-0.10.
-
- * gst/gl/Makefile.am:
- The plugin does not (I think) need to link against GL or libgstvideo,
- since our new gstreamer GL library already does that, but it does
- need to link against our brand-new libgstgl-0.10.
-
-2008-01-31 Tim-Philipp Müller <tim at centricular dot net>
-
- * configure.ac:
- When using the non-pkg-config check, set and export GL_LIBS
- correctly.
-
-2008-01-31 David Schleef <ds@schleef.org>
-
- * gst/gl/.cvsignore: ingore some files
- * gst-libs/gst/Makefile.am: distcheck fixes
- * gst/gl/Makefile.am: distcheck fixes
- * win32/common/config.h: -good has this in CVS, so we will too.
-
-2008-01-31 David Schleef <ds@schleef.org>
-
- * configure.ac:
- Readd pre-pkgconfig OpenGL detection, since pkgconfig requires
- Mesa from git master.
- * gst/gl/glimagesink.c:
- * gst/gl/gstopengl.c:
- Move debug category initialization to element.
- * gst-libs/gst/gl/Makefile.am:
- * gst-libs/gst/gl/gstglfilter.c:
- * gst-libs/gst/gl/gstglfilter.h:
- * gst/gl/gstglfilter.c:
- * gst/gl/gstglfilter.h:
- Move glfilter to library.
- * pkgconfig/gstreamer-plugins-gl.pc.in:
- Add gstreamer-base-0.10 as a requirement.
- * po/en.po:
- Update.
-
-2008-01-18 Tim-Philipp Müller <tim at centricular dot net>
-
- * configure.ac:
- * docs/Makefile.am:
- * gst-libs/Makefile.am:
- * gst-libs/gst/gl/Makefile.am:
- * gst/gl/Makefile.am:
- * tests/Makefile.am:
- Fix compilation in uninstalled setup and some
- distcheck-y bits (not all though).
-
-2008-01-17 David Schleef <ds@schleef.org>
-
- Add some files to make project compile.
- * gst-libs/gst/gettext.h:
- * gst-libs/gst/gst-i18n-plugin.h:
- * po/.cvsignore:
- * po/Makevars:
- * po/POTFILES.in:
- * po/en.po:
-
-2008-01-17 David Schleef <ds@schleef.org>
-
- Fixes to make project compile. Probably still doesn't work.
- * configure.ac:
- * gst-libs/gst/Makefile.am:
- * gst-libs/gst/gl/Makefile.am:
- * gst/Makefile.am:
- * gst/gl/Makefile.am:
- * gst/gl/gstgltestsrc.c:
- * po/LINGUAS:
- * win32/MANIFEST:
-
-2008-01-17 David Schleef <ds@schleef.org>
-
- Add project infrastructure. Not complete, doesn't work.
- * .cvsignore:
- * AUTHORS:
- * COPYING:
- * COPYING.LIB:
- * INSTALL:
- * Makefile.am:
- * NEWS:
- * README:
- * RELEASE:
- * REQUIREMENTS:
- * autogen.sh:
- * configure.ac:
- * docs/.cvsignore:
- * docs/Makefile.am:
- * docs/libs/Makefile.am:
- * docs/plugins/Makefile.am:
- * docs/version.entities.in:
- * ext/Makefile.am:
- * gst-libs/Makefile.am:
- * gst-libs/gst/Makefile.am:
- * gst-libs/gst/gl/Makefile.am:
- * gst-plugins-gl.doap:
- * gst-plugins-gl.spec.in:
- * gst/Makefile.am:
- * m4/.cvsignore:
- * m4/Makefile.am:
- * pkgconfig/.cvsignore:
- * pkgconfig/Makefile.am:
- * pkgconfig/gstreamer-plugins-gl-uninstalled.pc.in:
- * pkgconfig/gstreamer-plugins-gl.pc.in:
- * sys/Makefile.am:
- * tests/Makefile.am:
- * tests/check/Makefile.am:
- * tests/examples/Makefile.am:
- * tests/icles/Makefile.am:
- * tools/Makefile.am:
- * win32/common/config.h.in:
-
+2008-04-06 Sebastian Dröge <slomo@circular-chaos.org>
+
+ Patch by: Damien Lespiau <damien dot lespiau at gmail dot com>
+
+ * configure.ac:
+ Actually build dlls when cross-compiling with mingw32.
+ Fixes bug #526247.
+
+2008-03-24 David Schleef <ds@schleef.org>
+
+ * Makefile.am:
+ * configure.ac: Fix build system for recent changes in m4
+ files. Fixed problem building gst/gl/
+
+2008-02-23 Tim-Philipp Müller <tim at centricular dot net>
+
+ * gst-libs/gst/gl/gstglbuffer.c:
+ (gst_gl_buffer_format_from_video_format):
+ Fix compiler warning if there are video format
+ enums gstglbuffer doesn't know about yet.
+
+ * gst-libs/gst/gl/gstgldisplay.c:
+ (gst_gl_display_upload_texture_rectangle),
+ (gst_gl_display_draw_texture):
+ Fix printf format for 64-bit integers.
+
+2008-01-31 David Schleef <ds@schleef.org>
+
+ * configure.ac:
+ * pkgconfig/Makefile.am:
+ * pkgconfig/gstreamer-gl-uninstalled.pc.in:
+ * pkgconfig/gstreamer-gl.pc.in:
+ * pkgconfig/gstreamer-plugins-gl-uninstalled.pc.in:
+ * pkgconfig/gstreamer-plugins-gl.pc.in:
+ Rename pkgconfig files. And install them.
+ * tests/check/Makefile.am:
+ * tests/check/generic/states.c:
+ * tests/check/pipelines/simple-launch-lines.c:
+ Add some tests copied from -good.
+
+2008-01-31 Tim-Philipp Müller <tim at centricular dot net>
+
+ * gst-libs/gst/gl/Makefile.am:
+ The library needs to link against libgstvideo-0.10.
+
+ * gst/gl/Makefile.am:
+ The plugin does not (I think) need to link against GL or libgstvideo,
+ since our new gstreamer GL library already does that, but it does
+ need to link against our brand-new libgstgl-0.10.
+
+2008-01-31 Tim-Philipp Müller <tim at centricular dot net>
+
+ * configure.ac:
+ When using the non-pkg-config check, set and export GL_LIBS
+ correctly.
+
+2008-01-31 David Schleef <ds@schleef.org>
+
+ * gst/gl/.cvsignore: ingore some files
+ * gst-libs/gst/Makefile.am: distcheck fixes
+ * gst/gl/Makefile.am: distcheck fixes
+ * win32/common/config.h: -good has this in CVS, so we will too.
+
+2008-01-31 David Schleef <ds@schleef.org>
+
+ * configure.ac:
+ Readd pre-pkgconfig OpenGL detection, since pkgconfig requires
+ Mesa from git master.
+ * gst/gl/glimagesink.c:
+ * gst/gl/gstopengl.c:
+ Move debug category initialization to element.
+ * gst-libs/gst/gl/Makefile.am:
+ * gst-libs/gst/gl/gstglfilter.c:
+ * gst-libs/gst/gl/gstglfilter.h:
+ * gst/gl/gstglfilter.c:
+ * gst/gl/gstglfilter.h:
+ Move glfilter to library.
+ * pkgconfig/gstreamer-plugins-gl.pc.in:
+ Add gstreamer-base-0.10 as a requirement.
+ * po/en.po:
+ Update.
+
+2008-01-18 Tim-Philipp Müller <tim at centricular dot net>
+
+ * configure.ac:
+ * docs/Makefile.am:
+ * gst-libs/Makefile.am:
+ * gst-libs/gst/gl/Makefile.am:
+ * gst/gl/Makefile.am:
+ * tests/Makefile.am:
+ Fix compilation in uninstalled setup and some
+ distcheck-y bits (not all though).
+
+2008-01-17 David Schleef <ds@schleef.org>
+
+ Add some files to make project compile.
+ * gst-libs/gst/gettext.h:
+ * gst-libs/gst/gst-i18n-plugin.h:
+ * po/.cvsignore:
+ * po/Makevars:
+ * po/POTFILES.in:
+ * po/en.po:
+
+2008-01-17 David Schleef <ds@schleef.org>
+
+ Fixes to make project compile. Probably still doesn't work.
+ * configure.ac:
+ * gst-libs/gst/Makefile.am:
+ * gst-libs/gst/gl/Makefile.am:
+ * gst/Makefile.am:
+ * gst/gl/Makefile.am:
+ * gst/gl/gstgltestsrc.c:
+ * po/LINGUAS:
+ * win32/MANIFEST:
+
+2008-01-17 David Schleef <ds@schleef.org>
+
+ Add project infrastructure. Not complete, doesn't work.
+ * .cvsignore:
+ * AUTHORS:
+ * COPYING:
+ * COPYING.LIB:
+ * INSTALL:
+ * Makefile.am:
+ * NEWS:
+ * README:
+ * RELEASE:
+ * REQUIREMENTS:
+ * autogen.sh:
+ * configure.ac:
+ * docs/.cvsignore:
+ * docs/Makefile.am:
+ * docs/libs/Makefile.am:
+ * docs/plugins/Makefile.am:
+ * docs/version.entities.in:
+ * ext/Makefile.am:
+ * gst-libs/Makefile.am:
+ * gst-libs/gst/Makefile.am:
+ * gst-libs/gst/gl/Makefile.am:
+ * gst-plugins-gl.doap:
+ * gst-plugins-gl.spec.in:
+ * gst/Makefile.am:
+ * m4/.cvsignore:
+ * m4/Makefile.am:
+ * pkgconfig/.cvsignore:
+ * pkgconfig/Makefile.am:
+ * pkgconfig/gstreamer-plugins-gl-uninstalled.pc.in:
+ * pkgconfig/gstreamer-plugins-gl.pc.in:
+ * sys/Makefile.am:
+ * tests/Makefile.am:
+ * tests/check/Makefile.am:
+ * tests/examples/Makefile.am:
+ * tests/icles/Makefile.am:
+ * tools/Makefile.am:
+ * win32/common/config.h.in:
+
diff --git a/INSTALL b/INSTALL
index 23e5f25..86d6e27 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,236 +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' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', 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
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-PREFIX as the prefix for installing programs and libraries.
-Documentation and other data files 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 option `--target=TYPE' 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.
-
+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' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', 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
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files 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 option `--target=TYPE' 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.
+
diff --git a/Makefile.am b/Makefile.am
index e5ab0c0..a678bf6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,62 +1,62 @@
-DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
-
-SUBDIRS = \
- gst-libs \
- gst sys ext \
- tools \
- tests \
- docs \
- po \
- common \
- m4 \
- pkgconfig
-
-DIST_SUBDIRS = \
- docs \
- gst-libs \
- gst sys ext \
- tools \
- tests \
- po \
- common \
- m4 \
- pkgconfig
-
-# include before EXTRA_DIST for win32 assignment
-include $(top_srcdir)/common/win32.mak
-
-EXTRA_DIST = \
- gst-plugins-gl.spec depcomp \
- AUTHORS COPYING COPYING.LIB NEWS README RELEASE REQUIREMENTS \
- ChangeLog gst-plugins-gl.doap autogen.sh $(win32)
-
-DISTCLEANFILES = _stdint.h
-
-ACLOCAL_AMFLAGS = -I m4 -I common/m4
-
-include $(top_srcdir)/common/release.mak
-include $(top_srcdir)/common/po.mak
-
-check-valgrind:
- cd tests/check && make check-valgrind
-
-if HAVE_GST_CHECK
-check-torture:
- cd tests/check && make torture
-else
-check-torture:
- true
-endif
-
-WIN32_COPY = \
- $(top_builddir)/gst-libs/gst/*/*-enumtypes.[ch] \
- $(top_builddir)/_stdint.h
-
-win32-update:
- for f in $(WIN32_COPY); do cp $$f win32/common;done
-
-include $(top_srcdir)/common/coverage/lcov.mak
-
-check: check-exports
-
-
+DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
+
+SUBDIRS = \
+ gst-libs \
+ gst sys ext \
+ tools \
+ tests \
+ docs \
+ po \
+ common \
+ m4 \
+ pkgconfig
+
+DIST_SUBDIRS = \
+ docs \
+ gst-libs \
+ gst sys ext \
+ tools \
+ tests \
+ po \
+ common \
+ m4 \
+ pkgconfig
+
+# include before EXTRA_DIST for win32 assignment
+include $(top_srcdir)/common/win32.mak
+
+EXTRA_DIST = \
+ gst-plugins-gl.spec depcomp \
+ AUTHORS COPYING COPYING.LIB NEWS README RELEASE REQUIREMENTS \
+ ChangeLog gst-plugins-gl.doap autogen.sh $(win32)
+
+DISTCLEANFILES = _stdint.h
+
+ACLOCAL_AMFLAGS = -I m4 -I common/m4
+
+include $(top_srcdir)/common/release.mak
+include $(top_srcdir)/common/po.mak
+
+check-valgrind:
+ cd tests/check && make check-valgrind
+
+if HAVE_GST_CHECK
+check-torture:
+ cd tests/check && make torture
+else
+check-torture:
+ true
+endif
+
+WIN32_COPY = \
+ $(top_builddir)/gst-libs/gst/*/*-enumtypes.[ch] \
+ $(top_builddir)/_stdint.h
+
+win32-update:
+ for f in $(WIN32_COPY); do cp $$f win32/common;done
+
+include $(top_srcdir)/common/coverage/lcov.mak
+
+check: check-exports
+
+
diff --git a/NEWS b/NEWS
index ffac3ba..e2e5202 100644
--- a/NEWS
+++ b/NEWS
@@ -1,700 +1,13 @@
-This is GStreamer Base Plug-ins 0.10.15, "No need to argue"
-
-Please note that decodebin2 API included in this release is still
-considered unstable and WILL change in future releases. At this stage, only
-developers or early adopters should consider using the decodebin2 API embodied
-in its signals and properties.
-
-Changes since 0.10.14:
-
- * RTP/RTSP/RTCP/SDP support improved
- * New FFT support library libgstfft, based on Kiss FFT
- * New formats supported in volume and audiotestsrc
- * Fixes in audiorate and videorate
- * Audio capture fixes
- * Playbin and decodebin fixes
- * New tagdemux base class for ID3/APE style tag readers
- * Fix a nasty crash in the X sinks on shutdown
- * New tags supported
- * Add support for multichannel WAV files.
- * Preserve channel layout information when up/down-mixing.
- * Many bug-fixes and improvements
-
-Bugs fixed since 0.10.14:
-
- * 475395 : decodebin2 leaks request-pads
- * 475451 : [decodebin2] leaks ghostpad
- * 378770 : [xvimagesink] race condition in event thread?
- * 407282 : [decodebin2] autoplug-sort signal has GList ** parameter
- * 430677 : [audioconvert] does not preserve channel positions when f...
- * 442654 : [volume] controller bypassed by default
- * 445529 : [volume] support for 24/32-bit audio/x-raw-int
- * 446766 : return code for gst_base_rtp_payload_audio_handle_event()
- * 451970 : Subparse requires HTML parser
- * 453650 : [audiobasesrc] two alsasrcs do not work in one pipeline
- * 459334 : [textoverlay] expose pango line alignment property
- * 459585 : [basertpdepayload] api without namespace
- * 460422 : [audiotestsrc] Add support for float and double output
- * 462805 : [alsa] compilation fails with gcc 4.2
- * 462979 : Add 'silent' property to GstTimeOverlay
- * 463215 : [audioconvert] compile errors
- * 464320 : [PATCH] gst-plugins-base-0.14 does not build for win32
- * 464666 : [playbin] QT trailer hangs in preroll with decodebin2
- * 464690 : Add connection-speed property to uridecodebin element
- * 465015 : [playbin] Not removed probes causes deadlocks in streamin...
- * 465028 : some warnings with mingw
- * 467667 : GST_FRAMES_TO_CLOCK_TIME() and GST_CLOCK_TIME_TO_FRAMES()...
- * 468129 : [basertpaudiopayload] event handler returns the wrong value
- * 468619 : New library gstfft: FFT library for integer and float typ...
- * 470456 : [API] add gst_missing_*_installer_detail_new()
- * 470766 : [ssaparse] line breaks in SSA subtitle parser
- * 471067 : Make the SDP code useable for generating SDP descriptions
- * 471194 : [rtpbuffer] RTP headers are wrong for win32
- * 473097 : [baseaudiosink] gstreamer-properties hangs when testing s...
- * 474384 : gstrtsp-enumtypes.c and .h needed for win32
- * 474880 : [xvimagesink] [ximagesink] leaking buffer caps reference
- * 475731 : rtspconnection is able to read incomplete messages
- * 483620 : All Rtp buffers are discarded -- gst_rtp_buffer_get_payl...
- * 484989 : memleak, not unrefed caps for gstbasertppayload.c
- * 489010 : Please change default channel order for WAVE_EXT-less .wa...
- * 491722 : [playbin] regression: crash with external subtitles
- * 492098 : [GstFFT] Broken scaling
- * 492114 : Build issues on Windows/MSVC
- * 492306 : compilation errors with MinGW
- * 492813 : Missing symbols in libgstrtp.def
- * 493986 : Build issues on Windows (missing symbols)
- * 494346 : pre-release vs6 patch
- * 496548 : Including malloc.h breaks macos build
- * 496724 : DSW file references non-existent DSP files
- * 464079 : audiotestsrc doesn't respond to conversion queries properly
- * 442065 : floatcast.h includes config.h and might break other apps
- * 466717 : gst_event_new_new_segment_full:assertion `start < = stop' ...
- * 485753 : Decodebin2 deadlocks when nulling pipeline during typefind
- * 464028 : Move connection-speed from playbin to playbasebin
-
-API added since 0.10.14:
-
- * GstTagDemux base class for simple tag demuxers
- * GstBaseAudioSrc::provide-clock property
- * gst_rtcp_ntp_to_unix()
- * gst_rtcp_unix_to_ntp()
- * gst_rtp_buffer_get_header_len()
- * gst_rtp_buffer_get_extension_data()
- * gst_rtp_buffer_compare_seqnum()
- * gst_rtp_buffer_ext_timestamp()
- * gst_rtcp_packet_sdes_copy_entry()
- * gst_install_plugins_supported()
- * gst_missing_*_installer_detail_new() convenience API
- * gst_rtsp_connection_poll()
- * GstTextOverlay::line-alignment property
-
-Changes since 0.10.13:
-
- * Audio dither and noise-shaping when reducing bit-depth
- * RTSP and SDP helper libraries added
- * Experimental buffering element "queue2" now supports pull-mode
- and file-based buffering.
- * Support for more 32-bit video pixel layouts
- * Various fixes and improvements
-
-Bugs fixed since 0.10.13:
-
- * 380625 : [x*imagesink] add 'handle-expose' property
- * 385527 : oggmux sometimes gets DELTA flag on output wrong near start
- * 402076 : videoscale 4-tap method broken for downscaling
- * 437169 : [xvimagesink] add property to disable Xv double-buffering
- * 441264 : queue2 support to do buffering on a file
- * 442553 : [v4lsrc] doesn't output segments in GST_FORMAT_TIME
- * 442557 : [videorate] doesn't handle latency queries
- * 442944 : Audiotestsrc can overflow on seeks
- * 444523 : [queue2] Pull mode support
- * 444630 : Compilation error with fsseko (from gstqueue2.c) -- unabl...
- * 445505 : [queue2] It does not work in pull mode with oggdemux
- * 446551 : [queue2] Buffering is not working properly if it is set t...
- * 446572 : [queue2] Division by zero
- * 446972 : warning when compiling gstoggdemux.c
- * 449156 : Regression in CVS for decodebin2
- * 450875 : Missing files in po/POTFILES.in
- * 451707 : [tag] UTF-8 in ID3v1 tag not correctly decoded
- * 451908 : [ffmpegcolorspace] regression: doesn't accept GST_VIDEO_C...
- * 454264 : Playbin fails to " play " image url after a movie url
- * 456656 : [API] Addition of audio buffer clipping function to gstaudio
- * 460978 : gst_audio_buffer_clip outputs warnings
- * 152864 : [PATCH] GstAlsaMixer doesn't support signals
- * 360246 : [audioconvert] Optionally apply dithering
- * 394061 : Add support for Subviewer subtitles
- * 420326 : Base payloader class has wrong property types and ranges
- * 451145 : [vorbisdec] errors out on 0-sized packets
- * 459204 : [PATCH] [playbin] gst_play_base_bin_get_streaminfo_value_...
-
-API added since 0.10.13:
-
- * RTSP and SDP libraries added
- * gst_rtsp_base64_decode_ip
- * Add buffer clipping function gst_audio_buffer_clip for raw audio
- buffers. Fixes #456656.
- * gst_mixer_get_mixer_flags
- * gst_mixer_message_parse_mute_toggled
- * gst_mixer_message_parse_record_toggled
- * gst_mixer_message_parse_volume_changed
- * gst_mixer_message_parse_option_changed
- * GstMixerMessageType
- * GstMixerFlags
-
-Changes since 0.10.12:
- * Many fixes and improvements
- * RTP and RTCP support improved
-
-Bugs fixed since 0.10.12:
-
- * 339838 : [audioconvert] support floats with non-native endianness
- * 393975 : closing x/xvimagesink window crashes gst-launch
- * 405072 : [API] add gst_tag_freeform_string_to_utf8()
- * 413799 : [subparse] add support for MPL2 format
- * 414645 : GstMixerTrack should make untranslated label available
- * 420079 : [audioconvert] Uses biased rounding which results in dist...
- * 420578 : [subparse] add more colour map in sami parser
- * 421834 : videorate breaks on dimension changes
- * 423051 : Vorbis tags of type double use locale-dependent formatting
- * 423055 : Verify ReplayGain vorbistag processing in libs/tag testsuite
- * 425455 : Decodebin2 leaks pads
- * 426250 : GstPlayBaseBin leaks streaminfo objects
- * 428187 : Rtp base depayloader class doesn't send new_segment after...
- * 431672 : gst_base_rtp_audio_payload_push() should take object of i...
- * 432362 : [ximagesink] doesn't build if XShm is not available
- * 432755 : [videorate] leaks buffer if flow != OK
- * 432984 : [baseaudiosrc] misleading warning message when dropping s...
- * 433888 : [theoradec] does not generate a perfect stream
- * 436562 : Theoradec doesn't work well with gnonlin
- * 438840 : [theoradec] does not compile with old version of libtheora
- * 440997 : [gstriff] Doesn't handle width!=depth files with audio/x-...
- * 441295 : audioconvert doesn't build on VS6
- * 442024 : regression in playbin buffering
- * 350299 : [playbin] " Internal data flow error " opening movie with s...
- * 410039 : totem crashed with SIGSEGV in new_decoded_pad_full()
- * 340842 : do latency calculation for live sources
- * 341078 : RB does not play beyond initially downloaded podcast file
- * 414496 : [id3demux, id3v2mux] Add support for GST_TAG_MUSICBRAINZ_...
-
-API additions since 0.10.12:
-
- * add gst_tag_freeform_string_to_utf8()
- * GstRTPBuffer::gst_rtp_buffer_default_clock_rate()
- * GstBaseAudioSink::slave-method property
- * add "min-ptime" property to RTP base audio payloader
- * gst_base_rtp_audio_payload_push()
- * gst_base_rtp_audio_payload_get_adapter()
- * GstMixerTrack::untranslated-label property
-
-Changes since 0.10.11:
-
- * New API for on-demand plugin installation
- * Xv thread-safety and configuration enhancements
- * decodebin2 improvements
- * Support more raw audio format conversions
- * Improvements in Ogg support
- * AudioFilter base class ported to 0.10
- * Fixes for subtitles
- * Latency/live-playback support for Alsa
- * Lots of bug fixes and improvements
-
-Bugs fixed since 0.10.11:
-
- * 398721 : No video in .ogm files with decodebin2
- * 339837 : [audioconvert] support for 64-bit float audio
- * 341524 : [decodebin] can't handle decoders with always src pads wi...
- * 352069 : Add de.po German translation
- * 363379 : [oggmux] doesn't detect EOS on all sinkpads
- * 378436 : [oggdemux] rhythmbox crash on fast clicking on rating in ...
- * 380342 : Totem does not play mp3 files when lyrics are present
- * 383195 : [cddabasesrc,basertpaudiopayload] compile errors with gcc...
- * 383198 : totem crashed to gst_xvimagesink_update_colorbalance
- * 384008 : [xvimagesink] accesses - > xwindow outside locks
- * 384060 : gst_xoverlay_set_xwindow_id() causing lockups with x(v)im...
- * 387138 : x input events processing in sinks with xoverlay interfac...
- * 390063 : Documentation typo
- * 390076 : add xv adaptor and port properties in xvimagesink element.
- * 391365 : [oggdemux] internal stream error on OggFlac
- * 392070 : [vorbis] GST_TAG_LOCATION not mapped
- * 392393 : [API] add libgstbaseutils library for missing plugins mes...
- * 396042 : mpeg4 video typefinder loops endlessly on quicktime redirect
- * 396835 : audioconvert/audioresample combination causing buffer of ...
- * 397673 : [patch] XIOError caught in x[v]imagesink.c
- * 397810 : [typefinding] .vob file: could not determine type of stream
- * 398110 : [theoraenc] GLib failed to allocate 3080991032 bytes on g...
- * 399340 : Crash in the oggdemux plugin when trying to play a specia...
- * 401029 : [playbin] rapidly changing visualisation freezes
- * 401072 : Move libgimme-codec helper functions to GStreamer
- * 402505 : visualisations don't work for some samplerates
- * 407811 : decodebin2 hang on HD clip
- * 409683 : Crash with Decodebin2
- * 410396 : not reading " DATE " tags from Flac files
- * 410963 : Fails to build with -z defs
- * 357503 : [suparse] wrong timing with microdvd subtitles
- * 393310 : [pango] localtime_r does not exist in MinGW
- * 397207 : Test failure w/ HP-UX 11.11 & native compiler
- * 399948 : [textoverlay] leaks upstream events if textpad unlinked
- * 403963 : GstAudioFilter base class broken
- * 404512 : [videoscale] floating point exception on 1x1 video
- * 405020 : [alsa] probing the device-name doesn't seem to work corre...
- * 408278 : [videorate] memory leak
- * 410772 : Crash copying a GstNetBuffer
- * 401118 : [visual] error if width not a multiple of 4
- * 405451 : [alsasink] deadlocks when disconnecting USB Sounddevice
-
-API additions since 0.10.11:
-
- * GstAudioFilter
- * GST_VIDEO_SINK_CAST()
- * gst_pb_utils_add_codec_description_to_tag_list()
- * gst_pb_utils_get_codec_description()
- * gst_pb_utils_get_source_description()
- * gst_pb_utils_get_sink_description()
- * gst_pb_utils_get_decoder_description()
- * gst_pb_utils_get_encoder_description()
- * gst_pb_utils_get_element_description()
- * gst_pb_utils_init()
- * gst_install_plugins_context_new()
- * gst_install_plugins_context_set_xid()
- * gst_install_plugins_context_free()
- * gst_install_plugins_async()
- * gst_install_plugins_sync()
- * gst_install_plugins_return_get_name()
- * gst_install_plugins_installation_in_progress()
- * gst_missing_uri_source_message_new()
- * gst_missing_uri_sink_message_new
- * gst_missing_element_message_new
- * gst_missing_decoder_message_new
- * gst_missing_encoder_message_new
- * gst_missing_plugin_message_get_installer_detail
- * gst_missing_plugin_message_get_description
- * gst_is_missing_plugin_message
-
-Bugs fixed since 0.10.10:
-
- * 360552 : [riff] [avi] extracts non-UTF8 metadata
- * 365501 : [x/xvimagesink] race condition when creating first image ...
- * 339366 : [playbin] hangs if suburi file type cannot be determined
- * 355914 : libvisual causes xvimagesink: assertion `GST_CAPS_REFCOU...
- * 363118 : gst_riff_create_video_caps() should also store variant in...
- * 363607 : xvimagesink xwindow_draw_border() slowness
- * 336301 : [playbin] can't handle RTSP source
- * 337026 : oggmux doesn't set EOS properly
- * 337031 : vorbisdec outputs too much data
- * 340049 : New BaseRTPAudioPayloader class to -base
- * 348264 : Theora encoding, Ogg muxing don't handle discontinuities
- * 354773 : xvimage assumes that XV_COLORKEY can be set in RGB888 format
- * 355917 : libvisual plugin is broken
- * 355935 : multifdsink doesn't allow setting maximums (soft, hard) i...
- * 357038 : [ffmpegcolorspace] RGBA handling broken
- * 357215 : [playbin] buffering notification not quite right yet
- * 357289 : [riff] riff parser can't detect aac audio stream
- * 357404 : [playbin] Linking can fail silently
- * 357531 : [subparse] problem if markup is not closed
- * 357577 : [playbin] regression: buffering still images broken
- * 357591 : Avoid compiler warning with uclibc and -Werror
- * 357613 : XvStopVideo in xvimagesink
- * 357800 : [libvisual] doesn't pass audio data to libvisual 0.4.0 co...
- * 359580 : tcpserversink and dataprotocol assert for multipart streams
- * 361095 : Fixes compiling with forte: warning clean up (part 3)
- * 361456 : [basertppayload] Memory leak
- * 361634 : sink- > ringbuffer NULL in BaseAudioSink's setcaps()
- * 361984 : [subparse] doesn't accept .srt file that doesn't start wi...
- * 366334 : [PATCH] Windows vs8 fixes
- * 368273 : Using the remove signal on multifdsink is not threadsafe
- * 368310 : include file gstbasertpaudiopayload.h not included for r...
- * 369482 : [typefind] MPEG system streams get recognized as mp3 files
- * 370092 : [PATCH] Decodebin v2 : Implementation
- * 377183 : regression: no eos when playing ogg vorbis files
- * 381219 : bad debugging code left in audiorate
- * 382223 : [decodebin] more delayed linking
- * 382269 : Typefind detects mpeg video clip as audio/mpeg
- * 335635 : Add an Ogg/Vorbis retagging element
- * 341681 : [textoverlay] flickering with continuously timestamped text
- * 342228 : [alsa] Recognize " Front " as a Master channel
- * 357330 : [subparse] some sami parser minor but enhanced patch
- * 357532 : [gsttag] vorbistag doesn't handle dates that include time...
- * 359237 : [typefinding] doesn't recognize XML files shorter than 25...
- * 362845 : [subparse] add support for tmplayer format
- * 357977 : [videorate] new segment start is not respected
- * 364812 : [PATCH] oggmux release pad does not remove pad
- * 364856 : pngenc stride problems
- * 372507 : Mac build fixes
-
-API added since 0.10.10:
-
- * playbin::queue-min-threshold property.
- * GstVideoOrientation interface
- * gst_base_rtp_depayload_push_ts
- * gst_base_rtp_depayload_push
- * Add dropped_buffers to multifdsink's get-stats GValueArray
- * gst_ring_buffer_commit_full
-
-Changes since 0.10.9:
-
- * New elements: gdppay, gdpdepay
-
-Bugs fixed since 0.10.9:
-
- * 343787 : The adder cannot handle when multiple elements tries to l...
- * 336075 : ALSA emu10k1 mixer tracks are wrongly classified as playb...
- * 349105 : crash with playbin and resizing screen
- * 342494 : [v4l] Query " device-name " even if device is not open
- * 342680 : [adder] seeking with multiple ogg files fails to work
- * 345188 : [alsa] can't handle more than 8 channels
- * 347091 : converting vorbis comments to GstTagLists is lossy
- * 348157 : Changed " Change Device " menu behaviour in gnome-volume-co...
- * 348916 : [typefind] add multipart/x-mixed-replace typefinder
- * 350157 : [riff] riff parser can't detect dts audio stream
- * 350655 : [oggdemux] should process seeking queries
- * 350900 : [adder] should not clamp floating point values
- * 351426 : API: add gst_tag_parse_extended_comment
- * 351502 : g_value_set_string leaks
- * 351742 : [vorbisenc] discontinuity detection too sensitive, might ...
- * 353658 : [videotestsrc] doesn't round strides correctly for YVYU
- * 354594 : multifdsink doesn't work reliably with sync-method = 'nex...
- * 351790 : [ogmparse] crash parsing video stream on x86-64
- * 140139 : [avidemux] can't play broken avi with ogg (not vorbis) au...
- * 347783 : [PLUGIN-MOVE] GDP elements should be moved
- * 347918 : Internal data flow error in udpsrc
- * 349656 : jitterbuffer in GstBaseRtp fails to handle rtp seqnum rol...
- * 350784 : element alsamixer doesn't respect asoundrc
- * 351308 : [netbuffer] build fails with gkt-doc critical warnings
- * 353234 : audiorate preserves DISCONT on buffers
- * 353912 : Add cmml caps to oggmux
-
-API added since 0.10.9:
-
- * gst_rtp_buffer_get_payload_subbuffer()
- * gst_tag_parse_extended_comment()
- * GstPlayBin::connection-speed
- * GstTheoraParse::synchronization-points
- * GST_AUDIO_CHANNEL_POSITION_NONE
-
-Changes since 0.10.8:
-
- * Parallel installability with 0.8.x series
- * Threadsafe design and API
- * Subtitle fixes
- * Support for images in tags
- * Playback improvements
- * Gnomevfssrc now supports burn:// uris
- * Videoscale now supports more RGBA formats
- * Multifdsink improvements
- * Testsuite can now generate coverage information
-
-Bugs fixed since 0.10.8:
-
- * 347296 : Problems with clocks on alsasrc hangs the application
- * 347295 : [vorbisdec] Pushes before being initialized
- * 329798 : [playbin] doesn't always give correct error message for m...
- * 342085 : [alsasink] doesn't set buffer-time correctly
- * 342789 : [audioresample] doesn't clear state when stopped, causing...
- * 343303 : [subparse] workaround for bad entities in sami parser
- * 343385 : [gnomevfs] add support for burn:// URIs
- * 343500 : [riff] gst_riff_parse_strf_vids() can't parse extra data.
- * 343699 : oggmux leaks
- * 344503 : [subparse] parse font face property in sami parser.
- * 345131 : [PATCH] videoscale support for 32-bit RGB-formats
- * 345206 : [textoverlay] crash with non-UTF8 input
- * 345225 : [theoradec] Clipping for exact seeking
- * 345641 : [API] [libgsttag] add enums for image tag type
- * 345879 : [riff] won't play a .wmv file with WMVA video stream
- * 346581 : [typefinding] recognise text/html
- * 347221 : [audioconvert] channel remapping does not work right
- * 347304 : Massive leaks with xvimagesink
- * 346527 : alsasrc get_range does not respect requested size
-
-Changes since 0.10.7:
-
- * alsasink probing fixes
- * xvimagesink error reporting fixes
- * subtitle fixes
- * adder fixes
- * vorbis multichannel fixes
- * multifdsink streamheader fixes
-
-Bugs fixed since 0.10.7:
-
- * 169936 : [subparse] support for SAMI subtitles
- * 315312 : Gstreamer Xv uses RGB instead of YUV.
- * 334002 : video4linux shouldn't depend on X in configure script
- * 336881 : [libvisual] additional support for libvisual-0.4
- * 337544 : [xvimagesink] Internal Error when image is too large
- * 339520 : [subparse] add " encoding " property
- * 340909 : [alsasink] can't enable spdif output
- * 341542 : some users have an assertion failed: (GST_VIDEO_SINK_WIDT...
- * 341562 : audioconvert doesn't list formats in order of preference
- * 341696 : audioconvert crashes if converting from a format with no ...
- * 341719 : bisection algorithm in ogg doesn't bisect in some cases
- * 341732 : [alsasink] doesn't query supported sample rates
- * 341873 : [alsasink] minor memory leak, uses unprotected static var...
- * 342143 : [subparse] sami parser needs to escape characters
- * 342181 : [alsa] add property probe interface to alsasink and alsasrc
- * 342268 : [playbin] add 'subtitle-encoding' property
- * 342345 : [riff] Elephant's Dream AVI does not play, JUNK chunk bef...
- * 342566 : Building without GTK+ fails
- * 343397 : H.264/AAC movie deadlocks with totem in gstreamer code, p...
- * 339935 : [adder] dead-locks when adding sink pads in PAUSED state
-
-Changes since 0.10.6:
-
- * typefind improvements
- * bug-fixes in textoverlay, audioconvert, videotestsrc,
- multifdsink and audio source/sink base classes
- * Ice-cast metadata support has moved from gnomevfssrc to the
- icydemux element in gst-plugins-good
- * audioresample now supports floating point samples
- * Adder element fixes.
- * Fixes for network playback and audio resampling in playbin
-
-Bugs fixed since 0.10.6:
-
- * 340060 : [adder] handle newsegment events properly
- * 340375 : [API 0.11] [patch] typefind to differentiate between mp4 ...
- * 339405 : [textoverlay] can't display '\n' character
- * 338657 : [patch] adder should send events from src-pad to all sink...
- * 338919 : [patch] alsasink should also query witdh capabilities fro...
- * 301759 : [audioresample] float audio support (for OSX audio sinks)
- * 331901 : [videotestsrc] framerate=0/1 gives assertion error
- * 333657 : Replacing icy demuxing in gnomevfssrc
- * 336339 : [audioresample] should support width != 16
- * 338718 : [patch] [audioconvert] correctly clip float samples > 1.0
- * 338778 : [patch] Bad audio with ASX files
- * 338991 : [patch] Videoscale doesn't pass on pixel-aspect ratio
- * 339574 : [patch] Race condition in multifdsink can lead to spuriou...
- * 339786 : [typefinding] wavpack typefinding doesn't always work
- * 340369 : [volume element] " volume " property range insufficient
- * 340379 : [playbin] doesn't insert audioresample, causes problems w...
- * 340392 : Problem with internal-decodebin
- * 341160 : [multifdsink] client_status enum has an uninitialized nick
- * 341182 : Accessing playbin's streaminfo property from high languag...
- * 341432 : [playbin] automatically get icecast metadata requiring ic...
- * 341542 : some users have an assertion failed: (GST_VIDEO_SINK_WIDT...
- * 341557 : Map GST_TAG_IMAGE < = > ID3v2 APIC tag
-
-API added since 0.10.6:
-
- * client-fd-removed signal added to multifdsink
- * stream-info-value-array property added to playbin
- * gst_video_calculate_display_ratio() in libgstvideo
-
-Changes since 0.10.5:
-
- * QoS in sinks and transform elements
- * Needs GStreamer 0.10.5 for new GstBaseSink::async_playback() vmethod
- * added theoraparse element
-
-Bugs fixed since 0.10.5:
-
- * 313136 : [playbin] hang while playing truncated ogg file
- * 172848 : [subparse] subtitles with special chars are displayed as ...
- * 305279 : [riff] uncompressed AVIs with 24bpp don't work
- * 320765 : [ffmpegcolorspace] make win32+msvc compliant, don't use _...
- * 323852 : Disable tests/icles on platforms that do not have X
- * 325653 : build errors compiling audioresample on win32(vs7)
- * 327357 : gst-plugins-base fails to compile with GCC 4.1
- * 334620 : [gnomevfssrc] fails to connect to icecast streaming servers
- * 334822 : [ffmpegcolorspace] YVU9 support
- * 335028 : [typefinding] ID3 v1 tag is not recognized with mp3-in-wa...
- * 335365 : inefficient use of GList in gst-plugins-base
- * 336190 : [gnomevfssink] should accept non-URI filenames as " location "
- * 336194 : [gnomevfssrc] some minor memory leaks
- * 336477 : plugins need better/univied descriptions
- * 336617 : Unable to recognise MPEG TS stream
- * 337548 : Memory leaks in basertpdepayload
- * 337945 : [oggdemux] segment stop position ignored
- * 338419 : Regression in the handling of files with multiple audio/s...
- * 338897 : Videoscale crashes as part of DVD to Ogg transcoding
- * 339013 : [videorate] Goes into an infinite loop
- * 339047 : [riff] handle H264 fourcc in addition to h264
- * 339212 : ISO file typefinding regression
- * 330748 : deadlock in base audio sink on playing- > paused state change
-
-Bugs fixed since 0.10.4:
-
- * 334216 : [gnomevfssrc] won't open some media on NFS mounts any longer
- * 334226 : typefindfunctions plugin crashes on PPC on registration
-
-Changes since 0.10.3:
-
- * (Experimental) QoS support
- * oggmuxer now creates 100% valid streams for Theora, Vorbis and Speex
- * documentation updates
- * better support for subtitles (seeking)
-
-Bugs fixed since 0.10.3:
-
- * 310202 : [subtitles] < i > < /i > tags and others should be supported i...
- * 312439 : XVideo output doesn't work on remote displays (probably r...
- * 321271 : audio output is truncated at EOS
- * 321650 : Can't decode this ogm file
- * 325732 : [oggdemux] problem when seeking to time less than 4s with...
- * 325972 : [typefinding] doesn't recognise this mp3
- * 326720 : [alsasink] doesn't support more than 2 channels anymore
- * 330711 : [ffmpegcolorspace] problems with palettized RGB (fencount...
- * 330789 : gstbaseaudiosink causes noise on seeking
- * 330888 : Fix build with gcc 2.95 (again)
- * 331295 : gnomevfssink doesn't respect umask when creating files
- * 331526 : 3GP type detection is too simple
- * 331678 : Decodebin is not reusable within a single pipeline (as in...
- * 331690 : playbin won't play my last.fm stream
- * 331763 : [alsamixer] unmute sets the volume to 100%
- * 331765 : [alsamixer] mixer applet slider doesn't want to move from...
- * 331903 : [videorate] doesnt handle input caps of framerate=0/1 sanely
- * 332778 : [ogmparse] " Already an existing pad " WARNING
- * 332964 : random crashes in mp3_type_find
- * 333254 : theora encoder does not set IN_CAPS flag properly
- * 333352 : [gnomevfssink] reports disk full as generic error
- * 333488 : Allow for palette < 256 colours in AVI files
- * 333510 : [PATCH] Fix gst_pad_new_from_template (gst_static_pad_tem...
- * 333545 : [riff] set depth on wma caps to make asfdemux and pitfdll...
- * 333663 : [patch] unref the result of gst_pad_get_parent
- * 333900 : [typefind] cannot play a particular mp3 file
- * 334112 : variable not initialized
- * 334129 : Disable frame dropping for now
- * 317038 : use default channel layout if none is specified in multic...
- * 319340 : [cdparanoia] uncorrected-error signal never fired
-
-API added since 0.10.3:
-
- * GstTextOverlay::halignment
- * GstTextOverlay::valignment
-
-Changes since 0.10.2:
-
- * typefind improvements
- * Ogg decoding and encoding fixes
- * Improved audio and video sink classes
- * Bug and leak fixes
- * Improved video scaling
- * On-the-fly visualisation switching
- * Subtitle support
-
-Bugs fixed since 0.10.2:
-
- * 330244 : gsttextoverlay.c:895: 'struct _GstCollectData' has no mem...
- * 324000 : [playbin] post error or message on unknown input
- * 153004 : [typefind] can't identify mp3 file with one single mpeg f...
- * 323874 : [playbin] leaks sinks and threads when using gconfaudiosink
- * 324626 : ffmpegcolorspace support for fourcc " UYVY "
- * 326447 : check that all elements in -base pass queries they can't ...
- * 328263 : Fix build with gcc 2.95
- * 328279 : [decodebin] timeout issue when pre-rolling
- * 329326 : Fix oggmux removing pads from collect pads
-
-Changes since 0.10.1:
-
- * ported gnomevfssink, cdparanoia
- * New library and base class: GstCddaBaseSrc
- * ported mixerutils.h
- * added 'sine-tab' waveform to audiotestsrc
- * added float audio to audiorate
-
-Bugs fixed since 0.10.1:
-
- * 324216 : [cdparanoia] missing patches from 0.8
- * 324696 : [videotestsrc] does not start counting the time from zero...
- * 324900 : Problem compiling gst-plugins-base with Forte
- * 325984 : [playbin] cannot handle sources that produce raw audio/video
- * 325990 : patch videotestsrc for using glib types
- * 326601 : GstRingBuffer crashes with alaw/mulaw caps
- * 327114 : [theoradec] should post tags on the bus
- * 327216 : vorbisdec segfaults on certain queries
-
-API added since 0.10.1:
-
- * added libgstcddabase
- * added mixerutils.h
-
-Changes since 0.10.0:
-
- * Parallel installability with 0.8.x series
- * Threadsafe design and API
- * removed gst-launch-ext
- * Ported: ogmparse
- * Fixes for: subparse, xvimagesink, audioresample, videorate, decodebin
-
-Bugs fixed since 0.10.0:
-
- * 322347 : GstBaseRtpDepayload timestamps are wring
- * 323900 : Basertpdepayloader lets NEWSEGMENT events through unfiltered
- * 323878 : missing < string.h > inclusion (for memset & FD_ZERO)
-
-API added since 0.10.0:
-
- * GstAlsaMixer::device
- * GstAlsaMixer::device-name
-
-Bugs fixed since 0.9.7:
-
- * 319172 : gstreamer-plugins-base-0.9.pc doesn't export linking flags
- * 323017 : While(1) loop with sleep(0) in basertpdepayload.c
-
-Changes since 0.9.6:
-
- * Parallel installability with 0.8.x series
- * Threadsafe design and API
- * ximagesink and xvimagesink updates and interactive test
- * added pango
- * rename net to netbuffer library
- * rtp element renaming
- * stream selector fixes
-
-Bugs fixed since 0.9.6:
-
- * 319618 : [decodebin] some ogg videos don't play
- * 320644 : RTP packetizer does't set the packet timestamps correctly
- * 322388 : xvimagesink force-aspect-ratio=True always displays squar...
- * 322704 : oggdemux typefind list leak
-
-Changes since 0.9.5:
-
- * Parallel installability with 0.8.x series
- * Threadsafe design and API
- * lots of leak fixes
- * flicker-free and rewritten X sinks
- * fractional framerates
- * removed sinesrc, replaced by audiotestsrc
-
-Bugs fixed since 0.9.5:
-
- * 316442 : playbin should use autoaudiosink/autovideosink by default
- * 318353 : [ffmpegcolorspace] forward-port fixes from 0.8 branch
- * 320200 : vorbisenc: min-bitrate and max-bitrate are 1/1000 bps rat...
- * 321164 : gstringbuffer stops working under load
- * 321426 : ximage plugin should be renamed to ximagesink
- * 321446 : sinesrc should be dropped in favour of audiotestsrc
- * 321451 : GstRtpBuffer: no way to create a sub buffer with only the...
- * 321816 : [API] xoverlay API to post prepare-xwindow-id message
- * 321894 : vorbisenc doesn't compile
- * 322117 : Rename libgsttagedit to libgsttag
-
-Changes since 0.9.4:
-
- * video caps now use a good range for framerate and w/h
- * oggdemux/oggmux improvements
- * playbin improvements
-
-Bugs fixed since 0.9.4:
-
- * 319110 : [PATCH] oggdemux chain finding is slow
- * 320058 : playbin of a jpeg over http does not work
- * 320923 : [volume] doesn't build on Solaris
- * 321011 : gstbasertpdepayload doesn't send the " new segment " event ...
-
-Changes since 0.9.3:
-
- * New element: audiotestsrc
- * typefind improvements
- * buffer-frames removed
-
-Changes since 0.9.2:
-
- * RTP base classes
-
-Bugs fixed since 0.9.2:
-
- * 313251 : ximagesink unused functions
- * 315159 : audioconvert lost 24 bit conversions in the rewrite
-
+This is GStreamer opengl Plug-ins 0.10.0
+
+Changes since 0.10.0:
+
+ *
+
+Bugs fixed since 0.10.0:
+
+ *
+
+API added since 0.10.0:
+
+ *
diff --git a/README b/README
index 908386d..a7d08d7 100644
--- a/README
+++ b/README
@@ -1,247 +1,247 @@
-WHAT IT IS
-----------
-
-This is GStreamer, a framework for streaming media.
-
-WHERE TO START
---------------
-
-We have a website at
-http://gstreamer.freedesktop.org/
-
-You should start by going through our FAQ at
-http://gstreamer.freedesktop.org/data/doc/gstreamer/head/faq/html/
-
-There is more documentation; go to
-http://gstreamer.freedesktop.org/documentation
-
-You can subscribe to our mailing lists; see the website for details.
-
-We track bugs in GNOME's bugzilla; see the website for details.
-
-You can join us on IRC - #gstreamer on irc.freenode.org
-
-GStreamer 0.10 series
----------------------
-
-Starring
-
- GSTREAMER
-
-The core around which all other modules revolve. Base functionality and
-libraries, some essential elements, documentation, and testing.
-
- BASE
-
-A well-groomed and well-maintained collection of GStreamer plug-ins and
-elements, spanning the range of possible types of elements one would want
-to write for GStreamer.
-
-And introducing, for the first time ever, on the development screen ...
-
- THE GOOD
-
- --- "Such ingratitude. After all the times I've saved your life."
-
-A collection of plug-ins you'd want to have right next to you on the
-battlefield. Shooting sharp and making no mistakes, these plug-ins have it
-all: good looks, good code, and good licensing. Documented and dressed up
-in tests. If you're looking for a role model to base your own plug-in on,
-here it is.
-
-If you find a plot hole or a badly lip-synced line of code in them,
-let us know - it is a matter of honour for us to ensure Blondie doesn't look
-like he's been walking 100 miles through the desert without water.
-
- THE UGLY
-
- --- "When you have to shoot, shoot. Don't talk."
-
-There are times when the world needs a color between black and white.
-Quality code to match the good's, but two-timing, backstabbing and ready to
-sell your freedom down the river. These plug-ins might have a patent noose
-around their neck, or a lock-up license, or any other problem that makes you
-think twice about shipping them.
-
-We don't call them ugly because we like them less. Does a mother love her
-son less because he's not as pretty as the other ones ? No - she commends
-him on his great personality. These plug-ins are the life of the party.
-And we'll still step in and set them straight if you report any unacceptable
-behaviour - because there are two kinds of people in the world, my friend:
-those with a rope around their neck and the people who do the cutting.
-
- THE BAD
-
- --- "That an accusation?"
-
-No perfectly groomed moustache or any amount of fine clothing is going to
-cover up the truth - these plug-ins are Bad with a capital B.
-They look fine on the outside, and might even appear to get the job done, but
-at the end of the day they're a black sheep. Without a golden-haired angel
-to watch over them, they'll probably land in an unmarked grave at the final
-showdown.
-
-Don't bug us about their quality - exercise your Free Software rights,
-patch up the offender and send us the patch on the fastest steed you can
-steal from the Confederates. Because you see, in this world, there's two
-kinds of people, my friend: those with loaded guns and those who dig.
-You dig.
-
-The Lowdown
------------
-
- --- "I've never seen so many plug-ins wasted so badly."
-
-GStreamer Plug-ins has grown so big that it's hard to separate the wheat from
-the chaff. Also, distributors have brought up issues about the legal status
-of some of the plug-ins we ship. To remedy this, we've divided the previous
-set of available plug-ins into four modules:
-
-- gst-plugins-base: a small and fixed set of plug-ins, covering a wide range
- of possible types of elements; these are continuously kept up-to-date
- with any core changes during the development series.
-
- - We believe distributors can safely ship these plug-ins.
- - People writing elements should base their code on these elements.
- - These elements come with examples, documentation, and regression tests.
-
-- gst-plugins-good: a set of plug-ins that we consider to have good quality
- code, correct functionality, our preferred license (LGPL for the plug-in
- code, LGPL or LGPL-compatible for the supporting library).
-
- - We believe distributors can safely ship these plug-ins.
- - People writing elements should base their code on these elements.
-
-- gst-plugins-ugly: a set of plug-ins that have good quality and correct
- functionality, but distributing them might pose problems. The license
- on either the plug-ins or the supporting libraries might not be how we'd
- like. The code might be widely known to present patent problems.
-
- - Distributors should check if they want/can ship these plug-ins.
- - People writing elements should base their code on these elements.
-
-- gst-plugins-bad: a set of plug-ins that aren't up to par compared to the
- rest. They might be close to being good quality, but they're missing
- something - be it a good code review, some documentation, a set of tests,
- a real live maintainer, or some actual wide use.
- If the blanks are filled in they might be upgraded to become part of
- either gst-plugins-good or gst-plugins-ugly, depending on the other factors.
-
- - If the plug-ins break, you can't complain - instead, you can fix the
- problem and send us a patch, or bribe someone into fixing them for you.
- - New contributors can start here for things to work on.
-
-PLATFORMS
----------
-
-- Linux is of course fully supported
-- FreeBSD is reported to work; other BSD's should work too
-- Solaris is reported to work; a specific sunaudiosink plugin has been written
-- MacOSX is reported to work; specific audio and video sinks have been written
-- Windows support is experimental but improving. Output sinks have been
- written but are not yet included in the code. We support
- - MSys/MingW builds
- - Microsoft Visual Studio 6 builds (see win32/README.txt)
-
-INSTALLING FROM PACKAGES
-------------------------
-
-You should always prefer installing from packages first. GStreamer is
-well-maintained for a number of distributions, including Fedora, Debian,
-Ubuntu, Mandrake, Gentoo, ...
-
-Only in cases where you:
-- want to hack on GStreamer
-- want to verify that a bug has been fixed
-- do not have a sane distribution
-should you choose to build from source tarballs or CVS.
-
-Find more information about the various packages at
-http://gstreamer.freedesktop.org/download/
-
-COMPILING FROM SOURCE TARBALLS
-------------------------------
-
-- again, make sure that you really need to install from source !
- If GStreamer is one of your first projects ever that you build from source,
- consider taking on an easier project.
-
-- check output of ./configure --help to see if any options apply to you
-- run
- ./configure
- make
-
- to build GStreamer.
-- if you want to install it (not required, but what you usually want to do), run
- make install
-
-- try out a simple test:
- gst-launch -v fakesrc num_buffers=5 ! fakesink
- (If you didn't install GStreamer, prefix gst-launch with tools/)
-
- If it outputs a bunch of messages from fakesrc and fakesink, everything is
- ok.
-
- If it did not work, keep in mind that you might need to adjust the
- PATH and/or LD_LIBRARY_PATH environment variables to make the system
- find GStreamer in the prefix where you installed (by default that is /usr/local).
-
-- After this, you're ready to install gst-plugins, which will provide the
- functionality you're probably looking for by now, so go on and read
- that README.
-
-COMPILING FROM CVS
-------------------
-
-When building from CVS sources, you will need to run autogen.sh to generate
-the build system files.
-
-You will need a set of additional tools typical for building from CVS,
-including:
-- autoconf
-- automake
-- libtool
-
-autogen.sh will check for recent enough versions and complain if you don't have
-them. You can also specify specific versions of automake and autoconf with
---with-automake and --with-autoconf
-
-Check autogen.sh options by running autogen.sh --help
-
-autogen.sh can pass on arguments to configure - you just need to separate them
-from autogen.sh with -- between the two.
-prefix has been added to autogen.sh but will be passed on to configure because
-some build scripts like that.
-
-When you have done this once, you can use autoregen.sh to re-autogen with
-the last passed options as a handy shortcut. Use it.
-
-After the autogen.sh stage, you can follow the directions listed in
-"COMPILING FROM SOURCE"
-
-You can also run your whole cvs stack uninstalled. The script in
-the gstreamer module /docs/faq/gst-uninstalled) is helpful in setting
-up your environment for this.
-
-PLUG-IN DEPENDENCIES AND LICENSES
----------------------------------
-
-GStreamer is developed under the terms of the LGPL (see LICENSE file for
-details). Some of our plug-ins however rely on libraries which are available
-under other licenses. This means that if you are distributing an application
-which has a non-GPL compatible license (for instance a closed-source
-application) with GStreamer, you have to make sure not to distribute GPL-linked
-plug-ins.
-
-When using GPL-linked plug-ins, GStreamer is for all practical reasons
-under the GPL itself.
-
-HISTORY
--------
-
-The fundamental design comes from the video pipeline at Oregon Graduate
-Institute, as well as some ideas from DirectMedia. It's based on plug-ins that
-will provide the various codec and other functionality. The interface
-hopefully is generic enough for various companies (ahem, Apple) to release
-binary codecs for Linux, until such time as they get a clue and release the
-source.
+WHAT IT IS
+----------
+
+This is GStreamer, a framework for streaming media.
+
+WHERE TO START
+--------------
+
+We have a website at
+http://gstreamer.freedesktop.org/
+
+You should start by going through our FAQ at
+http://gstreamer.freedesktop.org/data/doc/gstreamer/head/faq/html/
+
+There is more documentation; go to
+http://gstreamer.freedesktop.org/documentation
+
+You can subscribe to our mailing lists; see the website for details.
+
+We track bugs in GNOME's bugzilla; see the website for details.
+
+You can join us on IRC - #gstreamer on irc.freenode.org
+
+GStreamer 0.10 series
+---------------------
+
+Starring
+
+ GSTREAMER
+
+The core around which all other modules revolve. Base functionality and
+libraries, some essential elements, documentation, and testing.
+
+ BASE
+
+A well-groomed and well-maintained collection of GStreamer plug-ins and
+elements, spanning the range of possible types of elements one would want
+to write for GStreamer.
+
+And introducing, for the first time ever, on the development screen ...
+
+ THE GOOD
+
+ --- "Such ingratitude. After all the times I've saved your life."
+
+A collection of plug-ins you'd want to have right next to you on the
+battlefield. Shooting sharp and making no mistakes, these plug-ins have it
+all: good looks, good code, and good licensing. Documented and dressed up
+in tests. If you're looking for a role model to base your own plug-in on,
+here it is.
+
+If you find a plot hole or a badly lip-synced line of code in them,
+let us know - it is a matter of honour for us to ensure Blondie doesn't look
+like he's been walking 100 miles through the desert without water.
+
+ THE UGLY
+
+ --- "When you have to shoot, shoot. Don't talk."
+
+There are times when the world needs a color between black and white.
+Quality code to match the good's, but two-timing, backstabbing and ready to
+sell your freedom down the river. These plug-ins might have a patent noose
+around their neck, or a lock-up license, or any other problem that makes you
+think twice about shipping them.
+
+We don't call them ugly because we like them less. Does a mother love her
+son less because he's not as pretty as the other ones ? No - she commends
+him on his great personality. These plug-ins are the life of the party.
+And we'll still step in and set them straight if you report any unacceptable
+behaviour - because there are two kinds of people in the world, my friend:
+those with a rope around their neck and the people who do the cutting.
+
+ THE BAD
+
+ --- "That an accusation?"
+
+No perfectly groomed moustache or any amount of fine clothing is going to
+cover up the truth - these plug-ins are Bad with a capital B.
+They look fine on the outside, and might even appear to get the job done, but
+at the end of the day they're a black sheep. Without a golden-haired angel
+to watch over them, they'll probably land in an unmarked grave at the final
+showdown.
+
+Don't bug us about their quality - exercise your Free Software rights,
+patch up the offender and send us the patch on the fastest steed you can
+steal from the Confederates. Because you see, in this world, there's two
+kinds of people, my friend: those with loaded guns and those who dig.
+You dig.
+
+The Lowdown
+-----------
+
+ --- "I've never seen so many plug-ins wasted so badly."
+
+GStreamer Plug-ins has grown so big that it's hard to separate the wheat from
+the chaff. Also, distributors have brought up issues about the legal status
+of some of the plug-ins we ship. To remedy this, we've divided the previous
+set of available plug-ins into four modules:
+
+- gst-plugins-base: a small and fixed set of plug-ins, covering a wide range
+ of possible types of elements; these are continuously kept up-to-date
+ with any core changes during the development series.
+
+ - We believe distributors can safely ship these plug-ins.
+ - People writing elements should base their code on these elements.
+ - These elements come with examples, documentation, and regression tests.
+
+- gst-plugins-good: a set of plug-ins that we consider to have good quality
+ code, correct functionality, our preferred license (LGPL for the plug-in
+ code, LGPL or LGPL-compatible for the supporting library).
+
+ - We believe distributors can safely ship these plug-ins.
+ - People writing elements should base their code on these elements.
+
+- gst-plugins-ugly: a set of plug-ins that have good quality and correct
+ functionality, but distributing them might pose problems. The license
+ on either the plug-ins or the supporting libraries might not be how we'd
+ like. The code might be widely known to present patent problems.
+
+ - Distributors should check if they want/can ship these plug-ins.
+ - People writing elements should base their code on these elements.
+
+- gst-plugins-bad: a set of plug-ins that aren't up to par compared to the
+ rest. They might be close to being good quality, but they're missing
+ something - be it a good code review, some documentation, a set of tests,
+ a real live maintainer, or some actual wide use.
+ If the blanks are filled in they might be upgraded to become part of
+ either gst-plugins-good or gst-plugins-ugly, depending on the other factors.
+
+ - If the plug-ins break, you can't complain - instead, you can fix the
+ problem and send us a patch, or bribe someone into fixing them for you.
+ - New contributors can start here for things to work on.
+
+PLATFORMS
+---------
+
+- Linux is of course fully supported
+- FreeBSD is reported to work; other BSD's should work too
+- Solaris is reported to work; a specific sunaudiosink plugin has been written
+- MacOSX is reported to work; specific audio and video sinks have been written
+- Windows support is experimental but improving. Output sinks have been
+ written but are not yet included in the code. We support
+ - MSys/MingW builds
+ - Microsoft Visual Studio 6 builds (see win32/README.txt)
+
+INSTALLING FROM PACKAGES
+------------------------
+
+You should always prefer installing from packages first. GStreamer is
+well-maintained for a number of distributions, including Fedora, Debian,
+Ubuntu, Mandrake, Gentoo, ...
+
+Only in cases where you:
+- want to hack on GStreamer
+- want to verify that a bug has been fixed
+- do not have a sane distribution
+should you choose to build from source tarballs or CVS.
+
+Find more information about the various packages at
+http://gstreamer.freedesktop.org/download/
+
+COMPILING FROM SOURCE TARBALLS
+------------------------------
+
+- again, make sure that you really need to install from source !
+ If GStreamer is one of your first projects ever that you build from source,
+ consider taking on an easier project.
+
+- check output of ./configure --help to see if any options apply to you
+- run
+ ./configure
+ make
+
+ to build GStreamer.
+- if you want to install it (not required, but what you usually want to do), run
+ make install
+
+- try out a simple test:
+ gst-launch -v fakesrc num_buffers=5 ! fakesink
+ (If you didn't install GStreamer, prefix gst-launch with tools/)
+
+ If it outputs a bunch of messages from fakesrc and fakesink, everything is
+ ok.
+
+ If it did not work, keep in mind that you might need to adjust the
+ PATH and/or LD_LIBRARY_PATH environment variables to make the system
+ find GStreamer in the prefix where you installed (by default that is /usr/local).
+
+- After this, you're ready to install gst-plugins, which will provide the
+ functionality you're probably looking for by now, so go on and read
+ that README.
+
+COMPILING FROM CVS
+------------------
+
+When building from CVS sources, you will need to run autogen.sh to generate
+the build system files.
+
+You will need a set of additional tools typical for building from CVS,
+including:
+- autoconf
+- automake
+- libtool
+
+autogen.sh will check for recent enough versions and complain if you don't have
+them. You can also specify specific versions of automake and autoconf with
+--with-automake and --with-autoconf
+
+Check autogen.sh options by running autogen.sh --help
+
+autogen.sh can pass on arguments to configure - you just need to separate them
+from autogen.sh with -- between the two.
+prefix has been added to autogen.sh but will be passed on to configure because
+some build scripts like that.
+
+When you have done this once, you can use autoregen.sh to re-autogen with
+the last passed options as a handy shortcut. Use it.
+
+After the autogen.sh stage, you can follow the directions listed in
+"COMPILING FROM SOURCE"
+
+You can also run your whole cvs stack uninstalled. The script in
+the gstreamer module /docs/faq/gst-uninstalled) is helpful in setting
+up your environment for this.
+
+PLUG-IN DEPENDENCIES AND LICENSES
+---------------------------------
+
+GStreamer is developed under the terms of the LGPL (see LICENSE file for
+details). Some of our plug-ins however rely on libraries which are available
+under other licenses. This means that if you are distributing an application
+which has a non-GPL compatible license (for instance a closed-source
+application) with GStreamer, you have to make sure not to distribute GPL-linked
+plug-ins.
+
+When using GPL-linked plug-ins, GStreamer is for all practical reasons
+under the GPL itself.
+
+HISTORY
+-------
+
+The fundamental design comes from the video pipeline at Oregon Graduate
+Institute, as well as some ideas from DirectMedia. It's based on plug-ins that
+will provide the various codec and other functionality. The interface
+hopefully is generic enough for various companies (ahem, Apple) to release
+binary codecs for Linux, until such time as they get a clue and release the
+source.
diff --git a/RELEASE b/RELEASE
index 02fed97..27fdc4a 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,205 +1,8 @@
-
-Release notes for GStreamer Base Plug-ins 0.10.15 "No need to argue"
-
-
-
-The GStreamer team is proud to announce a new release
-in the 0.10.x stable series of the
-GStreamer Base Plug-ins.
-
-
-The 0.10.x series is a stable series targeted at end users.
-It is not API or ABI compatible with the stable 0.8.x series.
-It is, however, parallel installable with the 0.8.x series.
-
-
-
-This module contains a set of reference plugins, base classes for other
-plugins, and helper libraries.
-
-This module is kept up-to-date together with the core developments. Element
-writers should look at the elements in this module as a reference for
-their development.
-
-This module contains elements for, among others:
-
- device plugins: x(v)imagesink, alsa, v4lsrc, cdparanoia
- containers: ogg
- codecs: vorbis, theora
- text: textoverlay, subparse
- sources: audiotestsrc, videotestsrc, gnomevfssrc
- network: tcp
- typefind
- audio processing: audioconvert, adder, audiorate, audioscale, volume
- visualisation: libvisual
- video processing: ffmpegcolorspace
- aggregate elements: decodebin, playbin
-
-
-Other modules containing plug-ins are:
-
-
-gst-plugins-good
-contains a set of well-supported plug-ins under our preferred license
-gst-plugins-ugly
-contains a set of well-supported plug-ins, but might pose problems for
- distributors
-gst-plugins-bad
-contains a set of less supported plug-ins that haven't passed the
- rigorous quality testing we expect
-
-
-
-
-
-Features of this release
-
- * RTP/RTSP/RTCP/SDP support improved
- * New FFT support library libgstfft, based on Kiss FFT
- * New formats supported in volume and audiotestsrc
- * Fixes in audiorate and videorate
- * Audio capture fixes
- * Playbin and decodebin fixes
- * New tagdemux base class for ID3/APE style tag readers
- * Fix a nasty crash in the X sinks on shutdown
- * New tags supported
- * Add support for multichannel WAV files.
- * Preserve channel layout information when up/down-mixing.
- * Many bug-fixes and improvements
- *
-
-Bugs fixed in this release
-
- * 475395 : decodebin2 leaks request-pads
- * 475451 : [decodebin2] leaks ghostpad
- * 378770 : [xvimagesink] race condition in event thread?
- * 407282 : [decodebin2] autoplug-sort signal has GList ** parameter
- * 430677 : [audioconvert] does not preserve channel positions when f...
- * 442654 : [volume] controller bypassed by default
- * 445529 : [volume] support for 24/32-bit audio/x-raw-int
- * 446766 : return code for gst_base_rtp_payload_audio_handle_event()
- * 451970 : Subparse requires HTML parser
- * 453650 : [audiobasesrc] two alsasrcs do not work in one pipeline
- * 459334 : [textoverlay] expose pango line alignment property
- * 459585 : [basertpdepayload] api without namespace
- * 460422 : [audiotestsrc] Add support for float and double output
- * 462805 : [alsa] compilation fails with gcc 4.2
- * 462979 : Add 'silent' property to GstTimeOverlay
- * 463215 : [audioconvert] compile errors
- * 464320 : [PATCH] gst-plugins-base-0.14 does not build for win32
- * 464666 : [playbin] QT trailer hangs in preroll with decodebin2
- * 464690 : Add connection-speed property to uridecodebin element
- * 465015 : [playbin] Not removed probes causes deadlocks in streamin...
- * 465028 : some warnings with mingw
- * 467667 : GST_FRAMES_TO_CLOCK_TIME() and GST_CLOCK_TIME_TO_FRAMES()...
- * 468129 : [basertpaudiopayload] event handler returns the wrong value
- * 468619 : New library gstfft: FFT library for integer and float typ...
- * 470456 : [API] add gst_missing_*_installer_detail_new()
- * 470766 : [ssaparse] line breaks in SSA subtitle parser
- * 471067 : Make the SDP code useable for generating SDP descriptions
- * 471194 : [rtpbuffer] RTP headers are wrong for win32
- * 473097 : [baseaudiosink] gstreamer-properties hangs when testing s...
- * 474384 : gstrtsp-enumtypes.c and .h needed for win32
- * 474880 : [xvimagesink] [ximagesink] leaking buffer caps reference
- * 475731 : rtspconnection is able to read incomplete messages
- * 483620 : All Rtp buffers are discarded -- gst_rtp_buffer_get_payl...
- * 484989 : memleak, not unrefed caps for gstbasertppayload.c
- * 489010 : Please change default channel order for WAVE_EXT-less .wa...
- * 491722 : [playbin] regression: crash with external subtitles
- * 492098 : [GstFFT] Broken scaling
- * 492114 : Build issues on Windows/MSVC
- * 492306 : compilation errors with MinGW
- * 492813 : Missing symbols in libgstrtp.def
- * 493986 : Build issues on Windows (missing symbols)
- * 494346 : pre-release vs6 patch
- * 496548 : Including malloc.h breaks macos build
- * 496724 : DSW file references non-existent DSP files
- * 464079 : audiotestsrc doesn't respond to conversion queries properly
- * 442065 : floatcast.h includes config.h and might break other apps
- * 466717 : gst_event_new_new_segment_full:assertion `start < = stop' ...
- * 485753 : Decodebin2 deadlocks when nulling pipeline during typefind
- * 464028 : Move connection-speed from playbin to playbasebin
-
-API changed in this release
-
-- API additions:
-
-* GstTagDemux base class for simple tag demuxers
-* GstBaseAudioSrc::provide-clock property
-* gst_rtcp_ntp_to_unix()
-* gst_rtcp_unix_to_ntp()
-* gst_rtp_buffer_get_header_len()
-* gst_rtp_buffer_get_extension_data()
-* gst_rtp_buffer_compare_seqnum()
-* gst_rtp_buffer_ext_timestamp()
-* gst_rtcp_packet_sdes_copy_entry()
-* gst_install_plugins_supported()
-* gst_missing_*_installer_detail_new() convenience API
-* gst_rtsp_connection_poll()
-* GstTextOverlay::line-alignment property
-
-Download
-
-You can find source releases of gst-plugins-base in the download directory:
-http://gstreamer.freedesktop.org/src/gst-plugins-base/
-
-GStreamer Homepage
-
-More details can be found on the project's website:
-http://gstreamer.freedesktop.org/
-
-Support and Bugs
-
-We use GNOME's bugzilla for bug reports and feature requests:
-http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer
-
-Developers
-
-CVS is hosted on cvs.freedesktop.org.
-All code is in CVS and can be checked out from there.
-Interested developers of the core library, plug-ins, and applications should
-subscribe to the gstreamer-devel list. If there is sufficient interest we
-will create more lists as necessary.
-
-
-Applications
-
-Contributors to this release
-
- * Stefan Kost
- * Alexander Shopov
- * Damien Lespiau
- * Dan Williams
- * Daniel Díaz
- * David Schleef
- * Davyd Madeley
- * Funda Wang
- * Haakon Sporsheim
- * Ilkka Tuohela
- * Jakub Bogusz
- * Jan Schmidt
- * Jason Kivlighn
- * Jens Granseuer
- * Johan Dahlin
- * Jorge González González
- * Josep Torra Valles
- * Julien MOUTTE
- * Laurent Glayal
- * Michael Smith
- * Mogens Jaeger
- * Ole André Vadla Ravnås
- * Olivier Crete
- * Peter Kjellerstedt
- * Renato Filho
- * René Stadler
- * Sebastian Dröge
- * Sebastien Moutte
- * Stefan Kost
- * Thijs Vermeir
- * Thomas Vander Stichele
- * Tim-Philipp Müller
- * Tommi Myöhänen
- * Vincent Torri
- * Wim Taymans
- * Yang Hong
+
+Release notes for GStreamer Opengl Plug-ins 0.10.0
+
+
+Contributors to this release
+
+ *
  \ No newline at end of file
diff --git a/REQUIREMENTS b/REQUIREMENTS
index 0c84c4d..fcf476a 100644
--- a/REQUIREMENTS
+++ b/REQUIREMENTS
@@ -1,105 +1,49 @@
-GStreamer uses a *large* array of tools and libraries, most of which are
-optional. We have attempted to make sure that any code that depends on
-optional libraries doesn't get built unless you have those libraries. If
-you find this not to be the case, please, let us know by filing a bug
-report at http://bugzilla.gnome.org/.
-
-
-Required tools:
-===============
-
-An extra set of tools is required if you wish to build GStreamer out of
-CVS (using autogen.sh):
-
-autoconf 2.52 or better
-automake 1.5
-gettext 0.11.5
-libtool v1.4 or better
-pkgconfig 0.9.0 or better (http://www.freedesktop.org/software/pkgconfig/)
-
-Required libraries:
-===================
-
-The core GStreamer libraries. See the gstreamer/ module in GStreamer cvs, or
-the version that corresponds to this plugin release.
-
-Package: GStreamer
-Version: 0.10.11.2
-Recommended: 0.10.latest
-URL: http://gstreamer.freedesktop.org/
-DebianPackage: libgstreamer0.10-dev
-Notes: The required version is updated frequently, so the version
- listed in this file is often wrong. If you are compiling from CVS,
- the required version is often the latest GStreamer CVS.
-
-Package: liboil
-Version: >= 0.3.8
-Recommended: 0.3.latest
-URL: http://liboil.freedesktop.org/
-DebianPackage: liboil0.3-dev
-
-
-Optional libraries:
-===================
-
-This file lists supporting libraries for which gst-plugins-base contains
-plugins, as well as their minimum version. You can find the corresponding
-plugins in ext/(library)
-
-Package: GTK+
-Version: >= 2.0
-Recommended: >= 2.2
-URL: http://www.gtk.org/
-DebianPackage: libgtk2.0-dev
-Notes: Required by several examples
-
-Package: Xlib
-Plugins: xvimagesink, ximagesink, v4l (v4lsrc), ximagesrc
-DebianPackage: libx11-dev libxv-dev libxt-dev
-
-Package: Alsa
-Version: >= 0.9.1
-Plugins: alsa (alsasrc, alsasink)
-URL: http://www.alsa-project.org/
-DebianPackage: libasound2-dev
-
-Package: CDParanoia
-Plugins: cdparanoia
-URL: http://xiph.org/paranoia/
-DebianPackage: libcdparanoia0-dev
-
-Package: GnomeVFS
-Version: >= 2.0 (2.4?)
-Plugins: gnomevfs (gnomevfssrc)
-URL: http://www.gnome.org/
-DebianPackage: libgnomevfs2-dev
-
-Package: libvisual
-Version: >= 0.2.0
-Recommended: 0.4.0
-Plugins: libvisual
-URL: http://localhost.nl/~synap/libvisual-wiki/index.php/Main_Page
-DebianPackage: libvisual0.4-dev
-
-Package: Ogg
-Version: >= 1.0
-Plugins: ogg (oggdemux, oggmux)
-URL: http://xiph.org/ogg/
-DebianPackage: libogg-dev
-
-Package: Pango
-Plugins: pango
-DebianPackage: libpango1.0-dev
-URL: http://www.pango.org/
-
-Package: Theora
-Plugins: theora (theoradec, theoraenc)
-URL: http://www.theora.org/
-DebianPackage: libtheora-dev
-
-Package: Vorbis
-Plugins: vorbis (vorbisdec, vorbisenc)
-DebianPackage: libvorbis-dev
-URL: http://www.vorbis.com/
-
-
+GStreamer uses a *large* array of tools and libraries, most of which are
+optional. We have attempted to make sure that any code that depends on
+optional libraries doesn't get built unless you have those libraries. If
+you find this not to be the case, please, let us know by filing a bug
+report at http://bugzilla.gnome.org/.
+
+
+Required tools:
+===============
+
+An extra set of tools is required if you wish to build GStreamer out of
+CVS (using autogen.sh):
+
+autoconf 2.52 or better
+automake 1.5
+gettext 0.11.5
+libtool v1.4 or better
+pkgconfig 0.9.0 or better (http://www.freedesktop.org/software/pkgconfig/)
+
+Required libraries:
+===================
+
+The core GStreamer libraries. See the gstreamer/ module in GStreamer cvs, or
+the version that corresponds to this plugin release.
+
+Package: GStreamer
+Version: 0.10.0
+Recommended: 0.10.latest
+URL: http://gstreamer.freedesktop.org/
+DebianPackage: libgstreamer0.10-dev
+Notes: The required version is updated frequently, so the version
+ listed in this file is often wrong. If you are compiling from CVS,
+ the required version is often the latest GStreamer CVS.
+
+Package: liboil
+Version: >= 0.3.8
+Recommended: 0.3.latest
+URL: http://liboil.freedesktop.org/
+DebianPackage: liboil0.3-dev
+
+
+Optional libraries:
+===================
+
+This file lists supporting libraries for which gst-plugins-base contains
+plugins, as well as their minimum version. You can find the corresponding
+plugins in ext/(library)
+
+
diff --git a/autogen.sh b/autogen.sh
index 7cd5c78..9144cf5 100755..100644
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,116 +1,116 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-DIE=0
-package=gst-plugins-gl
-srcfile=gst-libs/gst/gl/gstgldisplay.h
-
-# a quick cvs co to ease the transition
-if test ! -d common;
-then
- echo "+ getting common/ from cvs"
- if test -e CVS/Tag
- then
- TAG="-r `tail -c +2 CVS/Tag`"
- fi
- cvs co $TAG common
-fi
-
-# source helper functions
-if test ! -f common/gst-autogen.sh;
-then
- echo There is something wrong with your source tree.
- echo You are missing common/gst-autogen.sh
- exit 1
-fi
-. common/gst-autogen.sh
-
-CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-gtk-doc --enable-plugin-docs'
-
-autogen_options $@
-
-echo -n "+ check for build tools"
-if test ! -z "$NOCHECK"; then echo " skipped"; else echo; fi
-version_check "autoconf" "$AUTOCONF autoconf autoconf259 autoconf257 autoconf-2.54 autoconf-2.53 autoconf-2.52" \
- "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 52 || DIE=1
-version_check "automake" "$AUTOMAKE automake automake-1.9 automake19 automake-1.7 automake-1.6 automake-1.5" \
- "ftp://ftp.gnu.org/pub/gnu/automake/" 1 7 || DIE=1
-version_check "autopoint" "autopoint" \
- "ftp://ftp.gnu.org/pub/gnu/gettext/" 0 11 5 || DIE=1
-version_check "libtoolize" "$LIBTOOLIZE libtoolize glibtoolize" \
- "ftp://ftp.gnu.org/pub/gnu/libtool/" 1 5 0 || DIE=1
-version_check "pkg-config" "" \
- "http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1
-
-die_check $DIE
-
-autoconf_2_52d_check || DIE=1
-aclocal_check || DIE=1
-autoheader_check || DIE=1
-
-die_check $DIE
-
-# if no arguments specified then this will be printed
-if test -z "$*"; then
- echo "+ checking for autogen.sh options"
- echo " This autogen script will automatically run ./configure as:"
- echo " ./configure $CONFIGURE_DEF_OPT"
- echo " To pass any additional options, please specify them on the $0"
- echo " command line."
-fi
-
-toplevel_check $srcfile
-
-# autopoint
-# older autopoint (< 0.12) has a tendency to complain about mkinstalldirs
-if test -x mkinstalldirs; then rm mkinstalldirs; fi
-# first remove patch if necessary, then run autopoint, then reapply
-if test -f po/Makefile.in.in;
-then
- patch -p0 -R --forward < common/gettext.patch
-fi
-tool_run "$autopoint --force"
-patch -p0 < common/gettext.patch
-
-tool_run "$aclocal" "-I m4 -I common/m4 $ACLOCAL_FLAGS"
-tool_run "$libtoolize" "--copy --force"
-tool_run "$autoheader"
-
-# touch the stamp-h.in build stamp so we don't re-run autoheader in maintainer mode -- wingo
-echo timestamp > stamp-h.in 2> /dev/null
-
-tool_run "$autoconf"
-tool_run "$automake" "-a -c -Wno-portability"
-
-# if enable exists, add an -enable option for each of the lines in that file
-if test -f enable; then
- for a in `cat enable`; do
- CONFIGURE_FILE_OPT="--enable-$a"
- done
-fi
-
-# if disable exists, add an -disable option for each of the lines in that file
-if test -f disable; then
- for a in `cat disable`; do
- CONFIGURE_FILE_OPT="$CONFIGURE_FILE_OPT --disable-$a"
- done
-fi
-
-test -n "$NOCONFIGURE" && {
- echo "+ skipping configure stage for package $package, as requested."
- echo "+ autogen.sh done."
- exit 0
-}
-
-echo "+ running configure ... "
-test ! -z "$CONFIGURE_DEF_OPT" && echo " ./configure default flags: $CONFIGURE_DEF_OPT"
-test ! -z "$CONFIGURE_EXT_OPT" && echo " ./configure external flags: $CONFIGURE_EXT_OPT"
-test ! -z "$CONFIGURE_FILE_OPT" && echo " ./configure enable/disable flags: $CONFIGURE_FILE_OPT"
-echo
-
-./configure $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT $CONFIGURE_FILE_OPT || {
- echo " configure failed"
- exit 1
-}
-
-echo "Now type 'make' to compile $package."
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+DIE=0
+package=gst-plugins-gl
+srcfile=gst-libs/gst/gl/gstgldisplay.h
+
+# a quick cvs co to ease the transition
+if test ! -d common;
+then
+ echo "+ getting common/ from cvs"
+ if test -e CVS/Tag
+ then
+ TAG="-r `tail -c +2 CVS/Tag`"
+ fi
+ cvs co $TAG common
+fi
+
+# source helper functions
+if test ! -f common/gst-autogen.sh;
+then
+ echo There is something wrong with your source tree.
+ echo You are missing common/gst-autogen.sh
+ exit 1
+fi
+. common/gst-autogen.sh
+
+CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-gtk-doc --enable-plugin-docs'
+
+autogen_options $@
+
+echo -n "+ check for build tools"
+if test ! -z "$NOCHECK"; then echo " skipped"; else echo; fi
+version_check "autoconf" "$AUTOCONF autoconf autoconf259 autoconf257 autoconf-2.54 autoconf-2.53 autoconf-2.52" \
+ "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 52 || DIE=1
+version_check "automake" "$AUTOMAKE automake automake-1.9 automake19 automake-1.7 automake-1.6 automake-1.5" \
+ "ftp://ftp.gnu.org/pub/gnu/automake/" 1 7 || DIE=1
+version_check "autopoint" "autopoint" \
+ "ftp://ftp.gnu.org/pub/gnu/gettext/" 0 11 5 || DIE=1
+version_check "libtoolize" "$LIBTOOLIZE libtoolize glibtoolize" \
+ "ftp://ftp.gnu.org/pub/gnu/libtool/" 1 5 0 || DIE=1
+version_check "pkg-config" "" \
+ "http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1
+
+die_check $DIE
+
+autoconf_2_52d_check || DIE=1
+aclocal_check || DIE=1
+autoheader_check || DIE=1
+
+die_check $DIE
+
+# if no arguments specified then this will be printed
+if test -z "$*"; then
+ echo "+ checking for autogen.sh options"
+ echo " This autogen script will automatically run ./configure as:"
+ echo " ./configure $CONFIGURE_DEF_OPT"
+ echo " To pass any additional options, please specify them on the $0"
+ echo " command line."
+fi
+
+toplevel_check $srcfile
+
+# autopoint
+# older autopoint (< 0.12) has a tendency to complain about mkinstalldirs
+if test -x mkinstalldirs; then rm mkinstalldirs; fi
+# first remove patch if necessary, then run autopoint, then reapply
+if test -f po/Makefile.in.in;
+then
+ patch -p0 -R --forward < common/gettext.patch
+fi
+tool_run "$autopoint --force"
+patch -p0 < common/gettext.patch
+
+tool_run "$aclocal" "-I m4 -I common/m4 $ACLOCAL_FLAGS"
+tool_run "$libtoolize" "--copy --force"
+tool_run "$autoheader"
+
+# touch the stamp-h.in build stamp so we don't re-run autoheader in maintainer mode -- wingo
+echo timestamp > stamp-h.in 2> /dev/null
+
+tool_run "$autoconf"
+tool_run "$automake" "-a -c -Wno-portability"
+
+# if enable exists, add an -enable option for each of the lines in that file
+if test -f enable; then
+ for a in `cat enable`; do
+ CONFIGURE_FILE_OPT="--enable-$a"
+ done
+fi
+
+# if disable exists, add an -disable option for each of the lines in that file
+if test -f disable; then
+ for a in `cat disable`; do
+ CONFIGURE_FILE_OPT="$CONFIGURE_FILE_OPT --disable-$a"
+ done
+fi
+
+test -n "$NOCONFIGURE" && {
+ echo "+ skipping configure stage for package $package, as requested."
+ echo "+ autogen.sh done."
+ exit 0
+}
+
+echo "+ running configure ... "
+test ! -z "$CONFIGURE_DEF_OPT" && echo " ./configure default flags: $CONFIGURE_DEF_OPT"
+test ! -z "$CONFIGURE_EXT_OPT" && echo " ./configure external flags: $CONFIGURE_EXT_OPT"
+test ! -z "$CONFIGURE_FILE_OPT" && echo " ./configure enable/disable flags: $CONFIGURE_FILE_OPT"
+echo
+
+./configure $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT $CONFIGURE_FILE_OPT || {
+ echo " configure failed"
+ exit 1
+}
+
+echo "Now type 'make' to compile $package."
diff --git a/configure.ac b/configure.ac
index 6a3e6d0..2d24816 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,367 +1,367 @@
-AC_PREREQ(2.52)
-
-dnl please read gstreamer/docs/random/autotools before changing this file
-
-dnl initialize autoconf
-dnl releases only do -Wall, cvs and prerelease does -Werror too
-dnl use a three digit version number for releases, and four for cvs/prerelease
-AC_INIT(GStreamer OpenGL Plug-ins, 0.10.0.1,
- http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
- gst-plugins-gl)
-
-AG_GST_INIT
-
-dnl initialize automake
-AM_INIT_AUTOMAKE
-
-dnl define PACKAGE_VERSION_* variables
-AS_VERSION
-
-dnl check if this is a release version
-AS_NANO(GST_CVS="no", GST_CVS="yes")
-
-dnl can autoconf find the source ?
-AC_CONFIG_SRCDIR([gst-libs/gst/gl/gstgldisplay.c])
-
-dnl define the output header for config
-AM_CONFIG_HEADER([config.h])
-
-dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
-AM_MAINTAINER_MODE
-
-dnl sets host_* variables
-AC_CANONICAL_HOST
-
-dnl our libraries and install dirs use major.minor as a version
-GST_MAJORMINOR=$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR
-dnl we override it here if we need to for the release candidate of new series
-GST_MAJORMINOR=0.10
-AC_SUBST(GST_MAJORMINOR)
-
-dnl CURRENT, REVISION, AGE
-dnl - library source changed -> increment REVISION
-dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
-dnl - interfaces added -> increment AGE
-dnl - interfaces removed -> AGE = 0
-dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 0, 0, 0)
-
-dnl FIXME: this macro doesn't actually work;
-dnl the generated libtool script has no support for the listed tags.
-dnl So this needs to be fixed first if we want to use this
-dnl AS_LIBTOOL_TAGS
-
-AC_LIBTOOL_WIN32_DLL
-AM_PROG_LIBTOOL
-
-dnl *** required versions of GStreamer stuff ***
-GST_REQ=0.10.15.1
-GSTPB_REQ=0.10.15.1
-
-dnl *** autotools stuff ****
-
-dnl allow for different autotools
-AS_AUTOTOOLS_ALTERNATE
-
-dnl Add parameters for aclocal
-AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
-
-dnl set up gettext
-dnl the version check needs to stay here because autopoint greps for it
-AM_GNU_GETTEXT_VERSION([0.11.5])
-AM_GNU_GETTEXT([external])
-AG_GST_GETTEXT([gst-plugins-gl-$GST_MAJORMINOR])
-
-dnl *** check for arguments to configure ***
-
-AG_GST_ARG_DEBUG
-AG_GST_ARG_PROFILING
-AG_GST_ARG_VALGRIND
-AG_GST_ARG_GCOV
-
-AG_GST_ARG_EXAMPLES
-
-AG_GST_ARG_WITH_PKG_CONFIG_PATH
-AG_GST_ARG_WITH_PACKAGE_NAME
-AG_GST_ARG_WITH_PACKAGE_ORIGIN
-
-dnl *** checks for platform ***
-
-dnl * hardware/architecture *
-
-dnl common/m4/gst-arch.m4
-dnl check CPU type
-AG_GST_ARCH
-
-dnl check for large file support
-dnl affected plugins must include config.h
-AC_SYS_LARGEFILE
-
-dnl *** checks for programs ***
-
-dnl find a compiler
-AC_PROG_CC
-
-dnl check if the compiler supports '-c' and '-o' options
-AM_PROG_CC_C_O
-
-AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
-AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
-
-dnl check for documentation tools
-GTK_DOC_CHECK([1.3])
-AS_PATH_PYTHON([2.1])
-AG_GST_PLUGIN_DOCS([1.3],[2.1])
-
-dnl *** checks for libraries ***
-
-dnl For interactive UNIX (a Sun thing)
-dnl FIXME: this adds -lcposix to LIBS, but I doubt we use LIBS
-AC_ISC_POSIX
-
-dnl libm, for sin() etc.
-AC_CHECK_LIBM
-AC_SUBST(LIBM)
-
-dnl *** checks for header files ***
-
-dnl check if we have ANSI C header files
-AC_HEADER_STDC
-
-dnl *** checks for types/defines ***
-
-dnl *** checks for structures ***
-
-dnl *** checks for compiler characteristics ***
-
-dnl make sure we can use "inline" from C code
-AC_C_INLINE
-
-dnl *** checks for library functions ***
-
-dnl Check for a way to display the function name in debug output
-AG_GST_CHECK_FUNCTION
-
-dnl *** checks for dependency libraries ***
-
-dnl GLib is required
-AG_GST_GLIB_CHECK([2.6])
-
-dnl liboil is required
-PKG_CHECK_MODULES(LIBOIL, liboil-0.3 >= 0.3.8, HAVE_LIBOIL=yes, HAVE_LIBOIL=no)
-if test "x$HAVE_LIBOIL" != "xyes"
-then
- AC_ERROR([liboil-0.3.8 or later is required])
-fi
-
-dnl checks for gstreamer
-dnl uninstalled is selected preferentially -- see pkg-config(1)
-AG_GST_CHECK_GST($GST_MAJORMINOR, [$GST_REQ])
-AG_GST_CHECK_GST_BASE($GST_MAJORMINOR, [$GST_REQ])
-AG_GST_CHECK_GST_GDP($GST_MAJORMINOR, [$GST_REQ])
-AG_GST_CHECK_GST_CONTROLLER($GST_MAJORMINOR, [$GST_REQ])
-AG_GST_CHECK_GST_CHECK($GST_MAJORMINOR, [$GST_REQ], no)
-AG_GST_CHECK_GST_PLUGINS_BASE($GST_MAJORMINOR, [$GSTPB_REQ], no)
-AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
-
-dnl Check for documentation xrefs
-GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
-GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-$GST_MAJORMINOR`"
-GSTPB_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-plugins-base-$GST_MAJORMINOR`"
-AC_SUBST(GLIB_PREFIX)
-AC_SUBST(GST_PREFIX)
-AC_SUBST(GSTPB_PREFIX)
-
-dnl GTK is optional and used in examples
-HAVE_GTK=NO
-PKG_CHECK_MODULES(GTK2, gtk+-2.0 >= 2.2.0, HAVE_GTK_22=yes, HAVE_GTK_22=no)
-if test "x$HAVE_GTK_22" = "xyes"; then
- HAVE_GTK=yes
- GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0`
- AC_SUBST(GTK_VERSION)
- GTK_PREFIX=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
- AC_SUBST(GTK_BASE_DIR)
-else
- PKG_CHECK_MODULES(GTK2, gtk+-2.0, HAVE_GTK_20=yes, HAVE_GTK_20=no)
-fi
-if test "x$HAVE_GTK_20" = "xyes"; then
- HAVE_GTK=yes
-fi
-GTK_CFLAGS=$GTK2_CFLAGS
-GTK_LIBS=$GTK2_LIBS
-AC_SUBST(GTK_LIBS)
-AC_SUBST(GTK_CFLAGS)
-AC_SUBST(HAVE_GTK)
-AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
-
-dnl OpenGL is required
-translit(dnm, m, l) AM_CONDITIONAL(USE_OPENGL, true)
-AG_GST_CHECK_X
-save_CPPFLAGS="$CPPFLAGS"
-save_LIBS="$LIBS"
-CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-LIBS="$LIBS $X_LIBS"
-AG_GST_CHECK_FEATURE(OPENGL, [Open GL], glsink, [
- AG_GST_CHECK_LIBHEADER(GL, GL, glTexImage2D,, GL/gl.h, [
- HAVE_OPENGL="yes"
- GL_LIBS="-lGL"
- ], [
- HAVE_OPENGL="no"
- ])
- AC_SUBST(GL_LIBS)
-])
-CPPFLAGS="$save_CPPFLAGS"
-LIBS="$save_LIBS"
-
-dnl Eventually use pkgconfig check
-#AG_GST_CHECK_FEATURE(OPENGL, [Open GL], glsink, [
-# PKG_CHECK_MODULES(GL, gl >= 7.1.0, [
-# HAVE_GL="yes"
-# AC_SUBST(GL_CFLAGS)
-# AC_SUBST(GL_LIBS)
-# ],[
-# HAVE_GL=no
-# AC_MSG_RESULT(no)
-# ])
-#])
-
-dnl *** set variables based on configure arguments ***
-
-dnl set license and copyright notice
-GST_LICENSE="LGPL"
-AC_DEFINE_UNQUOTED(GST_LICENSE, "$GST_LICENSE", [GStreamer license])
-AC_SUBST(GST_LICENSE)
-
-dnl set location of plugin directory
-AG_GST_SET_PLUGINDIR
-
-dnl define an ERROR_CFLAGS Makefile variable
-AG_GST_SET_ERROR_CFLAGS($GST_CVS)
-
-dnl define correct level for debugging messages
-AG_GST_SET_LEVEL_DEFAULT($GST_CVS)
-
-dnl used in examples
-AG_GST_DEFAULT_ELEMENTS
-
-dnl *** plugins to includes ***
-
-AG_GST_CHECK_PLUGIN(gl)
-
-dnl *** sys plug-ins ***
-
-echo
-AC_MSG_NOTICE([Checking libraries for plugins in sys/])
-echo
-
-dnl *** ext plug-ins ***
-dnl keep this list sorted alphabetically !
-
-if test "x$BUILD_EXTERNAL" = "xyes"; then
-
-echo
-AC_MSG_NOTICE([Checking libraries for plugins in ext/])
-echo
-
-else
-
-dnl not building plugins with external dependencies,
-dnl but we still need to set the conditionals
-true
-
-fi dnl of EXT plugins
-
-dnl *** finalize CFLAGS, LDFLAGS, LIBS
-
-dnl Overview:
-dnl GST_OPTION_CFLAGS: common flags for profiling, debugging, errors, ...
-dnl GST_*: flags shared by built objects to link against GStreamer
-dnl GST_ALL_LDFLAGS: linker flags shared by all
-dnl GST_LIB_LDFLAGS: additional linker flags for all libaries
-dnl GST_LT_LDFLAGS: library versioning of our libraries
-dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
-
-dnl GST_OPTION_CFLAGS
-if test "x$USE_DEBUG" = xyes; then
- PROFILE_CFLAGS="-g"
-fi
-AC_SUBST(PROFILE_CFLAGS)
-
-if test "x$GST_CVS" = "xyes"; then
- DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
-else
- DEPRECATED_CFLAGS=""
-fi
-AC_SUBST(DEPRECATED_CFLAGS)
-
-dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
-GST_OPTION_CFLAGS="\$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
-AC_SUBST(GST_OPTION_CFLAGS)
-
-dnl our libraries need to be versioned correctly
-AC_SUBST(GST_LT_LDFLAGS)
-
-dnl GST_PLUGINS_GL_CFLAGS
-dnl prefer internal headers to already installed ones
-dnl also add builddir include for enumtypes and marshal
-GST_PLUGINS_GL_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
-AC_SUBST(GST_PLUGINS_GL_CFLAGS)
-
-dnl FIXME: do we want to rename to GST_ALL_* ?
-dnl add GST_OPTION_CFLAGS, but overridable
-GST_CFLAGS="$GST_CFLAGS \$(GST_OPTION_CFLAGS)"
-AC_SUBST(GST_CFLAGS)
-dnl add GCOV libs because libtool strips -fprofile-arcs -ftest-coverage
-GST_LIBS="$GST_LIBS \$(GCOV_LIBS)"
-AC_SUBST(GST_LIBS)
-
-dnl LDFLAGS really should only contain flags, not libs - they get added before
-dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
-GST_ALL_LDFLAGS="-no-undefined"
-AC_SUBST(GST_ALL_LDFLAGS)
-
-dnl GST_LIB_LDFLAGS
-dnl linker flags shared by all libraries
-dnl LDFLAGS modifier defining exported symbols from built libraries
-dnl (export _gst_foo but not __gst_foo)
-GST_LIB_LDFLAGS="-export-symbols-regex ^_?\(gst_\|Gst\|GST_\).*"
-AC_SUBST(GST_LIB_LDFLAGS)
-
-dnl this really should only contain flags, not libs - they get added before
-dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
-GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc\$\$' $GST_ALL_LDFLAGS"
-AC_SUBST(GST_PLUGIN_LDFLAGS)
-
-dnl *** output files ***
-
-AC_CONFIG_FILES(
-Makefile
-gst-plugins-gl.spec
-gst/Makefile
-gst/gl/Makefile
-sys/Makefile
-ext/Makefile
-gst-libs/Makefile
-gst-libs/gst/Makefile
-gst-libs/gst/gl/Makefile
-tools/Makefile
-win32/common/config.h
-pkgconfig/Makefile
-pkgconfig/gstreamer-gl.pc
-pkgconfig/gstreamer-gl-uninstalled.pc
-tests/Makefile
-tests/check/Makefile
-tests/examples/Makefile
-tests/icles/Makefile
-docs/Makefile
-docs/libs/Makefile
-docs/plugins/Makefile
-docs/version.entities
-po/Makefile.in
-common/Makefile
-common/m4/Makefile
-m4/Makefile
-)
-AC_OUTPUT
-
-AG_GST_OUTPUT_PLUGINS
+AC_PREREQ(2.52)
+
+dnl please read gstreamer/docs/random/autotools before changing this file
+
+dnl initialize autoconf
+dnl releases only do -Wall, cvs and prerelease does -Werror too
+dnl use a three digit version number for releases, and four for cvs/prerelease
+AC_INIT(GStreamer OpenGL Plug-ins, 0.10.0.1,
+ http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
+ gst-plugins-gl)
+
+AG_GST_INIT
+
+dnl initialize automake
+AM_INIT_AUTOMAKE
+
+dnl define PACKAGE_VERSION_* variables
+AS_VERSION
+
+dnl check if this is a release version
+AS_NANO(GST_CVS="no", GST_CVS="yes")
+
+dnl can autoconf find the source ?
+AC_CONFIG_SRCDIR([gst-libs/gst/gl/gstgldisplay.c])
+
+dnl define the output header for config
+AM_CONFIG_HEADER([config.h])
+
+dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
+AM_MAINTAINER_MODE
+
+dnl sets host_* variables
+AC_CANONICAL_HOST
+
+dnl our libraries and install dirs use major.minor as a version
+GST_MAJORMINOR=$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR
+dnl we override it here if we need to for the release candidate of new series
+GST_MAJORMINOR=0.10
+AC_SUBST(GST_MAJORMINOR)
+
+dnl CURRENT, REVISION, AGE
+dnl - library source changed -> increment REVISION
+dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
+dnl - interfaces added -> increment AGE
+dnl - interfaces removed -> AGE = 0
+dnl sets GST_LT_LDFLAGS
+AS_LIBTOOL(GST, 0, 0, 0)
+
+dnl FIXME: this macro doesn't actually work;
+dnl the generated libtool script has no support for the listed tags.
+dnl So this needs to be fixed first if we want to use this
+dnl AS_LIBTOOL_TAGS
+
+AC_LIBTOOL_WIN32_DLL
+AM_PROG_LIBTOOL
+
+dnl *** required versions of GStreamer stuff ***
+GST_REQ=0.10.15.1
+GSTPB_REQ=0.10.15.1
+
+dnl *** autotools stuff ****
+
+dnl allow for different autotools
+AS_AUTOTOOLS_ALTERNATE
+
+dnl Add parameters for aclocal
+AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
+
+dnl set up gettext
+dnl the version check needs to stay here because autopoint greps for it
+AM_GNU_GETTEXT_VERSION([0.11.5])
+AM_GNU_GETTEXT([external])
+AG_GST_GETTEXT([gst-plugins-gl-$GST_MAJORMINOR])
+
+dnl *** check for arguments to configure ***
+
+AG_GST_ARG_DEBUG
+AG_GST_ARG_PROFILING
+AG_GST_ARG_VALGRIND
+AG_GST_ARG_GCOV
+
+AG_GST_ARG_EXAMPLES
+
+AG_GST_ARG_WITH_PKG_CONFIG_PATH
+AG_GST_ARG_WITH_PACKAGE_NAME
+AG_GST_ARG_WITH_PACKAGE_ORIGIN
+
+dnl *** checks for platform ***
+
+dnl * hardware/architecture *
+
+dnl common/m4/gst-arch.m4
+dnl check CPU type
+AG_GST_ARCH
+
+dnl check for large file support
+dnl affected plugins must include config.h
+AC_SYS_LARGEFILE
+
+dnl *** checks for programs ***
+
+dnl find a compiler
+AC_PROG_CC
+
+dnl check if the compiler supports '-c' and '-o' options
+AM_PROG_CC_C_O
+
+AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
+AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
+
+dnl check for documentation tools
+GTK_DOC_CHECK([1.3])
+AS_PATH_PYTHON([2.1])
+AG_GST_PLUGIN_DOCS([1.3],[2.1])
+
+dnl *** checks for libraries ***
+
+dnl For interactive UNIX (a Sun thing)
+dnl FIXME: this adds -lcposix to LIBS, but I doubt we use LIBS
+AC_ISC_POSIX
+
+dnl libm, for sin() etc.
+AC_CHECK_LIBM
+AC_SUBST(LIBM)
+
+dnl *** checks for header files ***
+
+dnl check if we have ANSI C header files
+AC_HEADER_STDC
+
+dnl *** checks for types/defines ***
+
+dnl *** checks for structures ***
+
+dnl *** checks for compiler characteristics ***
+
+dnl make sure we can use "inline" from C code
+AC_C_INLINE
+
+dnl *** checks for library functions ***
+
+dnl Check for a way to display the function name in debug output
+AG_GST_CHECK_FUNCTION
+
+dnl *** checks for dependency libraries ***
+
+dnl GLib is required
+AG_GST_GLIB_CHECK([2.6])
+
+dnl liboil is required
+PKG_CHECK_MODULES(LIBOIL, liboil-0.3 >= 0.3.8, HAVE_LIBOIL=yes, HAVE_LIBOIL=no)
+if test "x$HAVE_LIBOIL" != "xyes"
+then
+ AC_ERROR([liboil-0.3.8 or later is required])
+fi
+
+dnl checks for gstreamer
+dnl uninstalled is selected preferentially -- see pkg-config(1)
+AG_GST_CHECK_GST($GST_MAJORMINOR, [$GST_REQ])
+AG_GST_CHECK_GST_BASE($GST_MAJORMINOR, [$GST_REQ])
+AG_GST_CHECK_GST_GDP($GST_MAJORMINOR, [$GST_REQ])
+AG_GST_CHECK_GST_CONTROLLER($GST_MAJORMINOR, [$GST_REQ])
+AG_GST_CHECK_GST_CHECK($GST_MAJORMINOR, [$GST_REQ], no)
+AG_GST_CHECK_GST_PLUGINS_BASE($GST_MAJORMINOR, [$GSTPB_REQ], no)
+AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
+
+dnl Check for documentation xrefs
+GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
+GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-$GST_MAJORMINOR`"
+GSTPB_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-plugins-base-$GST_MAJORMINOR`"
+AC_SUBST(GLIB_PREFIX)
+AC_SUBST(GST_PREFIX)
+AC_SUBST(GSTPB_PREFIX)
+
+dnl GTK is optional and used in examples
+HAVE_GTK=NO
+PKG_CHECK_MODULES(GTK2, gtk+-2.0 >= 2.2.0, HAVE_GTK_22=yes, HAVE_GTK_22=no)
+if test "x$HAVE_GTK_22" = "xyes"; then
+ HAVE_GTK=yes
+ GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0`
+ AC_SUBST(GTK_VERSION)
+ GTK_PREFIX=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
+ AC_SUBST(GTK_BASE_DIR)
+else
+ PKG_CHECK_MODULES(GTK2, gtk+-2.0, HAVE_GTK_20=yes, HAVE_GTK_20=no)
+fi
+if test "x$HAVE_GTK_20" = "xyes"; then
+ HAVE_GTK=yes
+fi
+GTK_CFLAGS=$GTK2_CFLAGS
+GTK_LIBS=$GTK2_LIBS
+AC_SUBST(GTK_LIBS)
+AC_SUBST(GTK_CFLAGS)
+AC_SUBST(HAVE_GTK)
+AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
+
+dnl OpenGL is required
+translit(dnm, m, l) AM_CONDITIONAL(USE_OPENGL, true)
+AG_GST_CHECK_X
+save_CPPFLAGS="$CPPFLAGS"
+save_LIBS="$LIBS"
+CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+LIBS="$LIBS $X_LIBS"
+AG_GST_CHECK_FEATURE(OPENGL, [Open GL], glsink, [
+ AG_GST_CHECK_LIBHEADER(GL, GL, glTexImage2D,, GL/gl.h, [
+ HAVE_OPENGL="yes"
+ GL_LIBS="-lGL"
+ ], [
+ HAVE_OPENGL="no"
+ ])
+ AC_SUBST(GL_LIBS)
+])
+CPPFLAGS="$save_CPPFLAGS"
+LIBS="$save_LIBS"
+
+dnl Eventually use pkgconfig check
+#AG_GST_CHECK_FEATURE(OPENGL, [Open GL], glsink, [
+# PKG_CHECK_MODULES(GL, gl >= 7.1.0, [
+# HAVE_GL="yes"
+# AC_SUBST(GL_CFLAGS)
+# AC_SUBST(GL_LIBS)
+# ],[
+# HAVE_GL=no
+# AC_MSG_RESULT(no)
+# ])
+#])
+
+dnl *** set variables based on configure arguments ***
+
+dnl set license and copyright notice
+GST_LICENSE="LGPL"
+AC_DEFINE_UNQUOTED(GST_LICENSE, "$GST_LICENSE", [GStreamer license])
+AC_SUBST(GST_LICENSE)
+
+dnl set location of plugin directory
+AG_GST_SET_PLUGINDIR
+
+dnl define an ERROR_CFLAGS Makefile variable
+AG_GST_SET_ERROR_CFLAGS($GST_CVS)
+
+dnl define correct level for debugging messages
+AG_GST_SET_LEVEL_DEFAULT($GST_CVS)
+
+dnl used in examples
+AG_GST_DEFAULT_ELEMENTS
+
+dnl *** plugins to includes ***
+
+AG_GST_CHECK_PLUGIN(gl)
+
+dnl *** sys plug-ins ***
+
+echo
+AC_MSG_NOTICE([Checking libraries for plugins in sys/])
+echo
+
+dnl *** ext plug-ins ***
+dnl keep this list sorted alphabetically !
+
+if test "x$BUILD_EXTERNAL" = "xyes"; then
+
+echo
+AC_MSG_NOTICE([Checking libraries for plugins in ext/])
+echo
+
+else
+
+dnl not building plugins with external dependencies,
+dnl but we still need to set the conditionals
+true
+
+fi dnl of EXT plugins
+
+dnl *** finalize CFLAGS, LDFLAGS, LIBS
+
+dnl Overview:
+dnl GST_OPTION_CFLAGS: common flags for profiling, debugging, errors, ...
+dnl GST_*: flags shared by built objects to link against GStreamer
+dnl GST_ALL_LDFLAGS: linker flags shared by all
+dnl GST_LIB_LDFLAGS: additional linker flags for all libaries
+dnl GST_LT_LDFLAGS: library versioning of our libraries
+dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
+
+dnl GST_OPTION_CFLAGS
+if test "x$USE_DEBUG" = xyes; then
+ PROFILE_CFLAGS="-g"
+fi
+AC_SUBST(PROFILE_CFLAGS)
+
+if test "x$GST_CVS" = "xyes"; then
+ DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
+else
+ DEPRECATED_CFLAGS=""
+fi
+AC_SUBST(DEPRECATED_CFLAGS)
+
+dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
+GST_OPTION_CFLAGS="\$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
+AC_SUBST(GST_OPTION_CFLAGS)
+
+dnl our libraries need to be versioned correctly
+AC_SUBST(GST_LT_LDFLAGS)
+
+dnl GST_PLUGINS_GL_CFLAGS
+dnl prefer internal headers to already installed ones
+dnl also add builddir include for enumtypes and marshal
+GST_PLUGINS_GL_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
+AC_SUBST(GST_PLUGINS_GL_CFLAGS)
+
+dnl FIXME: do we want to rename to GST_ALL_* ?
+dnl add GST_OPTION_CFLAGS, but overridable
+GST_CFLAGS="$GST_CFLAGS \$(GST_OPTION_CFLAGS)"
+AC_SUBST(GST_CFLAGS)
+dnl add GCOV libs because libtool strips -fprofile-arcs -ftest-coverage
+GST_LIBS="$GST_LIBS \$(GCOV_LIBS)"
+AC_SUBST(GST_LIBS)
+
+dnl LDFLAGS really should only contain flags, not libs - they get added before
+dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
+GST_ALL_LDFLAGS="-no-undefined"
+AC_SUBST(GST_ALL_LDFLAGS)
+
+dnl GST_LIB_LDFLAGS
+dnl linker flags shared by all libraries
+dnl LDFLAGS modifier defining exported symbols from built libraries
+dnl (export _gst_foo but not __gst_foo)
+GST_LIB_LDFLAGS="-export-symbols-regex ^_?\(gst_\|Gst\|GST_\).*"
+AC_SUBST(GST_LIB_LDFLAGS)
+
+dnl this really should only contain flags, not libs - they get added before
+dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
+GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc\$\$' $GST_ALL_LDFLAGS"
+AC_SUBST(GST_PLUGIN_LDFLAGS)
+
+dnl *** output files ***
+
+AC_CONFIG_FILES(
+Makefile
+gst-plugins-gl.spec
+gst/Makefile
+gst/gl/Makefile
+sys/Makefile
+ext/Makefile
+gst-libs/Makefile
+gst-libs/gst/Makefile
+gst-libs/gst/gl/Makefile
+tools/Makefile
+win32/common/config.h
+pkgconfig/Makefile
+pkgconfig/gstreamer-gl.pc
+pkgconfig/gstreamer-gl-uninstalled.pc
+tests/Makefile
+tests/check/Makefile
+tests/examples/Makefile
+tests/icles/Makefile
+docs/Makefile
+docs/libs/Makefile
+docs/plugins/Makefile
+docs/version.entities
+po/Makefile.in
+common/Makefile
+common/m4/Makefile
+m4/Makefile
+)
+AC_OUTPUT
+
+AG_GST_OUTPUT_PLUGINS
diff --git a/docs/.cvsignore b/docs/.cvsignore
deleted file mode 100644
index e5a7abe..0000000
--- a/docs/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-version.entities
diff --git a/docs/Makefile.am b/docs/Makefile.am
index 6814772..5e80253 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -1 +1 @@
-SUBDIRS = libs plugins
+SUBDIRS = libs plugins
diff --git a/docs/version.entities.in b/docs/version.entities.in
index 79a6898..3e67cfd 100644
--- a/docs/version.entities.in
+++ b/docs/version.entities.in
@@ -1,2 +1,2 @@
-<!ENTITY GST_MAJORMINOR "@GST_MAJORMINOR@">
-<!ENTITY GST_VERSION "@VERSION@">
+<!ENTITY GST_MAJORMINOR "@GST_MAJORMINOR@">
+<!ENTITY GST_VERSION "@VERSION@">
diff --git a/gst-libs/Makefile.am b/gst-libs/Makefile.am
index 062cb55..9f4dd99 100644
--- a/gst-libs/Makefile.am
+++ b/gst-libs/Makefile.am
@@ -1 +1 @@
-SUBDIRS = gst
+SUBDIRS = gst
diff --git a/gst-libs/gst/Makefile.am b/gst-libs/gst/Makefile.am
index 6efb9e0..49fdb74 100644
--- a/gst-libs/gst/Makefile.am
+++ b/gst-libs/gst/Makefile.am
@@ -1,7 +1,7 @@
-
-SUBDIRS = gl
-
-noinst_HEADERS = \
- gettext.h \
- gst-i18n-plugin.h
-
+
+SUBDIRS = gl
+
+noinst_HEADERS = \
+ gettext.h \
+ gst-i18n-plugin.h
+
diff --git a/gst-libs/gst/gettext.h b/gst-libs/gst/gettext.h
index 8b262f4..3052af4 100644
--- a/gst-libs/gst/gettext.h
+++ b/gst-libs/gst/gettext.h
@@ -1,69 +1,69 @@
-/* Convenience header for conditional use of GNU <libintl.h>.
- Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library 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 _LIBGETTEXT_H
-#define _LIBGETTEXT_H 1
-
-/* NLS can be disabled through the configure --disable-nls option. */
-#if ENABLE_NLS
-
-/* Get declarations of GNU message catalog functions. */
-# include <libintl.h>
-
-#else
-
-/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
- chokes if dcgettext is defined as a macro. So include it now, to make
- later inclusions of <locale.h> a NOP. We don't include <libintl.h>
- as well because people using "gettext.h" will not include <libintl.h>,
- and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
- is OK. */
-#if defined(__sun)
-# include <locale.h>
-#endif
-
-/* Disabled NLS.
- The casts to 'const char *' serve the purpose of producing warnings
- for invalid uses of the value returned from these functions.
- On pre-ANSI systems without 'const', the config.h file is supposed to
- contain "#define const". */
-# define gettext(Msgid) ((const char *) (Msgid))
-# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
-# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
-# define ngettext(Msgid1, Msgid2, N) \
- ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
-# define dngettext(Domainname, Msgid1, Msgid2, N) \
- ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
-# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
- ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
-# define textdomain(Domainname) ((const char *) (Domainname))
-# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
-# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
-
-#endif
-
-/* A pseudo function call that serves as a marker for the automated
- extraction of messages, but does not call gettext(). The run-time
- translation is done at a different place in the code.
- The argument, String, should be a literal string. Concatenated strings
- and other string expressions won't work.
- The macro's expansion is not parenthesized, so that it is suitable as
- initializer for static 'char[]' or 'const char[]' variables. */
-#define gettext_noop(String) String
-
-#endif /* _LIBGETTEXT_H */
+/* Convenience header for conditional use of GNU <libintl.h>.
+ Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library 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 _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option. */
+#if ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions. */
+# include <libintl.h>
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+ chokes if dcgettext is defined as a macro. So include it now, to make
+ later inclusions of <locale.h> a NOP. We don't include <libintl.h>
+ as well because people using "gettext.h" will not include <libintl.h>,
+ and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+ is OK. */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Disabled NLS.
+ The casts to 'const char *' serve the purpose of producing warnings
+ for invalid uses of the value returned from these functions.
+ On pre-ANSI systems without 'const', the config.h file is supposed to
+ contain "#define const". */
+# define gettext(Msgid) ((const char *) (Msgid))
+# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
+# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
+# define ngettext(Msgid1, Msgid2, N) \
+ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define textdomain(Domainname) ((const char *) (Domainname))
+# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
+# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
+
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+ extraction of messages, but does not call gettext(). The run-time
+ translation is done at a different place in the code.
+ The argument, String, should be a literal string. Concatenated strings
+ and other string expressions won't work.
+ The macro's expansion is not parenthesized, so that it is suitable as
+ initializer for static 'char[]' or 'const char[]' variables. */
+#define gettext_noop(String) String
+
+#endif /* _LIBGETTEXT_H */
diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am
index 656b8b5..32d5b2c 100644
--- a/gst-libs/gst/gl/Makefile.am
+++ b/gst-libs/gst/gl/Makefile.am
@@ -1,27 +1,23 @@
-
-lib_LTLIBRARIES = libgstgl-@GST_MAJORMINOR@.la
-
-libgstgl_@GST_MAJORMINOR@_la_SOURCES = \
- glextensions.c \
- gstglbuffer.c \
- gstgldisplay.c \
- gstglfilter.c
-
-libgstgl_@GST_MAJORMINOR@includedir = $(includedir)/gstreamer-@GST_MAJORMINOR@/gst/gl
-libgstgl_@GST_MAJORMINOR@include_HEADERS = \
- glextensions.h \
- gstglbuffer.h \
- gstgldisplay.h \
- gstglfilter.h
-
-libgstgl_@GST_MAJORMINOR@_la_LIBADD = \
- $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_MAJORMINOR) \
- $(GST_BASE_LIBS) $(GST_LIBS) \
- $(X_LIBS) $(GL_LIBS)
-
-libgstgl_@GST_MAJORMINOR@_la_CFLAGS = \
- $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
-
-libgstgl_@GST_MAJORMINOR@_la_LDFLAGS = \
- $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
-
+
+lib_LTLIBRARIES = libgstgl-@GST_MAJORMINOR@.la
+
+libgstgl_@GST_MAJORMINOR@_la_SOURCES = \
+ gstgldisplay.c \
+ gstglbuffer.c
+
+libgstgl_@GST_MAJORMINOR@includedir = $(includedir)/gstreamer-@GST_MAJORMINOR@/gst/gl
+libgstgl_@GST_MAJORMINOR@include_HEADERS = \
+ gstgldisplay.h \
+ gstglbuffer.h
+
+libgstgl_@GST_MAJORMINOR@_la_LIBADD = \
+ $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_MAJORMINOR) \
+ $(GST_BASE_LIBS) $(GST_LIBS) \
+ $(X_LIBS) $(GL_LIBS)
+
+libgstgl_@GST_MAJORMINOR@_la_CFLAGS = \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+
+libgstgl_@GST_MAJORMINOR@_la_LDFLAGS = \
+ $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
+
diff --git a/gst-libs/gst/gl/glextensions.c b/gst-libs/gst/gl/glextensions.c
deleted file mode 100644
index c5bde8a..0000000
--- a/gst-libs/gst/gl/glextensions.c
+++ /dev/null
@@ -1,190 +0,0 @@
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <GL/glx.h>
-#include <GL/glxext.h>
-#include <string.h>
-#include <glib.h>
-
-#include "glextensions.h"
-
-int
-gl_have_extension (const char *name)
-{
- const char *s;
-
- s = (const char *) glGetString (GL_EXTENSIONS);
- if (s == NULL)
- return FALSE;
-
- if (strstr (s, name))
- return TRUE;
- return FALSE;
-}
-
-extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
-
-#define DEFINE_FUNC_RET(name,return_type,prototype,args) \
-return_type name prototype \
-{ \
- static return_type (*func) prototype; \
- if (func == NULL) { \
- func = (void *) glXGetProcAddressARB ((unsigned char *) #name); \
- } \
- return func args; \
-}
-
-#define DEFINE_FUNC(name,prototype,args) \
-void name prototype \
-{ \
- static void (*func) prototype; \
- if (func == NULL) { \
- func = (void *) glXGetProcAddressARB ((unsigned char *) #name); \
- } \
- func args; \
-}
-
-DEFINE_FUNC_RET (glCreateShaderObjectARB, GLhandleARB,
- (GLenum shaderType), (shaderType));
-#if 0
-typedef GLhandleARB type_glCreateShaderObjectARB (GLenum shaderType);
-
-GLhandleARB
-glCreateShaderObjectARB (GLenum shaderType)
-{
- type_glCreateShaderObjectARB *func;
-
- if (func == NULL) {
- func = (type_glCreateShaderObjectARB *)
- glXGetProcAddress ((unsigned char *) "glCreateShaderObjectARB");
- }
- return (*func) (shaderType);
-}
-#endif
-
-DEFINE_FUNC (glShaderSourceARB,
- (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string,
- const GLint * length), (shaderObj, count, string, length));
-
-DEFINE_FUNC (glUniform2fARB,
- (GLint location, GLfloat val1, GLfloat val2), (location, val1, val2));
-
-DEFINE_FUNC_RET (glGetUniformLocationARB, GLint,
- (GLhandleARB programObj, const GLcharARB * name), (programObj, name));
-
-DEFINE_FUNC (glUniform1iARB, (GLint location, GLint val), (location, val));
-
-DEFINE_FUNC (glGetObjectParameterivARB, (GLhandleARB object, GLenum pname,
- GLint * params), (object, pname, params));
-
-DEFINE_FUNC (glCompileShaderARB, (GLhandleARB shader), (shader));
-
-DEFINE_FUNC (glGetInfoLogARB, (GLhandleARB object, GLsizei maxLength,
- GLsizei * length, GLcharARB * infoLog), (object, maxLength, length,
- infoLog));
-
-DEFINE_FUNC_RET (glCreateProgramObjectARB, GLhandleARB, (void), ());
-
-DEFINE_FUNC (glAttachObjectARB, (GLhandleARB program, GLhandleARB shader),
- (program, shader));
-
-DEFINE_FUNC (glLinkProgramARB, (GLhandleARB program), (program));
-
-DEFINE_FUNC (glUseProgramObjectARB, (GLhandleARB program), (program));
-
-DEFINE_FUNC (glPixelDataRangeNV, (GLenum target, GLsizei length, void *pointer),
- (target, length, pointer));
-
-DEFINE_FUNC_RET (glXGetSyncValuesOML, Bool,
- (Display * display, GLXDrawable drawable, int64_t * ust, int64_t * msc,
- int64_t * sbc), (display, drawable, ust, msc, sbc));
-
-DEFINE_FUNC_RET (glXGetMscRateOML, Bool,
- (Display * display, GLXDrawable drawable, int32_t * numerator,
- int32_t * denominator), (display, drawable, numerator, denominator));
-
-DEFINE_FUNC_RET (glXSwapBuffersMscOML, int64_t,
- (Display * display, GLXDrawable drawable, int64_t target_msc,
- int64_t divisor, int64_t remainder), (display, drawable, target_msc,
- divisor, remainder));
-
-DEFINE_FUNC_RET (glXWaitForMscOML, Bool,
- (Display * display, GLXDrawable drawable, int64_t target_msc,
- int64_t divisor, int64_t remainder, int64_t * ust, int64_t * msc,
- int64_t * sbc), (display, drawable, target_msc, divisor, remainder, ust,
- msc, sbc));
-
-DEFINE_FUNC_RET (glXWaitForSbcOML, Bool,
- (Display * display, GLXDrawable drawable, int64_t target_sbc, int64_t * ust,
- int64_t * msc, int64_t * sbc), (display, drawable, target_sbc, ust, msc,
- sbc));
-
-DEFINE_FUNC_RET (glXSwapIntervalSGI, int, (int interval), (interval));
-
-DEFINE_FUNC_RET (glXSwapIntervalMESA, int, (unsigned int interval), (interval));
-
-#if 0
-DEFINE_FUNC (glBindFramebufferEXT, (int target, uint framebuffer),
- (target, framebuffer));
-
-DEFINE_FUNC (glDeleteRenderbuffersEXT, (int n, unsigned int *renderbuffers),
- (n, renderbuffers));
-DEFINE_FUNC (glGenRenderbuffersEXT, (int n, unsigned int *renderbuffers),
- (n, renderbuffers));
-DEFINE_FUNC (glRenderbufferStorageEXT, (int target, int internalformat,
- int width, int height), (target, internalformat, width, height));
-DEFINE_FUNC (glBindRenderbufferEXT, (int target, unsigned int renderbuffer),
- (target, renderbuffer));
-DEFINE_FUNC (glFramebufferRenderbufferEXT,
- (int target, int attachment, int renderbuffertarget,
- unsigned int renderbuffer), (target, attachment, renderbuffertarget,
- renderbuffer));
-#endif
-
-/* EXT_framebuffer_object */
-DEFINE_FUNC_RET (glIsRenderbufferEXT, Bool,
- (GLuint renderbuffer), (renderbuffer));
-DEFINE_FUNC (glBindRenderbufferEXT,
- (GLenum target, GLuint renderbuffer), (target, renderbuffer));
-DEFINE_FUNC (glDeleteRenderbuffersEXT,
- (GLsizei n, GLuint * renderbuffers), (n, renderbuffers));
-DEFINE_FUNC (glGenRenderbuffersEXT,
- (GLsizei n, GLuint * renderbuffers), (n, renderbuffers));
-DEFINE_FUNC (glRenderbufferStorageEXT,
- (GLenum target, GLenum internalformat, GLsizei width, GLsizei height),
- (target, internalformat, width, height));
-DEFINE_FUNC (glGetRenderbufferParameterivEXT,
- (GLenum target, GLenum pname, GLint * params), (target, pname, params));
-DEFINE_FUNC_RET (glIsFramebufferEXT, Bool, (GLuint framebuffer), (framebuffer));
-DEFINE_FUNC (glBindFramebufferEXT,
- (GLenum target, GLuint framebuffer), (target, framebuffer));
-DEFINE_FUNC (glDeleteFramebuffersEXT,
- (GLsizei n, GLuint * framebuffers), (n, framebuffers));
-DEFINE_FUNC (glGenFramebuffersEXT,
- (GLsizei n, GLuint * framebuffers), (n, framebuffers));
-DEFINE_FUNC_RET (glCheckFramebufferStatusEXT, GLenum,
- (GLenum target), (target));
-DEFINE_FUNC (glFramebufferTexture1DEXT,
- (GLenum target, GLenum attachment, GLenum textarget, GLuint texture,
- GLint level), (target, attachment, textarget, texture, level));
-DEFINE_FUNC (glFramebufferTexture2DEXT, (GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture, GLint level), (target, attachment,
- textarget, texture, level));
-DEFINE_FUNC (glFramebufferTexture3DEXT, (GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture, GLint level, GLint zoffset), (target,
- attachment, textarget, texture, level, zoffset));
-DEFINE_FUNC (glFramebufferRenderbufferEXT, (GLenum target, GLenum attachment,
- GLenum renderbuffertarget, GLuint renderbuffer), (target, attachment,
- renderbuffertarget, renderbuffer));
-DEFINE_FUNC (glGetFramebufferAttachmentParameterivEXT, (GLenum target,
- GLenum pname, GLint * params), (target, pname, params));
-DEFINE_FUNC (glGenerateMipmapEXT, (GLenum target), (target));
-
-DEFINE_FUNC (glWindowPos2iARB, (GLint x, GLint y), (x, y));
-
-DEFINE_FUNC (glGenProgramsARB, (GLsizei a, GLuint * b), (a, b));
-DEFINE_FUNC (glBindProgramARB, (GLenum a, GLuint b), (a, b));
-DEFINE_FUNC (glProgramStringARB,
- (GLenum a, GLenum b, GLsizei c, const GLvoid * d), (a, b, c, d));
diff --git a/gst-libs/gst/gl/glextensions.h b/gst-libs/gst/gl/glextensions.h
deleted file mode 100644
index 8ac880f..0000000
--- a/gst-libs/gst/gl/glextensions.h
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifndef __GST_GLEXTENSIONS_H__
-#define __GST_GLEXTENSIONS_H__
-
-#include <GL/gl.h>
-//#include <glib.h>
-
-int gl_have_extension (const char *name);
-
-GLhandleARB glCreateShaderObjectARB (GLenum shaderType);
-void glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length);
-void glUniform2fARB (GLint location, GLfloat val1, GLfloat val2);
-GLint glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name);
-void glUniform1iARB (GLint location, GLint val);
-void glCompileShaderARB (GLhandleARB shader);
-void glGetObjectParameterivARB (GLhandleARB object, GLenum pname, GLint *params);
-void glGetInfoLogARB (GLhandleARB object, GLsizei maxLength, GLsizei *length,
- GLcharARB *infoLog);
-GLhandleARB glCreateProgramObjectARB (void);
-void glAttachObjectARB (GLhandleARB program, GLhandleARB shader);
-void glLinkProgramARB (GLhandleARB program);
-void glUseProgramObjectARB (GLhandleARB program);
-void glPixelDataRangeNV(GLenum target, GLsizei length, void *pointer);
-void glActiveTexture(GLenum target);
-Bool glXGetSyncValuesOML (Display *, GLXDrawable, int64_t *, int64_t *, int64_t *);
-Bool glXGetMscRateOML (Display *, GLXDrawable, int32_t *, int32_t *);
-int64_t glXSwapBuffersMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t);
-Bool glXWaitForMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t, int64_t *, int64_t *, int64_t *);
-Bool glXWaitForSbcOML (Display *, GLXDrawable, int64_t, int64_t *, int64_t *, int64_t *);
-int glXSwapIntervalSGI (int);
-int glXSwapIntervalMESA (unsigned int);
-
-/* EXT_framebuffer_object */
-Bool glIsRenderbufferEXT (GLuint renderbuffer);
-void glBindRenderbufferEXT (GLenum target, GLuint renderbuffer);
-void glDeleteRenderbuffersEXT (GLsizei n, GLuint *renderbuffers);
-void glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers);
-void glRenderbufferStorageEXT (GLenum target, GLenum internalformat,
- GLsizei width, GLsizei height);
-void glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params);
-Bool glIsFramebufferEXT (GLuint framebuffer);
-void glBindFramebufferEXT (GLenum target, GLuint framebuffer);
-void glDeleteFramebuffersEXT (GLsizei n, GLuint *framebuffers);
-void glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers);
-GLenum glCheckFramebufferStatusEXT (GLenum target);
-void glFramebufferTexture1DEXT (GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture, GLint level);
-void glFramebufferTexture2DEXT (GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture, GLint level);
-void glFramebufferTexture3DEXT (GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-void glFramebufferRenderbufferEXT (GLenum target, GLenum attachment,
- GLenum renderbuffertarget, GLuint renderbuffer);
-void glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum pname,
- GLint *params);
-void glGenerateMipmapEXT (GLenum target);
-
-void glWindowPos2iARB (GLint x, GLint y);
-
-void glGenProgramsARB (GLsizei, GLuint *);
-void glBindProgramARB (GLenum, GLuint);
-void glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *);
-
-#endif
-
diff --git a/gst-libs/gst/gl/gstglbuffer.c b/gst-libs/gst/gl/gstglbuffer.c
deleted file mode 100644
index b046823..0000000
--- a/gst-libs/gst/gl/gstglbuffer.c
+++ /dev/null
@@ -1,454 +0,0 @@
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gstglbuffer.h>
-#include <gstgldisplay.h>
-#include <GL/glext.h>
-#include <unistd.h>
-#include "glextensions.h"
-
-#include <string.h>
-
-static GObjectClass *gst_gl_buffer_parent_class;
-
-static void
-gst_gl_buffer_finalize (GstGLBuffer * buffer)
-{
- gst_gl_display_lock (buffer->display);
-
- glDeleteTextures (1, &buffer->texture);
- if (buffer->texture_u) {
- glDeleteTextures (1, &buffer->texture_u);
- }
- if (buffer->texture_v) {
- glDeleteTextures (1, &buffer->texture_v);
- }
-
- gst_gl_display_unlock (buffer->display);
- g_object_unref (buffer->display);
-
- GST_MINI_OBJECT_CLASS (gst_gl_buffer_parent_class)->
- finalize (GST_MINI_OBJECT (buffer));
-}
-
-static void
-gst_gl_buffer_init (GstGLBuffer * buffer, gpointer g_class)
-{
-
-}
-
-static void
-gst_gl_buffer_class_init (gpointer g_class, gpointer class_data)
-{
- GstMiniObjectClass *mini_object_class = GST_MINI_OBJECT_CLASS (g_class);
-
- gst_gl_buffer_parent_class = g_type_class_peek_parent (g_class);
-
- mini_object_class->finalize = (GstMiniObjectFinalizeFunction)
- gst_gl_buffer_finalize;
-}
-
-
-GType
-gst_gl_buffer_get_type (void)
-{
- static GType _gst_gl_buffer_type;
-
- if (G_UNLIKELY (_gst_gl_buffer_type == 0)) {
- static const GTypeInfo info = {
- sizeof (GstBufferClass),
- NULL,
- NULL,
- gst_gl_buffer_class_init,
- NULL,
- NULL,
- sizeof (GstGLBuffer),
- 0,
- (GInstanceInitFunc) gst_gl_buffer_init,
- NULL
- };
- _gst_gl_buffer_type = g_type_register_static (GST_TYPE_BUFFER,
- "GstGLBuffer", &info, 0);
- }
- return _gst_gl_buffer_type;
-}
-
-
-GstGLBuffer *
-gst_gl_buffer_new (GstGLDisplay * display, int width, int height)
-{
- g_return_val_if_fail (display != NULL, NULL);
- g_return_val_if_fail (width > 0, NULL);
- g_return_val_if_fail (height > 0, NULL);
-
- return gst_gl_buffer_new_with_format (display, GST_GL_BUFFER_FORMAT_RGBA,
- width, height);
-}
-
-GstGLBuffer *
-gst_gl_buffer_new_with_format (GstGLDisplay * display,
- GstGLBufferFormat format, int width, int height)
-{
- GstGLBuffer *buffer;
-
- g_return_val_if_fail (format != GST_GL_BUFFER_FORMAT_UNKNOWN, NULL);
- g_return_val_if_fail (display != NULL, NULL);
- g_return_val_if_fail (width > 0, NULL);
- g_return_val_if_fail (height > 0, NULL);
-
- buffer = (GstGLBuffer *) gst_mini_object_new (GST_TYPE_GL_BUFFER);
-
- buffer->display = g_object_ref (display);
- buffer->width = width;
- buffer->height = height;
- buffer->format = format;
- GST_BUFFER_SIZE (buffer) = gst_gl_buffer_format_get_size (format, width,
- height);
-
- gst_gl_display_lock (buffer->display);
- glGenTextures (1, &buffer->texture);
- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, buffer->texture);
- switch (format) {
- case GST_GL_BUFFER_FORMAT_RGBA:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA,
- buffer->width, buffer->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- break;
- case GST_GL_BUFFER_FORMAT_RGB:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGB,
- buffer->width, buffer->height, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
- break;
- case GST_GL_BUFFER_FORMAT_YUYV:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_YCBCR_MESA,
- buffer->width, buffer->height,
- 0, GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_REV_MESA, NULL);
- break;
- case GST_GL_BUFFER_FORMAT_PLANAR444:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
- buffer->width, buffer->height,
- 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
-
- glGenTextures (1, &buffer->texture_u);
- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, buffer->texture_u);
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
- buffer->width, buffer->height,
- 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
-
- glGenTextures (1, &buffer->texture_v);
- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, buffer->texture_v);
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
- buffer->width, buffer->height,
- 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
- break;
- case GST_GL_BUFFER_FORMAT_PLANAR422:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
- buffer->width, buffer->height,
- 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
-
- glGenTextures (1, &buffer->texture_u);
- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, buffer->texture_u);
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
- GST_ROUND_UP_2 (buffer->width) / 2, buffer->height,
- 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
-
- glGenTextures (1, &buffer->texture_v);
- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, buffer->texture_v);
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
- GST_ROUND_UP_2 (buffer->width) / 2, buffer->height,
- 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
- break;
- case GST_GL_BUFFER_FORMAT_PLANAR420:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
- buffer->width, buffer->height,
- 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
-
- glGenTextures (1, &buffer->texture_u);
- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, buffer->texture_u);
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
- GST_ROUND_UP_2 (buffer->width) / 2,
- GST_ROUND_UP_2 (buffer->height) / 2,
- 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
-
- glGenTextures (1, &buffer->texture_v);
- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, buffer->texture_v);
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
- GST_ROUND_UP_2 (buffer->width) / 2,
- GST_ROUND_UP_2 (buffer->height) / 2,
- 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
- break;
- default:
- g_warning ("GL buffer format not handled");
- }
-
- gst_gl_display_unlock (buffer->display);
-
- return buffer;
-}
-
-GstGLBuffer *
-gst_gl_buffer_new_from_video_format (GstGLDisplay * display,
- GstVideoFormat video_format, int width, int height)
-{
- GstGLBuffer *buffer;
-
- g_return_val_if_fail (width > 0, NULL);
- g_return_val_if_fail (height > 0, NULL);
-
- buffer = gst_gl_buffer_new_with_format (display,
- gst_gl_buffer_format_from_video_format (video_format), width, height);
-
- switch (video_format) {
- case GST_VIDEO_FORMAT_RGBx:
- case GST_VIDEO_FORMAT_BGRx:
- case GST_VIDEO_FORMAT_xRGB:
- case GST_VIDEO_FORMAT_xBGR:
- buffer->is_yuv = FALSE;
- break;
- case GST_VIDEO_FORMAT_YUY2:
- case GST_VIDEO_FORMAT_UYVY:
- /* counterintuitive: when you use a GL_YCBCR_MESA texture, the
- * colorspace is automatically converted, so it's referred to
- * as RGB */
- buffer->is_yuv = FALSE;
- break;
- case GST_VIDEO_FORMAT_AYUV:
- case GST_VIDEO_FORMAT_I420:
- case GST_VIDEO_FORMAT_YV12:
- buffer->is_yuv = TRUE;
- break;
- default:
- g_assert_not_reached ();
- }
-
- return buffer;
-}
-
-void
-gst_gl_buffer_upload (GstGLBuffer * buffer, GstVideoFormat video_format,
- void *data)
-{
- int width = buffer->width;
- int height = buffer->height;
-
- GST_DEBUG ("uploading %p %dx%d", data, width, height);
-
- g_return_if_fail (buffer->format ==
- gst_gl_buffer_format_from_video_format (video_format));
-
- gst_gl_display_lock (buffer->display);
- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, buffer->texture);
-
- switch (video_format) {
- case GST_VIDEO_FORMAT_RGBx:
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_RGBA, GL_UNSIGNED_BYTE, data);
- break;
- case GST_VIDEO_FORMAT_BGRx:
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_BGRA, GL_UNSIGNED_BYTE, data);
- break;
- case GST_VIDEO_FORMAT_AYUV:
- case GST_VIDEO_FORMAT_xRGB:
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, data);
- break;
- case GST_VIDEO_FORMAT_xBGR:
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, data);
- break;
- case GST_VIDEO_FORMAT_YUY2:
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_REV_MESA, data);
- break;
- case GST_VIDEO_FORMAT_UYVY:
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, data);
- break;
- case GST_VIDEO_FORMAT_I420:
- case GST_VIDEO_FORMAT_YV12:
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_LUMINANCE, GL_UNSIGNED_BYTE, data);
-
- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, buffer->texture_u);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0,
- GST_ROUND_UP_2 (buffer->width) / 2,
- GST_ROUND_UP_2 (buffer->height) / 2,
- GL_LUMINANCE, GL_UNSIGNED_BYTE,
- (guint8 *) data +
- gst_video_format_get_component_offset (video_format, 1, width,
- height));
-
- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, buffer->texture_v);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0,
- GST_ROUND_UP_2 (buffer->width) / 2,
- GST_ROUND_UP_2 (buffer->height) / 2,
- GL_LUMINANCE, GL_UNSIGNED_BYTE,
- (guint8 *) data +
- gst_video_format_get_component_offset (video_format, 2, width,
- height));
- break;
- default:
- g_assert_not_reached ();
- }
-
- gst_gl_display_unlock (buffer->display);
-}
-
-
-void
-gst_gl_buffer_download (GstGLBuffer * buffer, GstVideoFormat video_format,
- void *data)
-{
- GLuint fbo;
-
- g_return_if_fail (buffer->format ==
- gst_gl_buffer_format_from_video_format (video_format));
-
- GST_DEBUG ("downloading");
-
- gst_gl_display_lock (buffer->display);
-
- /* we need a reset function */
- glMatrixMode (GL_COLOR);
- glLoadIdentity ();
- glPixelTransferf (GL_POST_COLOR_MATRIX_RED_BIAS, 0);
- glPixelTransferf (GL_POST_COLOR_MATRIX_GREEN_BIAS, 0);
- glPixelTransferf (GL_POST_COLOR_MATRIX_BLUE_BIAS, 0);
-
- glGenFramebuffersEXT (1, &fbo);
- glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, fbo);
-
- glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT,
- GL_COLOR_ATTACHMENT1_EXT, GL_TEXTURE_RECTANGLE_ARB, buffer->texture, 0);
-
- glDrawBuffer (GL_COLOR_ATTACHMENT1_EXT);
- glReadBuffer (GL_COLOR_ATTACHMENT1_EXT);
-
- g_assert (glCheckFramebufferStatusEXT (GL_FRAMEBUFFER_EXT) ==
- GL_FRAMEBUFFER_COMPLETE_EXT);
-
- switch (video_format) {
- case GST_VIDEO_FORMAT_RGBx:
- glReadPixels (0, 0, buffer->width, buffer->height, GL_RGBA,
- GL_UNSIGNED_BYTE, data);
- break;
- case GST_VIDEO_FORMAT_BGRx:
- glReadPixels (0, 0, buffer->width, buffer->height, GL_BGRA,
- GL_UNSIGNED_BYTE, data);
- break;
- case GST_VIDEO_FORMAT_xBGR:
- glReadPixels (0, 0, buffer->width, buffer->height, GL_RGBA,
- GL_UNSIGNED_INT_8_8_8_8, data);
- break;
- case GST_VIDEO_FORMAT_AYUV:
- case GST_VIDEO_FORMAT_xRGB:
- glReadPixels (0, 0, buffer->width, buffer->height, GL_BGRA,
- GL_UNSIGNED_INT_8_8_8_8, data);
- break;
- case GST_VIDEO_FORMAT_YUY2:
- case GST_VIDEO_FORMAT_UYVY:
- g_warning ("video format not supported for download from GL texture");
- break;
- case GST_VIDEO_FORMAT_I420:
- case GST_VIDEO_FORMAT_YV12:
- glReadPixels (0, 0, buffer->width, buffer->height,
- GL_LUMINANCE, GL_UNSIGNED_BYTE, data);
-
- glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT,
- GL_COLOR_ATTACHMENT1_EXT, GL_TEXTURE_RECTANGLE_ARB,
- buffer->texture_u, 0);
- glReadPixels (0, 0,
- GST_ROUND_UP_2 (buffer->width) / 2,
- GST_ROUND_UP_2 (buffer->height) / 2,
- GL_LUMINANCE, GL_UNSIGNED_BYTE,
- (guint8 *) data +
- gst_video_format_get_component_offset (video_format, 1, buffer->width,
- buffer->height));
-
- glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT,
- GL_COLOR_ATTACHMENT1_EXT, GL_TEXTURE_RECTANGLE_ARB,
- buffer->texture_v, 0);
- glReadPixels (0, 0,
- GST_ROUND_UP_2 (buffer->width) / 2,
- GST_ROUND_UP_2 (buffer->height) / 2,
- GL_LUMINANCE, GL_UNSIGNED_BYTE,
- (guint8 *) data +
- gst_video_format_get_component_offset (video_format, 2, buffer->width,
- buffer->height));
- break;
- default:
- g_assert_not_reached ();
- }
-
- glDeleteFramebuffersEXT (1, &fbo);
-
- gst_gl_display_unlock (buffer->display);
-}
-
-
-
-/* buffer format */
-
-GstGLBufferFormat
-gst_gl_buffer_format_from_video_format (GstVideoFormat format)
-{
- switch (format) {
- case GST_VIDEO_FORMAT_RGBx:
- case GST_VIDEO_FORMAT_BGRx:
- case GST_VIDEO_FORMAT_xRGB:
- case GST_VIDEO_FORMAT_xBGR:
- case GST_VIDEO_FORMAT_RGBA:
- case GST_VIDEO_FORMAT_BGRA:
- case GST_VIDEO_FORMAT_ARGB:
- case GST_VIDEO_FORMAT_ABGR:
- case GST_VIDEO_FORMAT_AYUV:
- return GST_GL_BUFFER_FORMAT_RGBA;
- case GST_VIDEO_FORMAT_RGB:
- case GST_VIDEO_FORMAT_BGR:
- return GST_GL_BUFFER_FORMAT_RGB;
- case GST_VIDEO_FORMAT_YUY2:
- case GST_VIDEO_FORMAT_UYVY:
- return GST_GL_BUFFER_FORMAT_YUYV;
- case GST_VIDEO_FORMAT_I420:
- case GST_VIDEO_FORMAT_YV12:
- return GST_GL_BUFFER_FORMAT_PLANAR420;
- default:
- GST_WARNING ("GstVideoFormat %d not implemented", format);
- /* fall through */
- case GST_VIDEO_FORMAT_UNKNOWN:
- return GST_GL_BUFFER_FORMAT_UNKNOWN;
- }
-
- g_return_val_if_reached (GST_GL_BUFFER_FORMAT_UNKNOWN);
-}
-
-int
-gst_gl_buffer_format_get_size (GstGLBufferFormat format, int width, int height)
-{
- /* this is not strictly true, but it's used for compatibility with
- * queue and BaseTransform */
- return width * height * 4;
-}
-
-gboolean
-gst_gl_buffer_format_parse_caps (GstCaps * caps, GstGLBufferFormat * format,
- int *width, int *height)
-{
- GstStructure *structure;
- int format_as_int;
- gboolean ret;
-
- structure = gst_caps_get_structure (caps, 0);
-
- if (!gst_structure_has_name (structure, "video/x-raw-gl")) {
- return FALSE;
- }
-
- ret = gst_structure_get_int (structure, "format", &format_as_int);
- *format = format_as_int;
- ret &= gst_structure_get_int (structure, "width", width);
- ret &= gst_structure_get_int (structure, "height", height);
-
- return ret;
-}
diff --git a/gst-libs/gst/gl/gstglbuffer.h b/gst-libs/gst/gl/gstglbuffer.h
deleted file mode 100644
index 0cf27de..0000000
--- a/gst-libs/gst/gl/gstglbuffer.h
+++ /dev/null
@@ -1,76 +0,0 @@
-
-#ifndef _GST_GL_BUFFER_H_
-#define _GST_GL_BUFFER_H_
-
-#include <gst/gst.h>
-#include <gst/video/video.h>
-#include <gstgldisplay.h>
-
-typedef struct _GstGLBuffer GstGLBuffer;
-
-#define GST_TYPE_GL_BUFFER (gst_gl_buffer_get_type())
-
-#define GST_IS_GL_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_BUFFER))
-#define GST_GL_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GL_BUFFER, GstGLBuffer))
-
-typedef enum {
- GST_GL_BUFFER_FORMAT_UNKNOWN,
- GST_GL_BUFFER_FORMAT_RGBA,
- GST_GL_BUFFER_FORMAT_RGB,
- GST_GL_BUFFER_FORMAT_YUYV,
- GST_GL_BUFFER_FORMAT_PLANAR444,
- GST_GL_BUFFER_FORMAT_PLANAR422,
- GST_GL_BUFFER_FORMAT_PLANAR420
-} GstGLBufferFormat;
-
-struct _GstGLBuffer {
- GstBuffer buffer;
-
- GstGLDisplay *display;
-
- GstGLBufferFormat format;
- gboolean is_yuv;
-
- GLuint texture;
- GLuint texture_u;
- GLuint texture_v;
-
- int width;
- int height;
-};
-
-GType gst_gl_buffer_get_type (void);
-
-#define gst_gl_buffer_ref(x) ((GstGLBuffer *)(gst_buffer_ref((GstBuffer *)(x))))
-#define gst_gl_buffer_unref(x) (gst_buffer_unref((GstBuffer *)(x)))
-
-GstGLBuffer * gst_gl_buffer_new (GstGLDisplay *display,
- int width, int height);
-GstGLBuffer * gst_gl_buffer_new_with_format (GstGLDisplay *display,
- GstGLBufferFormat format, int width, int height);
-GstGLBuffer * gst_gl_buffer_new_from_video_format (GstGLDisplay *display,
- GstVideoFormat format, int width, int height);
-void gst_gl_buffer_upload (GstGLBuffer *buffer,
- GstVideoFormat format, void *data);
-void gst_gl_buffer_download (GstGLBuffer *buffer, GstVideoFormat format,
- void *data);
-
-
-#define GST_GL_VIDEO_CAPS \
- "video/x-raw-gl," \
- "format=(int)1," \
- "is_yuv=(boolean)FALSE," \
- "width=(int)[1,2048]," \
- "height=(int)[1,2048]," \
- "pixel-aspect-ratio=(fraction)1/1," \
- "framerate=(fraction)[0/1,100/1]"
-
-GstGLBufferFormat gst_gl_buffer_format_from_video_format (GstVideoFormat format);
-int gst_gl_buffer_format_get_size (GstGLBufferFormat format, int width,
- int height);
-gboolean gst_gl_buffer_format_parse_caps (GstCaps *caps, GstGLBufferFormat *format,
- int *width, int *height);
-
-
-#endif
-
diff --git a/gst-libs/gst/gl/gstgldisplay.c b/gst-libs/gst/gl/gstgldisplay.c
deleted file mode 100644
index d04242c..0000000
--- a/gst-libs/gst/gl/gstgldisplay.c
+++ /dev/null
@@ -1,875 +0,0 @@
-/* gstgldisplay.c
- * Copyright (C) 2007 David A. Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gstgldisplay.h"
-#include "glextensions.h"
-#include <gst/gst.h>
-
-#include <string.h>
-
-static void gst_gl_display_finalize (GObject * object);
-static void gst_gl_display_init_tmp_window (GstGLDisplay * display);
-
-GST_BOILERPLATE (GstGLDisplay, gst_gl_display, GObject, G_TYPE_OBJECT);
-
-static void
-gst_gl_display_base_init (gpointer g_class)
-{
-
-}
-
-static void
-gst_gl_display_class_init (GstGLDisplayClass * klass)
-{
- G_OBJECT_CLASS (klass)->finalize = gst_gl_display_finalize;
-}
-
-static void
-gst_gl_display_init (GstGLDisplay * display, GstGLDisplayClass * klass)
-{
-
- display->lock = g_mutex_new ();
-
-}
-
-static void
-gst_gl_display_finalize (GObject * object)
-{
- GstGLDisplay *display = GST_GL_DISPLAY (object);
-
- GST_DEBUG ("finalize %p", object);
-
- if (display->window != None) {
- XDestroyWindow (display->display, display->window);
- }
- if (display->context) {
- glXDestroyContext (display->display, display->context);
- }
- //if (display->visinfo) {
- // XFree (display->visinfo);
- //}
- if (display->display) {
- XCloseDisplay (display->display);
- }
-
- if (display->lock) {
- g_mutex_free (display->lock);
- }
-}
-
-static gboolean gst_gl_display_check_features (GstGLDisplay * display);
-
-GstGLDisplay *
-gst_gl_display_new (void)
-{
- return g_object_new (GST_TYPE_GL_DISPLAY, NULL);
-}
-
-//#define HANDLE_X_ERRORS
-#ifdef HANDLE_X_ERRORS
-static int
-x_error_handler (Display * display, XErrorEvent * event)
-{
- g_assert_not_reached ();
-}
-#endif
-
-gboolean
-gst_gl_display_connect (GstGLDisplay * display, const char *display_name)
-{
- gboolean usable;
- XGCValues values;
- XPixmapFormatValues *px_formats;
- int n_formats;
- int i;
-
- display->display = XOpenDisplay (display_name);
- if (display->display == NULL) {
- return FALSE;
- }
-#ifdef HANDLE_X_ERRORS
- XSynchronize (display->display, True);
- XSetErrorHandler (x_error_handler);
-#endif
-
- usable = gst_gl_display_check_features (display);
- if (!usable) {
- return FALSE;
- }
-
- display->screen = DefaultScreenOfDisplay (display->display);
- display->screen_num = DefaultScreen (display->display);
- display->visual = DefaultVisual (display->display, display->screen_num);
- display->root = DefaultRootWindow (display->display);
- display->white = XWhitePixel (display->display, display->screen_num);
- display->black = XBlackPixel (display->display, display->screen_num);
- display->depth = DefaultDepthOfScreen (display->screen);
-
- display->gc = XCreateGC (display->display,
- DefaultRootWindow (display->display), 0, &values);
-
- px_formats = XListPixmapFormats (display->display, &n_formats);
- for (i = 0; i < n_formats; i++) {
- GST_DEBUG ("%d: depth %d bpp %d pad %d", i,
- px_formats[i].depth,
- px_formats[i].bits_per_pixel, px_formats[i].scanline_pad);
- }
-
- gst_gl_display_init_tmp_window (display);
-
- return TRUE;
-}
-
-static gboolean
-gst_gl_display_check_features (GstGLDisplay * display)
-{
- gboolean ret;
- XVisualInfo *visinfo;
- Screen *screen;
- Window root;
- int scrnum;
- int attrib[] = { GLX_RGBA, GLX_DOUBLEBUFFER, GLX_RED_SIZE, 8,
- GLX_GREEN_SIZE, 8, GLX_BLUE_SIZE, 8, None
- };
- XSetWindowAttributes attr;
- int error_base;
- int event_base;
- int mask;
- const char *extstring;
- Window window;
-
- screen = XDefaultScreenOfDisplay (display->display);
- scrnum = XScreenNumberOfScreen (screen);
- root = XRootWindow (display->display, scrnum);
-
- ret = glXQueryExtension (display->display, &error_base, &event_base);
- if (!ret) {
- GST_DEBUG ("No GLX extension");
- return FALSE;
- }
-
- visinfo = glXChooseVisual (display->display, scrnum, attrib);
- if (visinfo == NULL) {
- GST_DEBUG ("No usable visual");
- return FALSE;
- }
-
- display->visinfo = visinfo;
-
- display->context = glXCreateContext (display->display, visinfo, NULL, True);
-
- attr.background_pixel = 0;
- attr.border_pixel = 0;
- attr.colormap = XCreateColormap (display->display, root,
- visinfo->visual, AllocNone);
- attr.event_mask = StructureNotifyMask | ExposureMask;
- attr.override_redirect = True;
-
- mask = CWBackPixel | CWBorderPixel | CWColormap | CWOverrideRedirect;
-
- GST_DEBUG ("creating window with visual %ld", visinfo->visualid);
-
- window = XCreateWindow (display->display, root, 0, 0,
- 100, 100, 0, visinfo->depth, InputOutput, visinfo->visual, mask, &attr);
-
- XSync (display->display, FALSE);
-
- glXMakeCurrent (display->display, window, display->context);
-
- glGetIntegerv (GL_MAX_TEXTURE_SIZE, &display->max_texture_size);
-
- extstring = (const char *) glGetString (GL_EXTENSIONS);
-
- display->have_ycbcr_texture = FALSE;
-#ifdef GL_YCBCR_MESA
- if (strstr (extstring, "GL_MESA_ycbcr_texture")) {
- display->have_ycbcr_texture = TRUE;
- }
-#endif
-
- display->have_color_matrix = FALSE;
-#ifdef GL_POST_COLOR_MATRIX_RED_BIAS
- if (strstr (extstring, "GL_SGI_color_matrix")) {
- display->have_color_matrix = TRUE;
- }
-#endif
-
- display->have_texture_rectangle = FALSE;
-#ifdef GL_TEXTURE_RECTANGLE_ARB
- if (strstr (extstring, "GL_ARB_texture_rectangle")) {
- display->have_texture_rectangle = TRUE;
- }
-#endif
-
- glXMakeCurrent (display->display, None, NULL);
- XDestroyWindow (display->display, window);
-
- return TRUE;
-}
-
-gboolean
-gst_gl_display_can_handle_type (GstGLDisplay * display, GstVideoFormat type)
-{
- switch (type) {
- case GST_VIDEO_FORMAT_RGBx:
- case GST_VIDEO_FORMAT_BGRx:
- case GST_VIDEO_FORMAT_xRGB:
- case GST_VIDEO_FORMAT_xBGR:
- return TRUE;
- case GST_VIDEO_FORMAT_YUY2:
- case GST_VIDEO_FORMAT_UYVY:
- return display->have_ycbcr_texture;
- case GST_VIDEO_FORMAT_AYUV:
- return display->have_color_matrix;
- default:
- return FALSE;
- }
-}
-
-void
-gst_gl_display_lock (GstGLDisplay * display)
-{
- gboolean ret;
-
- g_assert (display->window != None);
- g_assert (display->context != NULL);
-
- g_mutex_lock (display->lock);
- ret = glXMakeCurrent (display->display, display->window, display->context);
- if (!ret) {
- g_warning ("glxMakeCurrent failed");
- }
- gst_gl_display_check_error (display, __LINE__);
-}
-
-void
-gst_gl_display_unlock (GstGLDisplay * display)
-{
- gst_gl_display_check_error (display, __LINE__);
- glXMakeCurrent (display->display, None, NULL);
- g_mutex_unlock (display->lock);
-}
-
-static void
-gst_gl_display_init_tmp_window (GstGLDisplay * display)
-{
- XSetWindowAttributes attr = { 0 };
- int scrnum;
- int mask;
- Window root;
- Window parent_window;
- Screen *screen;
- int width;
- int height;
-
- GST_DEBUG ("creating temp window");
-
- screen = XDefaultScreenOfDisplay (display->display);
- scrnum = XScreenNumberOfScreen (screen);
- root = XRootWindow (display->display, scrnum);
-
- attr.background_pixel = 0;
- attr.border_pixel = 0;
- attr.colormap = XCreateColormap (display->display, root,
- display->visinfo->visual, AllocNone);
- if (display->parent_window != None) {
- XWindowAttributes parent_attr;
-
- attr.override_redirect = True;
- parent_window = display->parent_window;
-
- XGetWindowAttributes (display->display, parent_window, &parent_attr);
- width = parent_attr.width;
- height = parent_attr.height;
- } else {
- attr.override_redirect = False;
- parent_window = root;
- width = 100;
- height = 100;
- }
-
- mask = CWBackPixel | CWBorderPixel | CWColormap | CWOverrideRedirect;
-
- display->window = XCreateWindow (display->display,
- parent_window, 0, 0, width, height,
- 0, display->visinfo->depth, InputOutput,
- display->visinfo->visual, mask, &attr);
- if (display->visible) {
- XMapWindow (display->display, display->window);
- }
- XSync (display->display, FALSE);
-}
-
-static void
-gst_gl_display_destroy_tmp_window (GstGLDisplay * display)
-{
- XDestroyWindow (display->display, display->window);
-}
-
-void
-gst_gl_display_set_visible (GstGLDisplay * display, gboolean visible)
-{
- if (display->visible == visible)
- return;
- display->visible = visible;
- if (display->visible) {
- XMapWindow (display->display, display->window);
- } else {
- XUnmapWindow (display->display, display->window);
- }
- XSync (display->display, FALSE);
-}
-
-void
-gst_gl_display_set_window (GstGLDisplay * display, Window window)
-{
- g_mutex_lock (display->lock);
-
- if (display->display == NULL) {
- display->parent_window = window;
- } else {
- if (window != display->parent_window) {
- XSync (display->display, False);
-
- gst_gl_display_destroy_tmp_window (display);
-
- display->parent_window = window;
-
- gst_gl_display_init_tmp_window (display);
- }
- }
-
- g_mutex_unlock (display->lock);
-}
-
-void
-gst_gl_display_update_window (GstGLDisplay * display)
-{
- XWindowAttributes attr;
-
- g_return_if_fail (display != NULL);
-
- g_mutex_lock (display->lock);
- if (display->window != None && display->parent_window != None) {
- XSync (display->display, False);
- XGetWindowAttributes (display->display, display->parent_window, &attr);
-
- GST_DEBUG ("new size %d %d", attr.width, attr.height);
-
- if (display->win_width != attr.width || display->win_height != attr.height) {
- XResizeWindow (display->display, display->window,
- attr.width, attr.height);
- //XSync (display->display, False);
- }
- display->win_width = attr.width;
- display->win_height = attr.height;
- }
- g_mutex_unlock (display->lock);
-}
-
-void
-gst_gl_display_update_attributes (GstGLDisplay * display)
-{
- XWindowAttributes attr;
-
- if (display->window != None) {
- XGetWindowAttributes (display->display, display->window, &attr);
-
- GST_DEBUG ("window visual %ld display visual %ld",
- attr.visual->visualid, display->visinfo->visual->visualid);
-
- display->win_width = attr.width;
- display->win_height = attr.height;
- } else {
- display->win_width = 0;
- display->win_height = 0;
- }
-}
-
-void
-gst_gl_display_set_window_size (GstGLDisplay * display, int width, int height)
-{
- if (display->win_width != width || display->win_height != height) {
- display->win_width = width;
- display->win_height = height;
- XResizeWindow (display->display, display->window, width, height);
- XSync (display->display, False);
- }
-}
-
-void
-gst_gl_display_clear (GstGLDisplay * display)
-{
- gst_gl_display_lock (display);
-
- glDepthFunc (GL_LESS);
- glEnable (GL_DEPTH_TEST);
- glClearColor (0.2, 0.2, 0.2, 1.0);
- glViewport (0, 0, display->win_width, display->win_height);
-
- gst_gl_display_unlock (display);
-}
-
-void
-gst_gl_display_check_error (GstGLDisplay * display, int line)
-{
- GLenum err = glGetError ();
-
- if (err) {
- GST_ERROR ("GL Error 0x%x at line %d", (int) err, line);
- g_assert (0);
- }
-}
-
-
-GLuint
-gst_gl_display_upload_texture_rectangle (GstGLDisplay * display,
- GstVideoFormat type, void *data, int width, int height)
-{
- GLuint texture;
-
- glGenTextures (1, &texture);
- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-
- switch (type) {
- case GST_VIDEO_FORMAT_RGBx:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, width, height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_RGBA, GL_UNSIGNED_BYTE, data);
- break;
- case GST_VIDEO_FORMAT_BGRx:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, width, height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_BGRA, GL_UNSIGNED_BYTE, data);
- break;
- case GST_VIDEO_FORMAT_xRGB:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, width, height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, data);
- break;
- case GST_VIDEO_FORMAT_xBGR:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, width, height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, data);
- break;
- case GST_VIDEO_FORMAT_YUY2:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_YCBCR_MESA, width, height,
- 0, GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_REV_MESA, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_REV_MESA, data);
- break;
- case GST_VIDEO_FORMAT_UYVY:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_YCBCR_MESA, width, height,
- 0, GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_REV_MESA, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, data);
- break;
- case GST_VIDEO_FORMAT_AYUV:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, width, height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, data);
- break;
- default:
- g_assert_not_reached ();
- }
-
- return texture;
-}
-
-
-#if 0
-static void
-draw_rect_texture (GstGLDisplay * display, GstVideoFormat type,
- void *data, int width, int height)
-{
- GLuint texture;
-
- GST_DEBUG ("using rectangular texture");
-
-#ifdef GL_TEXTURE_RECTANGLE_ARB
- glEnable (GL_TEXTURE_RECTANGLE_ARB);
-
- texture = gst_gl_display_upload_texture_rectangle (display, type,
- data, width, height);
-
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP);
- glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
-#if 0
- switch (type) {
- case GST_VIDEO_FORMAT_RGBx:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, width, height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_RGBA, GL_UNSIGNED_BYTE, data);
- break;
- case GST_VIDEO_FORMAT_BGRx:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, width, height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_BGRA, GL_UNSIGNED_BYTE, data);
- break;
- case GST_VIDEO_FORMAT_xRGB:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, width, height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, data);
- break;
- case GST_VIDEO_FORMAT_xBGR:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, width, height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, data);
- break;
- case GST_VIDEO_FORMAT_YUY2:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_YCBCR_MESA, width, height,
- 0, GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_REV_MESA, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_REV_MESA, data);
- break;
- case GST_VIDEO_FORMAT_UYVY:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_YCBCR_MESA, width, height,
- 0, GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_REV_MESA, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, data);
- break;
- case GST_VIDEO_FORMAT_AYUV:
- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, width, height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
- GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, data);
- break;
- default:
- g_assert_not_reached ();
- }
-
-#ifdef GL_POST_COLOR_MATRIX_RED_BIAS
- if (type == GST_VIDEO_FORMAT_AYUV) {
- const double matrix[16] = {
- 1, 1, 1, 0,
- 0, -0.344 * 1, 1.770 * 1, 0,
- 1.403 * 1, -0.714 * 1, 0, 0,
- 0, 0, 0, 1
- };
- glMatrixMode (GL_COLOR);
- glLoadMatrixd (matrix);
- glPixelTransferf (GL_POST_COLOR_MATRIX_RED_BIAS, -1.403 / 2);
- glPixelTransferf (GL_POST_COLOR_MATRIX_GREEN_BIAS, (0.344 + 0.714) / 2);
- glPixelTransferf (GL_POST_COLOR_MATRIX_BLUE_BIAS, -1.770 / 2);
- }
-#endif
-#endif
-
- glColor4f (1, 0, 1, 1);
- glBegin (GL_QUADS);
-
- glNormal3f (0, 0, -1);
-
- glTexCoord2f (width, 0);
- glVertex3f (1.0, 1.0, 0);
- glTexCoord2f (0, 0);
- glVertex3f (-1.0, 1.0, 0);
- glTexCoord2f (0, height);
- glVertex3f (-1.0, -1.0, 0);
- glTexCoord2f (width, height);
- glVertex3f (1.0, -1.0, 0);
- glEnd ();
- glDeleteTextures (1, &texture);
-#else
- g_assert_not_reached ();
-#endif
-}
-
-static void
-draw_pow2_texture (GstGLDisplay * display, GstVideoFormat type,
- void *data, int width, int height)
-{
- int pow2_width;
- int pow2_height;
- double x, y;
- GLuint texture;
-
- GST_DEBUG ("using power-of-2 texture");
-
- for (pow2_height = 64;
- pow2_height < height && pow2_height > 0; pow2_height <<= 1);
- for (pow2_width = 64; pow2_width < width && pow2_width > 0; pow2_width <<= 1);
-
- glEnable (GL_TEXTURE_2D);
- glGenTextures (1, &texture);
- glBindTexture (GL_TEXTURE_2D, texture);
- glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
- glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
- switch (type) {
- case GST_VIDEO_FORMAT_RGBx:
- glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, pow2_width, pow2_height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, width, height,
- GL_RGBA, GL_UNSIGNED_BYTE, data);
- break;
- case GST_VIDEO_FORMAT_BGRx:
- glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, pow2_width, pow2_height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, width, height,
- GL_BGRA, GL_UNSIGNED_BYTE, data);
- break;
- case GST_VIDEO_FORMAT_xRGB:
- glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, pow2_width, pow2_height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, width, height,
- GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, data);
- break;
- case GST_VIDEO_FORMAT_xBGR:
- glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, pow2_width, pow2_height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, width, height,
- GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, data);
- break;
- case GST_VIDEO_FORMAT_YUY2:
- glTexImage2D (GL_TEXTURE_2D, 0, GL_YCBCR_MESA, pow2_width, pow2_height,
- 0, GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_REV_MESA, NULL);
- glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, width, height,
- GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_REV_MESA, data);
- break;
- case GST_VIDEO_FORMAT_UYVY:
- glTexImage2D (GL_TEXTURE_2D, 0, GL_YCBCR_MESA, pow2_width, pow2_height,
- 0, GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_REV_MESA, NULL);
- glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, width, height,
- GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, data);
- break;
- case GST_VIDEO_FORMAT_AYUV:
- glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, pow2_width, pow2_height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, width, height,
- GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, data);
- break;
- default:
- g_assert_not_reached ();
- }
-
-#ifdef GL_POST_COLOR_MATRIX_RED_BIAS
- if (type == GST_VIDEO_FORMAT_AYUV) {
- const double matrix[16] = {
- 1, 1, 1, 0,
- 0, -0.344 * 1, 1.770 * 1, 0,
- 1.403 * 1, -0.714 * 1, 0, 0,
- 0, 0, 0, 1
- };
- glMatrixMode (GL_COLOR);
- glLoadMatrixd (matrix);
- glPixelTransferf (GL_POST_COLOR_MATRIX_RED_BIAS, -1.403 / 2);
- glPixelTransferf (GL_POST_COLOR_MATRIX_GREEN_BIAS, (0.344 + 0.714) / 2);
- glPixelTransferf (GL_POST_COLOR_MATRIX_BLUE_BIAS, -1.770 / 2);
- }
-#endif
-
- glColor4f (1, 0, 1, 1);
- glBegin (GL_QUADS);
-
- glNormal3f (0, 0, -1);
-
- x = (double) width / pow2_width;
- y = (double) height / pow2_height;
-
- glTexCoord2f (x, 0);
- glVertex3f (1.0, 1.0, 0);
- glTexCoord2f (0, 0);
- glVertex3f (-1.0, 1.0, 0);
- glTexCoord2f (0, y);
- glVertex3f (-1.0, -1.0, 0);
- glTexCoord2f (x, y);
- glVertex3f (1.0, -1.0, 0);
- glEnd ();
- glDeleteTextures (1, &texture);
-}
-#endif
-
-#if 0
-void
-gst_gl_display_draw_image (GstGLDisplay * display, GstVideoFormat type,
- void *data, int width, int height)
-{
- g_return_if_fail (data != NULL);
- g_return_if_fail (width > 0);
- g_return_if_fail (height > 0);
-
- gst_gl_display_lock (display);
-
-#if 0
- /* Doesn't work */
- {
- int64_t ust = 1234;
- int64_t mst = 1234;
- int64_t sbc = 1234;
- gboolean ret;
-
- ret = glXGetSyncValuesOML (display->display, display->window,
- &ust, &mst, &sbc);
- GST_ERROR ("sync values %d %" G_GINT64_FORMAT " %" G_GINT64_FORMAT
- " %" G_GINT64_FORMAT, ret, ust, mst, sbc);
- }
-#endif
-
-#if 0
- /* Does work, but is not relevant */
- {
- int32_t num = 1234;
- int32_t den = 1234;
- gboolean ret;
-
- ret = glXGetMscRateOML (display->display, display->window, &num, &den);
- GST_DEBUG ("rate %d %d %d", ret, num, den);
- }
-#endif
-
- gst_gl_display_update_attributes (display);
-
- glXSwapIntervalSGI (1);
- glViewport (0, 0, display->win_width, display->win_height);
-
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glMatrixMode (GL_PROJECTION);
- glLoadIdentity ();
-
- glMatrixMode (GL_MODELVIEW);
- glLoadIdentity ();
-
- glDisable (GL_CULL_FACE);
- glEnableClientState (GL_TEXTURE_COORD_ARRAY);
-
- glColor4f (1, 1, 1, 1);
-
- if (display->have_texture_rectangle) {
- draw_rect_texture (display, type, data, width, height);
- } else {
- draw_pow2_texture (display, type, data, width, height);
- }
-
- glXSwapBuffers (display->display, display->window);
-#if 0
- /* Doesn't work */
- {
- ret = glXSwapBuffersMscOML (display->display, display->window, 0, 1, 0);
- if (ret == 0) {
- GST_DEBUG ("glXSwapBuffersMscOML failed");
- }
- }
-#endif
-
- gst_gl_display_unlock (display);
-}
-#endif
-
-void
-gst_gl_display_draw_texture (GstGLDisplay * display, GLuint texture,
- int width, int height, gboolean sync)
-{
- g_return_if_fail (width > 0);
- g_return_if_fail (height > 0);
- g_return_if_fail (texture != None);
-
- gst_gl_display_lock (display);
-
- g_assert (display->window != None);
- g_assert (display->context != NULL);
-
- //gst_gl_display_update_attributes (display);
-#if 0
- /* Doesn't work */
- {
- int64_t ust = 1234;
- int64_t mst = 1234;
- int64_t sbc = 1234;
- gboolean ret;
-
- ret = glXGetSyncValuesOML (display->display, display->window,
- &ust, &mst, &sbc);
- GST_ERROR ("sync values %d %" G_GINT64_FORMAT " %" G_GINT64_FORMAT
- " %" G_GINT64_FORMAT, ret, ust, mst, sbc);
- }
-#endif
-
- if (sync) {
- glXSwapIntervalSGI (1);
- } else {
- glXSwapIntervalSGI (0);
- }
-
- glViewport (0, 0, display->win_width, display->win_height);
-
- glClearColor (0.3, 0.3, 0.3, 1.0);
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glMatrixMode (GL_PROJECTION);
- glLoadIdentity ();
-
- glMatrixMode (GL_MODELVIEW);
- glLoadIdentity ();
-
- glDisable (GL_CULL_FACE);
- glEnableClientState (GL_TEXTURE_COORD_ARRAY);
-
- glColor4f (1, 1, 1, 1);
-
- glEnable (GL_TEXTURE_RECTANGLE_ARB);
- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP);
- glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
- glColor4f (1, 0, 1, 1);
- gst_gl_display_check_error (display, __LINE__);
- glBegin (GL_QUADS);
-
- glNormal3f (0, 0, -1);
-
- glTexCoord2f (width, 0);
- glVertex3f (1.0, 1.0, 0);
- glTexCoord2f (0, 0);
- glVertex3f (-1.0, 1.0, 0);
- glTexCoord2f (0, height);
- glVertex3f (-1.0, -1.0, 0);
- glTexCoord2f (width, height);
- glVertex3f (1.0, -1.0, 0);
- glEnd ();
- gst_gl_display_check_error (display, __LINE__);
-
- glXSwapBuffers (display->display, display->window);
-
- gst_gl_display_unlock (display);
-}
diff --git a/gst-libs/gst/gl/gstgldisplay.h b/gst-libs/gst/gl/gstgldisplay.h
deleted file mode 100644
index 1b2c9df..0000000
--- a/gst-libs/gst/gl/gstgldisplay.h
+++ /dev/null
@@ -1,85 +0,0 @@
-
-#ifndef __GST_GL_H__
-#define __GST_GL_H__
-
-#include <GL/glx.h>
-#include <GL/gl.h>
-#include <gst/gst.h>
-#include <gst/video/video.h>
-
-typedef struct _GstGLDisplay GstGLDisplay;
-typedef struct _GstGLDisplayClass GstGLDisplayClass;
-
-#define GST_TYPE_GL_DISPLAY \
- (gst_gl_display_get_type())
-#define GST_GL_DISPLAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_DISPLAY,GstGLDisplay))
-#define GST_GL_DISPLAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_GL_DISPLAY,GstGLDisplayClass))
-#define GST_IS_GL_DISPLAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GL_DISPLAY))
-#define GST_IS_GL_DISPLAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_GL_DISPLAY))
-
-
-struct _GstGLDisplay {
- GObject object;
-
- Display *display;
- GC gc;
- XVisualInfo *visinfo;
- GLXContext context;
- GMutex *lock;
-
- Screen *screen;
- int screen_num;
- Visual *visual;
- Window root;
- guint32 white;
- guint32 black;
- int depth;
-
- int max_texture_size;
-
- gboolean have_ycbcr_texture;
- gboolean have_texture_rectangle;
- gboolean have_color_matrix;
-
- Window window;
- gboolean visible;
- Window parent_window;
-
- int win_width;
- int win_height;
-
-};
-
-struct _GstGLDisplayClass {
- GObjectClass object_class;
-};
-
-GType gst_gl_display_get_type (void);
-
-
-GstGLDisplay *gst_gl_display_new (void);
-gboolean gst_gl_display_connect (GstGLDisplay *display,
- const char *display_name);
-gboolean gst_gl_display_can_handle_type (GstGLDisplay *display,
- GstVideoFormat type);
-void gst_gl_display_lock (GstGLDisplay *display);
-void gst_gl_display_unlock (GstGLDisplay *display);
-void gst_gl_display_set_window (GstGLDisplay *display, Window window);
-void gst_gl_display_update_attributes (GstGLDisplay *display);
-void gst_gl_display_clear (GstGLDisplay *display);
-void gst_gl_display_draw_texture (GstGLDisplay * display, GLuint texture,
- int width, int height, gboolean sync);
-void gst_gl_display_check_error (GstGLDisplay *display, int line);
-GLuint gst_gl_display_upload_texture_rectangle (GstGLDisplay *display,
- GstVideoFormat type, void *data, int width, int height);
-void gst_gl_display_set_visible (GstGLDisplay *display, gboolean visible);
-void gst_gl_display_set_window_size (GstGLDisplay *display, int width,
- int height);
-void gst_gl_display_update_window (GstGLDisplay * display);
-
-#endif
-
diff --git a/gst-libs/gst/gl/gstglfilter.c b/gst-libs/gst/gl/gstglfilter.c
deleted file mode 100644
index a2175af..0000000
--- a/gst-libs/gst/gl/gstglfilter.c
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2007 David Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-#include <gst/video/video.h>
-#include <gstglbuffer.h>
-#include <gstglfilter.h>
-#include "glextensions.h"
-
-#define GST_CAT_DEFAULT gst_gl_filter_debug
-GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
-
-
-static GstStaticPadTemplate gst_gl_filter_src_pad_template =
-GST_STATIC_PAD_TEMPLATE ("src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_GL_VIDEO_CAPS)
- );
-
-static GstStaticPadTemplate gst_gl_filter_sink_pad_template =
-GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_GL_VIDEO_CAPS)
- );
-
-#define DEBUG_INIT(bla) \
- GST_DEBUG_CATEGORY_INIT (gst_gl_filter_debug, "glfilter", 0, "glfilter element");
-
-GST_BOILERPLATE_FULL (GstGLFilter, gst_gl_filter, GstBaseTransform,
- GST_TYPE_BASE_TRANSFORM, DEBUG_INIT);
-
-static void gst_gl_filter_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_gl_filter_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static void gst_gl_filter_reset (GstGLFilter * filter);
-static gboolean gst_gl_filter_start (GstBaseTransform * bt);
-static gboolean gst_gl_filter_stop (GstBaseTransform * bt);
-static gboolean gst_gl_filter_get_unit_size (GstBaseTransform * trans,
- GstCaps * caps, guint * size);
-static GstFlowReturn gst_gl_filter_transform (GstBaseTransform * bt,
- GstBuffer * inbuf, GstBuffer * outbuf);
-static GstFlowReturn gst_gl_filter_prepare_output_buffer (GstBaseTransform *
- trans, GstBuffer * input, gint size, GstCaps * caps, GstBuffer ** buf);
-static gboolean gst_gl_filter_set_caps (GstBaseTransform * bt, GstCaps * incaps,
- GstCaps * outcaps);
-static gboolean gst_gl_filter_do_transform (GstGLFilter * filter,
- GstGLBuffer * inbuf, GstGLBuffer * outbuf);
-
-
-static void
-gst_gl_filter_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_gl_filter_src_pad_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_gl_filter_sink_pad_template));
-}
-
-static void
-gst_gl_filter_class_init (GstGLFilterClass * klass)
-{
- GObjectClass *gobject_class;
-
- gobject_class = (GObjectClass *) klass;
- gobject_class->set_property = gst_gl_filter_set_property;
- gobject_class->get_property = gst_gl_filter_get_property;
-
- GST_BASE_TRANSFORM_CLASS (klass)->transform = gst_gl_filter_transform;
- GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_filter_start;
- GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_filter_stop;
- GST_BASE_TRANSFORM_CLASS (klass)->set_caps = gst_gl_filter_set_caps;
- GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size = gst_gl_filter_get_unit_size;
- GST_BASE_TRANSFORM_CLASS (klass)->prepare_output_buffer =
- gst_gl_filter_prepare_output_buffer;
-}
-
-static void
-gst_gl_filter_init (GstGLFilter * filter, GstGLFilterClass * klass)
-{
- //gst_element_create_all_pads (GST_ELEMENT (filter));
-
- filter->sinkpad = gst_element_get_static_pad (GST_ELEMENT (filter), "sink");
- filter->srcpad = gst_element_get_static_pad (GST_ELEMENT (filter), "src");
-
- gst_gl_filter_reset (filter);
-}
-
-static void
-gst_gl_filter_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- //GstGLFilter *filter = GST_GL_FILTER (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_gl_filter_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- //GstGLFilter *filter = GST_GL_FILTER (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_gl_filter_reset (GstGLFilter * filter)
-{
- if (filter->display) {
- g_object_unref (filter->display);
- filter->display = NULL;
- }
- filter->format = GST_GL_BUFFER_FORMAT_UNKNOWN;
- filter->width = 0;
- filter->height = 0;
-}
-
-static gboolean
-gst_gl_filter_start (GstBaseTransform * bt)
-{
-
- return TRUE;
-}
-
-static gboolean
-gst_gl_filter_stop (GstBaseTransform * bt)
-{
- GstGLFilter *filter = GST_GL_FILTER (bt);
-
- gst_gl_filter_reset (filter);
-
- return TRUE;
-}
-
-static gboolean
-gst_gl_filter_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
- guint * size)
-{
- gboolean ret;
- GstGLBufferFormat format;
- int width;
- int height;
-
- ret = gst_gl_buffer_format_parse_caps (caps, &format, &width, &height);
- if (ret) {
- *size = gst_gl_buffer_format_get_size (format, width, height);
- }
-
- return TRUE;
-}
-
-static GstFlowReturn
-gst_gl_filter_prepare_output_buffer (GstBaseTransform * trans,
- GstBuffer * inbuf, gint size, GstCaps * caps, GstBuffer ** buf)
-{
- GstGLFilter *filter;
- GstGLBuffer *gl_inbuf = GST_GL_BUFFER (inbuf);
- GstGLBuffer *gl_outbuf;
-
- filter = GST_GL_FILTER (trans);
-
- if (filter->display == NULL) {
- filter->display = gl_inbuf->display;
- }
-
- gl_outbuf = gst_gl_buffer_new_with_format (filter->display,
- filter->format, filter->width, filter->height);
-
- *buf = GST_BUFFER (gl_outbuf);
- gst_buffer_set_caps (*buf, caps);
-
- return GST_FLOW_OK;
-}
-
-static gboolean
-gst_gl_filter_set_caps (GstBaseTransform * bt, GstCaps * incaps,
- GstCaps * outcaps)
-{
- GstGLFilter *filter;
- gboolean ret;
-
- filter = GST_GL_FILTER (bt);
-
- ret = gst_gl_buffer_format_parse_caps (incaps, &filter->format,
- &filter->width, &filter->height);
-
- if (!ret) {
- GST_DEBUG ("bad caps");
- return FALSE;
- }
-
- GST_ERROR ("set_caps %d %d", filter->width, filter->height);
-
- return ret;
-}
-
-static GstFlowReturn
-gst_gl_filter_transform (GstBaseTransform * bt, GstBuffer * inbuf,
- GstBuffer * outbuf)
-{
- GstGLFilter *filter;
- GstGLBuffer *gl_inbuf = GST_GL_BUFFER (inbuf);
- GstGLBuffer *gl_outbuf = GST_GL_BUFFER (outbuf);
-
- filter = GST_GL_FILTER (bt);
-
- gst_gl_filter_do_transform (filter, gl_inbuf, gl_outbuf);
-
- return GST_FLOW_OK;
-}
-
-static gboolean
-gst_gl_filter_do_transform (GstGLFilter * filter,
- GstGLBuffer * inbuf, GstGLBuffer * outbuf)
-{
- GstGLDisplay *display = inbuf->display;
- GstGLFilterClass *filter_class;
- unsigned int fbo;
-
- filter_class = GST_GL_FILTER_GET_CLASS (filter);
-
- gst_gl_display_lock (display);
-
- glGenFramebuffersEXT (1, &fbo);
- glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, fbo);
-
- glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT,
- GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_RECTANGLE_ARB, outbuf->texture, 0);
-
- glDrawBuffer (GL_COLOR_ATTACHMENT0_EXT);
- glReadBuffer (GL_COLOR_ATTACHMENT0_EXT);
-
- g_assert (glCheckFramebufferStatusEXT (GL_FRAMEBUFFER_EXT) ==
- GL_FRAMEBUFFER_COMPLETE_EXT);
-
- glViewport (0, 0, outbuf->width, outbuf->height);
-
- glClearColor (0.3, 0.3, 0.3, 1.0);
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glMatrixMode (GL_PROJECTION);
- glLoadIdentity ();
-
- glMatrixMode (GL_MODELVIEW);
- glLoadIdentity ();
-
- glDisable (GL_CULL_FACE);
- glEnableClientState (GL_TEXTURE_COORD_ARRAY);
-
- glColor4f (1, 1, 1, 1);
-
- glEnable (GL_TEXTURE_RECTANGLE_ARB);
- glActiveTexture (GL_TEXTURE0);
- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, inbuf->texture);
-
- filter_class->filter (filter, inbuf, outbuf);
-
-#if 0
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP);
- glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
- glColor4f (1, 0, 1, 1);
- glBegin (GL_QUADS);
-
- glNormal3f (0, 0, -1);
-
- glTexCoord2f (inbuf->width, 0);
- glVertex3f (0.9, -0.9, 0);
- glTexCoord2f (0, 0);
- glVertex3f (-1.0, -1.0, 0);
- glTexCoord2f (0, inbuf->height);
- glVertex3f (-1.0, 1.0, 0);
- glTexCoord2f (inbuf->width, inbuf->height);
- glVertex3f (1.0, 1.0, 0);
- glEnd ();
-#endif
-
- glFlush ();
-
- glDeleteFramebuffersEXT (1, &fbo);
-
- gst_gl_display_unlock (display);
-
- return TRUE;
-}
diff --git a/gst-libs/gst/gl/gstglfilter.h b/gst-libs/gst/gl/gstglfilter.h
deleted file mode 100644
index 513d6e9..0000000
--- a/gst-libs/gst/gl/gstglfilter.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2007 David Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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 _GST_GL_FILTER_H_
-#define _GST_GL_FILTER_H_
-
-#include <gst/gst.h>
-#include <gst/video/video.h>
-#include <gst/base/gstbasetransform.h>
-#include <gstglbuffer.h>
-
-#define GST_TYPE_GL_FILTER (gst_gl_filter_get_type())
-#define GST_GL_FILTER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_FILTER,GstGLFilter))
-#define GST_IS_GL_FILTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GL_FILTER))
-#define GST_GL_FILTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_GL_FILTER,GstGLFilterClass))
-#define GST_IS_GL_FILTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_GL_FILTER))
-#define GST_GL_FILTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_GL_FILTER,GstGLFilterClass))
-typedef struct _GstGLFilter GstGLFilter;
-typedef struct _GstGLFilterClass GstGLFilterClass;
-
-typedef gboolean (*GstGLFilterProcessFunc) (GstGLFilter *filter,
- GstGLBuffer *inbuf, GstGLBuffer *outbuf);
-
-struct _GstGLFilter
-{
- GstBaseTransform base_transform;
-
- GstPad *srcpad;
- GstPad *sinkpad;
-
- /* < private > */
-
- GstGLDisplay *display;
- GstGLBufferFormat format;
- int width;
- int height;
-};
-
-struct _GstGLFilterClass
-{
- GstBaseTransformClass base_transform_class;
- GstGLFilterProcessFunc filter;
-};
-
-GType gst_gl_filter_get_type(void);
-
-#endif
-
diff --git a/gst-libs/gst/gst-i18n-plugin.h b/gst-libs/gst/gst-i18n-plugin.h
index 2c37a61..e379709 100644
--- a/gst-libs/gst/gst-i18n-plugin.h
+++ b/gst-libs/gst/gst-i18n-plugin.h
@@ -1,37 +1,37 @@
-/* GStreamer
- * Copyright (C) 2004 Thomas Vander Stichele <thomas@apestaart.org>
- *
- * gst-i18n-plugins.h: internationalization macros for the GStreamer plugins
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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 __GST_I18N_PLUGIN_H__
-#define __GST_I18N_PLUGIN_H__
-
-#include <locale.h> /* some people need it and some people don't */
-#include "gettext.h" /* included with gettext distribution and copied */
-
-#ifndef GETTEXT_PACKAGE
-#error You must define GETTEXT_PACKAGE before including this header.
-#endif
-
-/* we want to use shorthand _() for translating and N_() for marking */
-#define _(String) dgettext (GETTEXT_PACKAGE, String)
-#define N_(String) gettext_noop (String)
-/* FIXME: if we need it, we can add Q_ as well, like in glib */
-
-#endif /* __GST_I18N_PLUGIN_H__ */
+/* GStreamer
+ * Copyright (C) 2004 Thomas Vander Stichele <thomas@apestaart.org>
+ *
+ * gst-i18n-plugins.h: internationalization macros for the GStreamer plugins
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library 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 __GST_I18N_PLUGIN_H__
+#define __GST_I18N_PLUGIN_H__
+
+#include <locale.h> /* some people need it and some people don't */
+#include "gettext.h" /* included with gettext distribution and copied */
+
+#ifndef GETTEXT_PACKAGE
+#error You must define GETTEXT_PACKAGE before including this header.
+#endif
+
+/* we want to use shorthand _() for translating and N_() for marking */
+#define _(String) dgettext (GETTEXT_PACKAGE, String)
+#define N_(String) gettext_noop (String)
+/* FIXME: if we need it, we can add Q_ as well, like in glib */
+
+#endif /* __GST_I18N_PLUGIN_H__ */
diff --git a/gst-plugins-gl.doap b/gst-plugins-gl.doap
index f58961a..c962c7f 100644
--- a/gst-plugins-gl.doap
+++ b/gst-plugins-gl.doap
@@ -1,54 +1,54 @@
-<Project
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
- xmlns="http://usefulinc.com/ns/doap#"
- xmlns:foaf="http://xmlns.com/foaf/0.1/"
- xmlns:admin="http://webns.net/mvcb/">
-
- <name>GStreamer OpenGL Plug-ins</name>
- <shortname>gst-plugins-gl</shortname>
- <homepage rdf:resource="http://gstreamer.freedesktop.org/modules/gst-plugins-gl.html" />
- <created>2008-01-17</created>
- <shortdesc xml:lang="en">
-a collection of elements based on OpenGL
- </shortdesc>
- <description xml:lang="en">
-GStreamer OpenGL Plug-ins is a collection of GStreamer plug-ins and
-elements that use OpenGL for processing and display of video. It also
-contains helper libraries and base classes useful for writing elements
-that use OpenGL.
-</description>
- <category></category>
- <bug-database rdf:resource="http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer&amp;component=gst-plugins-gl" />
- <screenshots></screenshots>
- <mailing-list rdf:resource="http://lists.sourceforge.net/lists/listinfo/gstreamer-devel/" />
- <programming-language>C</programming-language>
- <license rdf:resource="http://usefulinc.com/doap/licenses/lgpl"/>
- <download-page rdf:resource="http://gstreamer.freedesktop.org/download/" />
-
- <repository>
- <CVSRepository>
- <anon-root>:pserver:anonymous@cvs.freedesktop.org:/cvs/gstreamer</anon-root>
- <module>gst-plugins-gl</module>
- <browse rdf:resource="http://webcvs.freedesktop.org/gstreamer/gst-plugins-gl/" />
- </CVSRepository>
- </repository>
-
- <release>
- <Version>
- <revision>0.10.0</revision>
- <branch>0.10</branch>
- <name>'Taint no sin</name>
- <created>2008-01-17</created>
- <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-gl/gst-plugins-gl-0.10.0.tar.bz2" />
- <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-gl/gst-plugins-gl-0.10.0.tar.gz" />
- </Version>
- </release>
-
- <maintainer>
- <foaf:Person>
- <foaf:name>David Schleef</foaf:name>
- </foaf:Person>
- </maintainer>
-
-</Project>
+<Project
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns="http://usefulinc.com/ns/doap#"
+ xmlns:foaf="http://xmlns.com/foaf/0.1/"
+ xmlns:admin="http://webns.net/mvcb/">
+
+ <name>GStreamer OpenGL Plug-ins</name>
+ <shortname>gst-plugins-gl</shortname>
+ <homepage rdf:resource="http://gstreamer.freedesktop.org/modules/gst-plugins-gl.html" />
+ <created>2008-01-17</created>
+ <shortdesc xml:lang="en">
+a collection of elements based on OpenGL
+ </shortdesc>
+ <description xml:lang="en">
+GStreamer OpenGL Plug-ins is a collection of GStreamer plug-ins and
+elements that use OpenGL for processing and display of video. It also
+contains helper libraries and base classes useful for writing elements
+that use OpenGL.
+</description>
+ <category></category>
+ <bug-database rdf:resource="http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer&amp;component=gst-plugins-gl" />
+ <screenshots></screenshots>
+ <mailing-list rdf:resource="http://lists.sourceforge.net/lists/listinfo/gstreamer-devel/" />
+ <programming-language>C</programming-language>
+ <license rdf:resource="http://usefulinc.com/doap/licenses/lgpl"/>
+ <download-page rdf:resource="http://gstreamer.freedesktop.org/download/" />
+
+ <repository>
+ <CVSRepository>
+ <anon-root>:pserver:anonymous@cvs.freedesktop.org:/cvs/gstreamer</anon-root>
+ <module>gst-plugins-gl</module>
+ <browse rdf:resource="http://webcvs.freedesktop.org/gstreamer/gst-plugins-gl/" />
+ </CVSRepository>
+ </repository>
+
+ <release>
+ <Version>
+ <revision>0.10.0</revision>
+ <branch>0.10</branch>
+ <name>'Taint no sin</name>
+ <created>2008-01-17</created>
+ <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-gl/gst-plugins-gl-0.10.0.tar.bz2" />
+ <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-gl/gst-plugins-gl-0.10.0.tar.gz" />
+ </Version>
+ </release>
+
+ <maintainer>
+ <foaf:Person>
+ <foaf:name>David Schleef</foaf:name>
+ </foaf:Person>
+ </maintainer>
+
+</Project>
diff --git a/gst-plugins-gl.spec.in b/gst-plugins-gl.spec.in
index 7455b2f..703c984 100644
--- a/gst-plugins-gl.spec.in
+++ b/gst-plugins-gl.spec.in
@@ -1,228 +1,228 @@
-%define majorminor @GST_MAJORMINOR@
-%define gstreamer gstreamer
-
-%define gst_minver 0.10.0
-
-Name: %{gstreamer}-plugins-base
-Version: @VERSION@
-Release: @PACKAGE_VERSION_RELEASE@.gst
-Summary: GStreamer streaming media framework plug-ins
-
-Group: Applications/Multimedia
-License: LGPL
-URL: http://gstreamer.freedesktop.org/
-Vendor: GStreamer Backpackers Team <package@gstreamer.freedesktop.org>
-Source: http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-
-Requires: %{gstreamer} >= %{gst_minver}
-BuildRequires: %{gstreamer}-devel >= %{gst_minver}
-
-BuildRequires: gcc-c++
-BuildRequires: gtk-doc >= 1.3
-
-@USE_GNOME_VFS_TRUE@Requires: gnome-vfs2 > 1.9.4.00
-@USE_GNOME_VFS_TRUE@BuildRequires: gnome-vfs2-devel > 1.9.4.00
-@USE_VORBIS_TRUE@Requires: libogg >= 1.0
-@USE_VORBIS_TRUE@Requires: libvorbis >= 1.0
-@USE_VORBIS_TRUE@BuildRequires: libogg-devel >= 1.0
-@USE_VORBIS_TRUE@BuildRequires: libvorbis-devel >= 1.0
-
-%description
-GStreamer is a streaming media framework, based on graphs of filters which
-operate on media data. Applications using this library can do anything
-from real-time sound processing to playing videos, and just about anything
-else media-related. Its plugin-based architecture means that new data
-types or processing capabilities can be added simply by installing new
-plug-ins.
-
-%prep
-%setup -q -n gst-plugins-base-%{version}
-export DOCS_ARE_INCOMPLETE_PLEASE_FIXME=0
-%build
-%configure \
- --enable-gtk-doc
-
-make %{?_smp_mflags}
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-%makeinstall
-
-# Clean out files that should not be part of the rpm.
-rm -f $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.la
-rm -f $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.a
-rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
-rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
-
-%find_lang gst-plugins-base-%{majorminor}
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files -f gst-plugins-base-%{majorminor}.lang
-%defattr(-, root, root)
-%doc AUTHORS COPYING README REQUIREMENTS gst-plugins-base.doap
-
-# helper programs
-%{_bindir}/gst-visualise-%{majorminor}
-%{_mandir}/man1/gst-visualise-%{majorminor}*
-
-# libraries
-%{_libdir}/libgstaudio-%{majorminor}.so.*
-%{_libdir}/libgstcdda-%{majorminor}.so*
-%{_libdir}/libgstinterfaces-%{majorminor}.so.*
-%{_libdir}/libgstnetbuffer-%{majorminor}.so*
-%{_libdir}/libgstpbutils-%{majorminor}.so*
-%{_libdir}/libgstriff-%{majorminor}.so.*
-%{_libdir}/libgstrtp-%{majorminor}.so*
-%{_libdir}/libgsttag-%{majorminor}.so.*
-%{_libdir}/libgstvideo-%{majorminor}.so.*
-%{_libdir}/libgstfft-%{majorminor}.so.*
-%{_libdir}/libgstrtsp-%{majorminor}.so.*
-%{_libdir}/libgstsdp-%{majorminor}.so.*
-
-# base plugins without external dependencies
-%{_libdir}/gstreamer-%{majorminor}/libgstadder.so
-%{_libdir}/gstreamer-%{majorminor}/libgstaudioconvert.so
-%{_libdir}/gstreamer-%{majorminor}/libgstffmpegcolorspace.so
-%{_libdir}/gstreamer-%{majorminor}/libgstdecodebin.so
-%{_libdir}/gstreamer-%{majorminor}/libgstdecodebin2.so
-%{_libdir}/gstreamer-%{majorminor}/libgstplaybin.so
-%{_libdir}/gstreamer-%{majorminor}/libgsttypefindfunctions.so
-%{_libdir}/gstreamer-%{majorminor}/libgstvideotestsrc.so
-%{_libdir}/gstreamer-%{majorminor}/libgstaudiorate.so
-%{_libdir}/gstreamer-%{majorminor}/libgstsubparse.so
-%{_libdir}/gstreamer-%{majorminor}/libgstvolume.so
-%{_libdir}/gstreamer-%{majorminor}/libgstvideorate.so
-%{_libdir}/gstreamer-%{majorminor}/libgstvideoscale.so
-%{_libdir}/gstreamer-%{majorminor}/libgsttcp.so
-%{_libdir}/gstreamer-%{majorminor}/libgstvideo4linux.so
-%{_libdir}/gstreamer-%{majorminor}/libgstaudioresample.so
-%{_libdir}/gstreamer-%{majorminor}/libgstaudiotestsrc.so
-%{_libdir}/gstreamer-%{majorminor}/libgstgdp.so
-%{_libdir}/gstreamer-%{majorminor}/libgstqueue2.so
-%{_libdir}/gstreamer-%{majorminor}/libgsturidecodebin.so
-
-# Here are packages not in the base plugins package but not dependant
-# on an external lib
-
-# @USE_GST_V4L2_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstvideo4linux2.so
-
-# base plugins with dependencies
-@USE_ALSA_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstalsa.so
-@USE_THEORA_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgsttheora.so
-@USE_GNOME_VFS_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstgnomevfs.so
-@USE_VORBIS_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstvorbis.so
-@USE_VORBIS_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstogg.so
-@USE_XVIDEO_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstximage*.so
-@USE_XVIDEO_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstxvimagesink.so
-@USE_LIBVISUAL_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstlibvisual.so
-@USE_PANGO_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstpango.so
-@USE_CDPARANOIA_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstcdparanoia.so
-%package devel
-Summary: GStreamer Plugin Library Headers
-Group: Development/Libraries
-Requires: %{gstreamer}-plugins-base = %{version}
-
-%description devel
-GStreamer Plugins Base library development and header files.
-
-%files devel
-%defattr(-, root, root)
-# plugin helper library headers
-%{_includedir}/gstreamer-%{majorminor}/gst/audio/audio.h
-%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstaudiofilter.h
-%{_includedir}/gstreamer-%{majorminor}/gst/audio/multichannel.h
-%{_includedir}/gstreamer-%{majorminor}/gst/floatcast/floatcast.h
-%{_includedir}/gstreamer-%{majorminor}/gst/riff/riff-ids.h
-%{_includedir}/gstreamer-%{majorminor}/gst/riff/riff-media.h
-%{_includedir}/gstreamer-%{majorminor}/gst/riff/riff-read.h
-%{_includedir}/gstreamer-%{majorminor}/gst/video/video.h
-%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/colorbalance.h
-%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/colorbalancechannel.h
-%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/interfaces-enumtypes.h
-%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/mixer.h
-%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/mixeroptions.h
-%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/mixertrack.h
-%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/navigation.h
-%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/propertyprobe.h
-%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/tuner.h
-%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/tunerchannel.h
-%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/tunernorm.h
-%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/xoverlay.h
-%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstaudiosrc.h
-%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstbaseaudiosrc.h
-%{_includedir}/gstreamer-%{majorminor}/gst/audio/multichannel-enumtypes.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtp/gstbasertpaudiopayload.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtp/gstbasertpdepayload.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtp/gstrtpbuffer.h
-%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstaudioclock.h
-%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstaudiosink.h
-%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstbaseaudiosink.h
-%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstringbuffer.h
-%{_includedir}/gstreamer-%{majorminor}/gst/tag/tag.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtp/gstbasertppayload.h
-%{_includedir}/gstreamer-%{majorminor}/gst/video/gstvideofilter.h
-%{_includedir}/gstreamer-%{majorminor}/gst/video/gstvideosink.h
-%{_includedir}/gstreamer-%{majorminor}/gst/netbuffer/gstnetbuffer.h
-%{_includedir}/gstreamer-%{majorminor}/gst/cdda/gstcddabasesrc.h
-%{_includedir}/gstreamer-%{majorminor}/gst/audio/mixerutils.h
-%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/videoorientation.h
-%{_includedir}/gstreamer-%{majorminor}/gst/pbutils/descriptions.h
-%{_includedir}/gstreamer-%{majorminor}/gst/pbutils/install-plugins.h
-%{_includedir}/gstreamer-%{majorminor}/gst/pbutils/missing-plugins.h
-%{_includedir}/gstreamer-%{majorminor}/gst/pbutils/pbutils.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtp/gstrtcpbuffer.h
-%{_includedir}/gstreamer-%{majorminor}/gst/fft/gstfft.h
-%{_includedir}/gstreamer-%{majorminor}/gst/fft/gstfftf32.h
-%{_includedir}/gstreamer-%{majorminor}/gst/fft/gstfftf64.h
-%{_includedir}/gstreamer-%{majorminor}/gst/fft/gstffts16.h
-%{_includedir}/gstreamer-%{majorminor}/gst/fft/gstffts32.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtsp-enumtypes.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtspbase64.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtspconnection.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtspdefs.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtspextension.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtspmessage.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtsprange.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtsptransport.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtspurl.h
-%{_includedir}/gstreamer-%{majorminor}/gst/sdp/gstsdp.h
-%{_includedir}/gstreamer-%{majorminor}/gst/sdp/gstsdpmessage.h
-%{_includedir}/gstreamer-%{majorminor}/gst/rtp/gstrtppayloads.h
-%{_includedir}/gstreamer-%{majorminor}/gst/tag/gsttagdemux.h
-%{_libdir}/libgstfft-%{majorminor}.so
-%{_libdir}/libgstrtsp-%{majorminor}.so
-%{_libdir}/libgstsdp-%{majorminor}.so
-%{_libdir}/libgstaudio-%{majorminor}.so
-%{_libdir}/libgstriff-%{majorminor}.so
-%{_libdir}/libgsttag-%{majorminor}.so
-%{_libdir}/libgstvideo-%{majorminor}.so
-%{_libdir}/libgstrtp-%{majorminor}.so
-%{_libdir}/libgstinterfaces-%{majorminor}.so
-%{_libdir}/libgstnetbuffer-%{majorminor}.so
-%{_libdir}/libgstpbutils-%{majorminor}.so
-%{_libdir}/libgstcdda-%{majorminor}.so
-
-# pkg-config files
-%{_libdir}/pkgconfig/gstreamer-plugins-base-%{majorminor}.pc
-
-# gtk-doc documentation
-%doc %{_datadir}/gtk-doc/html/gst-plugins-base-libs-%{majorminor}
-%doc %{_datadir}/gtk-doc/html/gst-plugins-base-plugins-%{majorminor}
-
-%changelog
-* Fri Dec 15 2006 Thomas Vander Stichele <thomas at apestaart dot org>
-- add doap file
-- cleanups
-
-* Fri Sep 02 2005 Thomas Vander Stichele <thomas at apestaart dot org>
-- clean up a little
-
-* Fri May 6 2005 Christian Schaller <christian at fluendo dot com>
-- Added libgstaudiorate and libgstsubparse to spec file
-
-* Thu May 5 2005 Christian Schaller <christian at fluendo dot com>
-- first attempt at spec file for gst-plugins-base
+%define majorminor @GST_MAJORMINOR@
+%define gstreamer gstreamer
+
+%define gst_minver 0.10.0
+
+Name: %{gstreamer}-plugins-base
+Version: @VERSION@
+Release: @PACKAGE_VERSION_RELEASE@.gst
+Summary: GStreamer streaming media framework plug-ins
+
+Group: Applications/Multimedia
+License: LGPL
+URL: http://gstreamer.freedesktop.org/
+Vendor: GStreamer Backpackers Team <package@gstreamer.freedesktop.org>
+Source: http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-%{version}.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+Requires: %{gstreamer} >= %{gst_minver}
+BuildRequires: %{gstreamer}-devel >= %{gst_minver}
+
+BuildRequires: gcc-c++
+BuildRequires: gtk-doc >= 1.3
+
+@USE_GNOME_VFS_TRUE@Requires: gnome-vfs2 > 1.9.4.00
+@USE_GNOME_VFS_TRUE@BuildRequires: gnome-vfs2-devel > 1.9.4.00
+@USE_VORBIS_TRUE@Requires: libogg >= 1.0
+@USE_VORBIS_TRUE@Requires: libvorbis >= 1.0
+@USE_VORBIS_TRUE@BuildRequires: libogg-devel >= 1.0
+@USE_VORBIS_TRUE@BuildRequires: libvorbis-devel >= 1.0
+
+%description
+GStreamer is a streaming media framework, based on graphs of filters which
+operate on media data. Applications using this library can do anything
+from real-time sound processing to playing videos, and just about anything
+else media-related. Its plugin-based architecture means that new data
+types or processing capabilities can be added simply by installing new
+plug-ins.
+
+%prep
+%setup -q -n gst-plugins-base-%{version}
+export DOCS_ARE_INCOMPLETE_PLEASE_FIXME=0
+%build
+%configure \
+ --enable-gtk-doc
+
+make %{?_smp_mflags}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+%makeinstall
+
+# Clean out files that should not be part of the rpm.
+rm -f $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.a
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
+
+%find_lang gst-plugins-base-%{majorminor}
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files -f gst-plugins-base-%{majorminor}.lang
+%defattr(-, root, root)
+%doc AUTHORS COPYING README REQUIREMENTS gst-plugins-base.doap
+
+# helper programs
+%{_bindir}/gst-visualise-%{majorminor}
+%{_mandir}/man1/gst-visualise-%{majorminor}*
+
+# libraries
+%{_libdir}/libgstaudio-%{majorminor}.so.*
+%{_libdir}/libgstcdda-%{majorminor}.so*
+%{_libdir}/libgstinterfaces-%{majorminor}.so.*
+%{_libdir}/libgstnetbuffer-%{majorminor}.so*
+%{_libdir}/libgstpbutils-%{majorminor}.so*
+%{_libdir}/libgstriff-%{majorminor}.so.*
+%{_libdir}/libgstrtp-%{majorminor}.so*
+%{_libdir}/libgsttag-%{majorminor}.so.*
+%{_libdir}/libgstvideo-%{majorminor}.so.*
+%{_libdir}/libgstfft-%{majorminor}.so.*
+%{_libdir}/libgstrtsp-%{majorminor}.so.*
+%{_libdir}/libgstsdp-%{majorminor}.so.*
+
+# base plugins without external dependencies
+%{_libdir}/gstreamer-%{majorminor}/libgstadder.so
+%{_libdir}/gstreamer-%{majorminor}/libgstaudioconvert.so
+%{_libdir}/gstreamer-%{majorminor}/libgstffmpegcolorspace.so
+%{_libdir}/gstreamer-%{majorminor}/libgstdecodebin.so
+%{_libdir}/gstreamer-%{majorminor}/libgstdecodebin2.so
+%{_libdir}/gstreamer-%{majorminor}/libgstplaybin.so
+%{_libdir}/gstreamer-%{majorminor}/libgsttypefindfunctions.so
+%{_libdir}/gstreamer-%{majorminor}/libgstvideotestsrc.so
+%{_libdir}/gstreamer-%{majorminor}/libgstaudiorate.so
+%{_libdir}/gstreamer-%{majorminor}/libgstsubparse.so
+%{_libdir}/gstreamer-%{majorminor}/libgstvolume.so
+%{_libdir}/gstreamer-%{majorminor}/libgstvideorate.so
+%{_libdir}/gstreamer-%{majorminor}/libgstvideoscale.so
+%{_libdir}/gstreamer-%{majorminor}/libgsttcp.so
+%{_libdir}/gstreamer-%{majorminor}/libgstvideo4linux.so
+%{_libdir}/gstreamer-%{majorminor}/libgstaudioresample.so
+%{_libdir}/gstreamer-%{majorminor}/libgstaudiotestsrc.so
+%{_libdir}/gstreamer-%{majorminor}/libgstgdp.so
+%{_libdir}/gstreamer-%{majorminor}/libgstqueue2.so
+%{_libdir}/gstreamer-%{majorminor}/libgsturidecodebin.so
+
+# Here are packages not in the base plugins package but not dependant
+# on an external lib
+
+# @USE_GST_V4L2_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstvideo4linux2.so
+
+# base plugins with dependencies
+@USE_ALSA_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstalsa.so
+@USE_THEORA_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgsttheora.so
+@USE_GNOME_VFS_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstgnomevfs.so
+@USE_VORBIS_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstvorbis.so
+@USE_VORBIS_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstogg.so
+@USE_XVIDEO_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstximage*.so
+@USE_XVIDEO_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstxvimagesink.so
+@USE_LIBVISUAL_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstlibvisual.so
+@USE_PANGO_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstpango.so
+@USE_CDPARANOIA_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstcdparanoia.so
+%package devel
+Summary: GStreamer Plugin Library Headers
+Group: Development/Libraries
+Requires: %{gstreamer}-plugins-base = %{version}
+
+%description devel
+GStreamer Plugins Base library development and header files.
+
+%files devel
+%defattr(-, root, root)
+# plugin helper library headers
+%{_includedir}/gstreamer-%{majorminor}/gst/audio/audio.h
+%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstaudiofilter.h
+%{_includedir}/gstreamer-%{majorminor}/gst/audio/multichannel.h
+%{_includedir}/gstreamer-%{majorminor}/gst/floatcast/floatcast.h
+%{_includedir}/gstreamer-%{majorminor}/gst/riff/riff-ids.h
+%{_includedir}/gstreamer-%{majorminor}/gst/riff/riff-media.h
+%{_includedir}/gstreamer-%{majorminor}/gst/riff/riff-read.h
+%{_includedir}/gstreamer-%{majorminor}/gst/video/video.h
+%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/colorbalance.h
+%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/colorbalancechannel.h
+%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/interfaces-enumtypes.h
+%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/mixer.h
+%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/mixeroptions.h
+%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/mixertrack.h
+%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/navigation.h
+%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/propertyprobe.h
+%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/tuner.h
+%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/tunerchannel.h
+%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/tunernorm.h
+%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/xoverlay.h
+%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstaudiosrc.h
+%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstbaseaudiosrc.h
+%{_includedir}/gstreamer-%{majorminor}/gst/audio/multichannel-enumtypes.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtp/gstbasertpaudiopayload.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtp/gstbasertpdepayload.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtp/gstrtpbuffer.h
+%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstaudioclock.h
+%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstaudiosink.h
+%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstbaseaudiosink.h
+%{_includedir}/gstreamer-%{majorminor}/gst/audio/gstringbuffer.h
+%{_includedir}/gstreamer-%{majorminor}/gst/tag/tag.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtp/gstbasertppayload.h
+%{_includedir}/gstreamer-%{majorminor}/gst/video/gstvideofilter.h
+%{_includedir}/gstreamer-%{majorminor}/gst/video/gstvideosink.h
+%{_includedir}/gstreamer-%{majorminor}/gst/netbuffer/gstnetbuffer.h
+%{_includedir}/gstreamer-%{majorminor}/gst/cdda/gstcddabasesrc.h
+%{_includedir}/gstreamer-%{majorminor}/gst/audio/mixerutils.h
+%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/videoorientation.h
+%{_includedir}/gstreamer-%{majorminor}/gst/pbutils/descriptions.h
+%{_includedir}/gstreamer-%{majorminor}/gst/pbutils/install-plugins.h
+%{_includedir}/gstreamer-%{majorminor}/gst/pbutils/missing-plugins.h
+%{_includedir}/gstreamer-%{majorminor}/gst/pbutils/pbutils.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtp/gstrtcpbuffer.h
+%{_includedir}/gstreamer-%{majorminor}/gst/fft/gstfft.h
+%{_includedir}/gstreamer-%{majorminor}/gst/fft/gstfftf32.h
+%{_includedir}/gstreamer-%{majorminor}/gst/fft/gstfftf64.h
+%{_includedir}/gstreamer-%{majorminor}/gst/fft/gstffts16.h
+%{_includedir}/gstreamer-%{majorminor}/gst/fft/gstffts32.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtsp-enumtypes.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtspbase64.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtspconnection.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtspdefs.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtspextension.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtspmessage.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtsprange.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtsptransport.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtsp/gstrtspurl.h
+%{_includedir}/gstreamer-%{majorminor}/gst/sdp/gstsdp.h
+%{_includedir}/gstreamer-%{majorminor}/gst/sdp/gstsdpmessage.h
+%{_includedir}/gstreamer-%{majorminor}/gst/rtp/gstrtppayloads.h
+%{_includedir}/gstreamer-%{majorminor}/gst/tag/gsttagdemux.h
+%{_libdir}/libgstfft-%{majorminor}.so
+%{_libdir}/libgstrtsp-%{majorminor}.so
+%{_libdir}/libgstsdp-%{majorminor}.so
+%{_libdir}/libgstaudio-%{majorminor}.so
+%{_libdir}/libgstriff-%{majorminor}.so
+%{_libdir}/libgsttag-%{majorminor}.so
+%{_libdir}/libgstvideo-%{majorminor}.so
+%{_libdir}/libgstrtp-%{majorminor}.so
+%{_libdir}/libgstinterfaces-%{majorminor}.so
+%{_libdir}/libgstnetbuffer-%{majorminor}.so
+%{_libdir}/libgstpbutils-%{majorminor}.so
+%{_libdir}/libgstcdda-%{majorminor}.so
+
+# pkg-config files
+%{_libdir}/pkgconfig/gstreamer-plugins-base-%{majorminor}.pc
+
+# gtk-doc documentation
+%doc %{_datadir}/gtk-doc/html/gst-plugins-base-libs-%{majorminor}
+%doc %{_datadir}/gtk-doc/html/gst-plugins-base-plugins-%{majorminor}
+
+%changelog
+* Fri Dec 15 2006 Thomas Vander Stichele <thomas at apestaart dot org>
+- add doap file
+- cleanups
+
+* Fri Sep 02 2005 Thomas Vander Stichele <thomas at apestaart dot org>
+- clean up a little
+
+* Fri May 6 2005 Christian Schaller <christian at fluendo dot com>
+- Added libgstaudiorate and libgstsubparse to spec file
+
+* Thu May 5 2005 Christian Schaller <christian at fluendo dot com>
+- first attempt at spec file for gst-plugins-base
diff --git a/gst/Makefile.am b/gst/Makefile.am
index f5a0011..8103711 100644
--- a/gst/Makefile.am
+++ b/gst/Makefile.am
@@ -1,3 +1,3 @@
-SUBDIRS = $(GST_PLUGINS_SELECTED)
-DIST_SUBDIRS = $(GST_PLUGINS_ALL)
-
+SUBDIRS = $(GST_PLUGINS_SELECTED)
+DIST_SUBDIRS = $(GST_PLUGINS_ALL)
+
diff --git a/gst/gl/.cvsignore b/gst/gl/.cvsignore
deleted file mode 100644
index ff7ee2d..0000000
--- a/gst/gl/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-color_matrix
diff --git a/gst/gl/BUGS b/gst/gl/BUGS
index 795d352..d219708 100644
--- a/gst/gl/BUGS
+++ b/gst/gl/BUGS
@@ -1,19 +1,5 @@
-
-known issues:
-
- - negotiation is shite. I don't want to know about any failed
- negotiations or failed prerolls.
-
- - teardown sometimes fails.
-
- - sharing a GL context among a bunch of elements that stomp all
- over it is potential fail.
-
-
-intel driver:
-
- - rendering to texture ignores the color matrix. This causes any
- YUV->RGB conversion to fail.
-
- - YUY2 and UYVY conversions in the driver use the wrong matrix.
-
+
+known issues:
+
+ -
+
diff --git a/gst/gl/Makefile.am b/gst/gl/Makefile.am
index 66bb6f0..f916d08 100644
--- a/gst/gl/Makefile.am
+++ b/gst/gl/Makefile.am
@@ -1,32 +1,27 @@
-
-plugin_LTLIBRARIES = libgstopengl.la
-
-noinst_PROGRAMS = color_matrix
-
-AM_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
-AM_LIBS = $(GST_BASE_LIBS)
-
-libgstopengl_la_SOURCES = \
- glimagesink.c \
- glimagesink.h \
- gstopengl.c \
- gstglupload.c \
- gstgldownload.c \
- gstgltestsrc.c \
- gstgltestsrc.h \
- gltestsrc.c \
- gltestsrc.h \
- gstglfilterexample.c \
- gstglconvert.c
-# check order of CFLAGS and LIBS, shouldn't the order be the other way around
-# (like in AM_CFLAGS)?
-libgstopengl_la_CFLAGS = $(GST_CFLAGS) $(X_CFLAGS) $(GST_BASE_CFLAGS) \
- $(GST_PLUGINS_BASE_CFLAGS) $(GL_CFLAGS) \
- -I$(top_srcdir)/gst-libs \
- -I$(top_srcdir)/gst-libs/gst/gl
-libgstopengl_la_LIBADD = \
- $(top_builddir)/gst-libs/gst/gl/libgstgl-$(GST_MAJORMINOR).la \
- $(GST_BASE_LIBS) \
- $(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-$(GST_MAJORMINOR)
-libgstopengl_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-
+
+plugin_LTLIBRARIES = libgstopengl.la
+
+AM_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+AM_LIBS = $(GST_BASE_LIBS)
+
+libgstopengl_la_SOURCES = \
+ gstopengl.c \
+ glimagesink.c \
+ glimagesink.h \
+ gstglgraphicmaker.c \
+ gstglgraphicmaker.h \
+ gstglvideomaker.c \
+ gstglvideomaker.h
+
+# check order of CFLAGS and LIBS, shouldn't the order be the other way around
+# (like in AM_CFLAGS)?
+libgstopengl_la_CFLAGS = $(GST_CFLAGS) $(X_CFLAGS) $(GST_BASE_CFLAGS) \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GL_CFLAGS) \
+ -I$(top_srcdir)/gst-libs \
+ -I$(top_srcdir)/gst-libs/gst/gl
+libgstopengl_la_LIBADD = \
+ $(top_builddir)/gst-libs/gst/gl/libgstgl-$(GST_MAJORMINOR).la \
+ $(GST_BASE_LIBS) \
+ $(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-$(GST_MAJORMINOR)
+libgstopengl_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+
diff --git a/gst/gl/color_matrix.c b/gst/gl/color_matrix.c
deleted file mode 100644
index 255184f..0000000
--- a/gst/gl/color_matrix.c
+++ /dev/null
@@ -1,243 +0,0 @@
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#include <string.h>
-
-typedef struct
-{
- double comp[3];
-} Color;
-
-typedef struct
-{
- Color pre_offset;
- double matrix[3][3];
- Color post_offset;
-} ColorMatrix;
-
-
-/* convert uint8 RGB values to float */
-ColorMatrix rgb255_to_rgb = {
- {{0, 0, 0}},
- {{(1 / 255.0), 0, 0},
- {0, (1 / 255.0), 0},
- {0, 0, (1 / 255.0)}},
- {{0, 0, 0}}
-};
-ColorMatrix rgb_to_rgb255;
-
-/* convert uint8 YUV values to float as per ITU-R.601
- * technically, Y, Cr, Cb to E_Y, E_C_B, E_C_R */
-ColorMatrix ycbcr601_to_yuv = {
- {{-16, -128, -128}},
- {{(1 / 219.0), 0, 0},
- {0, (1 / 224.0), 0},
- {0, 0, (1 / 224.0)}},
- {{0, 0, 0}}
-};
-ColorMatrix yuv_to_ycbcr601;
-
-/* convert RGB to YUV as per ITU-R.601
- * technically, E_R, E_G, E_B to E_Y, E_C_B, E_C_R */
-ColorMatrix rgb_to_yuv = {
- {{0, 0, 0}},
- {{0.299, 0.587, 0.114},
- {0.500, -0.419, -0.081},
- {-0.169, -0.331, 0.500}},
- {{0, 0, 0}}
-};
-ColorMatrix yuv_to_rgb;
-
-ColorMatrix compress = {
- {{0, 0, 0}},
- {{0.50, 0, 0},
- {0, 0.5, 0},
- {0, 0, 0.500}},
- {{0.25, 0.25, 0.25}}
-};
-
-/* red mask */
-ColorMatrix red_mask = {
- {{0, 0, 0}},
- {{1, 1, 1},
- {0, 0, 0},
- {0, 0, 0}},
- {{0, 0, 0}}
-};
-
-double colors[][3] = {
- {0, 0, 0},
- {255, 0, 0},
- {0, 255, 0},
- {0, 0, 255}
-};
-
-
-void
-color_dump (const double *a)
-{
- printf (" %g, %g, %g\n", a[0], a[1], a[2]);
-}
-
-void
-color_matrix_dump (ColorMatrix * m)
-{
- printf ("pre: %g, %g, %g\n",
- m->pre_offset.comp[0], m->pre_offset.comp[1], m->pre_offset.comp[2]);
- printf (" %g, %g, %g\n", m->matrix[0][0], m->matrix[0][1], m->matrix[0][2]);
- printf (" %g, %g, %g\n", m->matrix[1][0], m->matrix[1][1], m->matrix[1][2]);
- printf (" %g, %g, %g\n", m->matrix[2][0], m->matrix[2][1], m->matrix[2][2]);
- printf ("post: %g, %g, %g\n",
- m->post_offset.comp[0], m->post_offset.comp[1], m->post_offset.comp[2]);
-}
-
-void
-color_matrix_apply_color (Color * a, const ColorMatrix * b)
-{
- Color d;
- int i;
-
- a->comp[0] += b->pre_offset.comp[0];
- a->comp[1] += b->pre_offset.comp[1];
- a->comp[2] += b->pre_offset.comp[2];
-
- for (i = 0; i < 3; i++) {
- d.comp[i] = a->comp[0] * b->matrix[i][0];
- d.comp[i] += a->comp[1] * b->matrix[i][1];
- d.comp[i] += a->comp[2] * b->matrix[i][2];
- }
-
- d.comp[0] += b->post_offset.comp[0];
- d.comp[1] += b->post_offset.comp[1];
- d.comp[2] += b->post_offset.comp[2];
-
- *a = d;
-}
-
-void
-color_matrix_init (ColorMatrix * a)
-{
- memset (a, 0, sizeof (*a));
- a->matrix[0][0] = 1.0;
- a->matrix[1][1] = 1.0;
- a->matrix[2][2] = 1.0;
-}
-
-void
-color_matrix_apply (ColorMatrix * a, ColorMatrix * b)
-{
- ColorMatrix d;
- int i, j;
-
- d.pre_offset = a->pre_offset;
-
- d.post_offset = a->post_offset;
- color_matrix_apply_color (&d.post_offset, b);
-
- for (j = 0; j < 3; j++) {
- for (i = 0; i < 3; i++) {
- d.matrix[i][j] =
- a->matrix[i][0] * b->matrix[0][j] +
- a->matrix[i][1] * b->matrix[1][j] + a->matrix[i][2] * b->matrix[2][j];
- }
- }
-
- *a = d;
-}
-
-void
-color_matrix_invert (ColorMatrix * a, ColorMatrix * b)
-{
- int i, j;
- double det;
-
- a->post_offset.comp[0] = -b->pre_offset.comp[0];
- a->post_offset.comp[1] = -b->pre_offset.comp[1];
- a->post_offset.comp[2] = -b->pre_offset.comp[2];
-
- for (j = 0; j < 3; j++) {
- for (i = 0; i < 3; i++) {
- a->matrix[j][i] =
- b->matrix[(i + 1) % 3][(j + 1) % 3] * b->matrix[(i + 2) % 3][(j +
- 2) % 3] - b->matrix[(i + 1) % 3][(j + 2) % 3] * b->matrix[(i +
- 2) % 3][(j + 1) % 3];
- }
- }
-
- det = a->matrix[0][0] * b->matrix[0][0];
- det += a->matrix[0][1] * b->matrix[1][0];
- det += a->matrix[0][2] * b->matrix[2][0];
-
- for (j = 0; j < 3; j++) {
- for (i = 0; i < 3; i++) {
- a->matrix[j][i] /= det;
- }
- }
-
- a->pre_offset.comp[0] = -b->post_offset.comp[0];
- a->pre_offset.comp[1] = -b->post_offset.comp[1];
- a->pre_offset.comp[2] = -b->post_offset.comp[2];
-}
-
-void
-init (void)
-{
- color_matrix_invert (&yuv_to_rgb, &rgb_to_yuv);
- color_matrix_invert (&yuv_to_ycbcr601, &ycbcr601_to_yuv);
- color_matrix_invert (&rgb_to_rgb255, &rgb255_to_rgb);
-#if 0
- color_matrix_dump (&yuv_to_rgb);
- color_matrix_dump (&yuv_to_ycbcr601);
- color_matrix_dump (&rgb_to_rgb255);
-#endif
-}
-
-int
-main (int argc, char *argv[])
-{
- ColorMatrix want;
- ColorMatrix actual;
- ColorMatrix actual_inv;
- ColorMatrix a;
-
- init ();
-
-#if 0
- int i;
-
- for (i = 0; i < 4; i++) {
- double color[3];
-
- printf ("%d:\n", i);
-
- color_copy (color, colors[i]);
- color_matrix_apply_color (color, &rgb255_to_rgb);
- color_matrix_apply_color (color, &rgb_to_yuv);
- color_dump (color);
- }
-#endif
-
- color_matrix_init (&want);
- color_matrix_apply (&want, &ycbcr601_to_yuv);
- color_matrix_apply (&want, &yuv_to_rgb);
- color_matrix_apply (&want, &compress);
- color_matrix_apply (&want, &compress);
- //color_matrix_apply (&want, &compress);
-
- color_matrix_init (&actual);
- color_matrix_apply (&actual, &rgb255_to_rgb);
-
- /* calc X such that actual * X = want */
-
- color_matrix_invert (&actual_inv, &actual);
-
- a = actual_inv;
- color_matrix_apply (&a, &want);
-
- color_matrix_dump (&a);
-
-
- return 0;
-}
diff --git a/gst/gl/glimagesink.c b/gst/gl/glimagesink.c
deleted file mode 100644
index 9f0912a..0000000
--- a/gst/gl/glimagesink.c
+++ /dev/null
@@ -1,561 +0,0 @@
-/* GStreamer
- * Copyright (C) 2003 Julien Moutte <julien@moutte.net>
- * Copyright (C) 2005,2006,2007 David A. Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-
-#include <gst/gst.h>
-#include <gst/interfaces/xoverlay.h>
-#include <gst/video/gstvideosink.h>
-#include <gst/video/video.h>
-#include "gstglbuffer.h"
-
-#include <string.h>
-
-#include <glimagesink.h>
-
-GST_DEBUG_CATEGORY (gst_debug_glimage_sink);
-#define GST_CAT_DEFAULT gst_debug_glimage_sink
-
-static void gst_glimage_sink_init_interfaces (GType type);
-
-static void gst_glimage_sink_finalize (GObject * object);
-static void gst_glimage_sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * param_spec);
-static void gst_glimage_sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * param_spec);
-
-static GstStateChangeReturn
-gst_glimage_sink_change_state (GstElement * element, GstStateChange transition);
-
-static void gst_glimage_sink_get_times (GstBaseSink * bsink, GstBuffer * buf,
- GstClockTime * start, GstClockTime * end);
-static GstCaps *gst_glimage_sink_get_caps (GstBaseSink * bsink);
-static gboolean gst_glimage_sink_set_caps (GstBaseSink * bsink, GstCaps * caps);
-static GstFlowReturn gst_glimage_sink_render (GstBaseSink * bsink,
- GstBuffer * buf);
-static gboolean gst_glimage_sink_start (GstBaseSink * bsink);
-static gboolean gst_glimage_sink_stop (GstBaseSink * bsink);
-static gboolean gst_glimage_sink_unlock (GstBaseSink * bsink);
-
-static void gst_glimage_sink_xoverlay_init (GstXOverlayClass * iface);
-static void gst_glimage_sink_set_xwindow_id (GstXOverlay * overlay,
- XID window_id);
-static void gst_glimage_sink_expose (GstXOverlay * overlay);
-static void gst_glimage_sink_set_event_handling (GstXOverlay * overlay,
- gboolean handle_events);
-
-static gboolean gst_glimage_sink_interface_supported (GstImplementsInterface *
- iface, GType type);
-static void gst_glimage_sink_implements_init (GstImplementsInterfaceClass *
- klass);
-
-//static void gst_glimage_sink_update_caps (GstGLImageSink * glimage_sink);
-
-static const GstElementDetails gst_glimage_sink_details =
-GST_ELEMENT_DETAILS ("OpenGL video sink",
- "Sink/Video",
- "A videosink based on OpenGL",
- "David Schleef <ds@schleef.org>");
-
-#ifdef GL_YCBCR_MESA
-#define YUV_CAPS ";" GST_VIDEO_CAPS_YUV ("{ AYUV, UYVY, YUY2 }")
-#else
-#define YUV_CAPS
-#endif
-static GstStaticPadTemplate gst_glimage_sink_template =
- GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_GL_VIDEO_CAPS ";"
- GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_BGRx ";"
- GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR ";"
- GST_VIDEO_CAPS_YUV ("{ AYUV, UYVY, YUY2 }"))
- );
-
-enum
-{
- ARG_0,
- ARG_DISPLAY
-};
-
-#define DEBUG_INIT(bla) do { \
- GST_DEBUG_CATEGORY_INIT (gst_debug_glimage_sink, "glimagesink", 0, "glimagesink element"); \
- gst_glimage_sink_init_interfaces(bla); \
-}while(0);
-
-
-GST_BOILERPLATE_FULL (GstGLImageSink, gst_glimage_sink, GstVideoSink,
- GST_TYPE_VIDEO_SINK, DEBUG_INIT);
-
-static void
-gst_glimage_sink_init_interfaces (GType type)
-{
- static const GInterfaceInfo overlay_info = {
- (GInterfaceInitFunc) gst_glimage_sink_xoverlay_init,
- NULL,
- NULL
- };
- static const GInterfaceInfo implements_info = {
- (GInterfaceInitFunc) gst_glimage_sink_implements_init,
- NULL,
- NULL
- };
-
- g_type_add_interface_static (type, GST_TYPE_IMPLEMENTS_INTERFACE,
- &implements_info);
- g_type_add_interface_static (type, GST_TYPE_X_OVERLAY, &overlay_info);
-}
-
-static void
-gst_glimage_sink_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details (element_class, &gst_glimage_sink_details);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_glimage_sink_template));
-
-}
-
-static void
-gst_glimage_sink_class_init (GstGLImageSinkClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
- GstBaseSinkClass *gstbasesink_class;
-
- gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
- gstbasesink_class = (GstBaseSinkClass *) klass;
-
- gobject_class->set_property = gst_glimage_sink_set_property;
- gobject_class->get_property = gst_glimage_sink_get_property;
-
- g_object_class_install_property (gobject_class, ARG_DISPLAY,
- g_param_spec_string ("display", "Display", "X Display name",
- NULL, G_PARAM_READWRITE));
-
- gobject_class->finalize = gst_glimage_sink_finalize;
-
- gstelement_class->change_state = gst_glimage_sink_change_state;
-
- if (0)
- gstbasesink_class->get_caps = gst_glimage_sink_get_caps;
- gstbasesink_class->set_caps = gst_glimage_sink_set_caps;
- gstbasesink_class->get_times = gst_glimage_sink_get_times;
- gstbasesink_class->preroll = gst_glimage_sink_render;
- gstbasesink_class->render = gst_glimage_sink_render;
- gstbasesink_class->start = gst_glimage_sink_start;
- gstbasesink_class->stop = gst_glimage_sink_stop;
- gstbasesink_class->unlock = gst_glimage_sink_unlock;
-}
-
-static void
-gst_glimage_sink_init (GstGLImageSink * glimage_sink,
- GstGLImageSinkClass * glimage_sink_class)
-{
-
- glimage_sink->display_name = NULL;
- //gst_glimage_sink_update_caps (glimage_sink);
-}
-
-static void
-gst_glimage_sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstGLImageSink *glimage_sink;
-
- g_return_if_fail (GST_IS_GLIMAGE_SINK (object));
-
- glimage_sink = GST_GLIMAGE_SINK (object);
-
- switch (prop_id) {
- case ARG_DISPLAY:
- g_free (glimage_sink->display_name);
- glimage_sink->display_name = g_strdup (g_value_get_string (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_glimage_sink_finalize (GObject * object)
-{
- GstGLImageSink *glimage_sink;
-
- g_return_if_fail (GST_IS_GLIMAGE_SINK (object));
-
- glimage_sink = GST_GLIMAGE_SINK (object);
-
- if (glimage_sink->caps) {
- gst_caps_unref (glimage_sink->caps);
- }
- g_free (glimage_sink->display_name);
-}
-
-static void
-gst_glimage_sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstGLImageSink *glimage_sink;
-
- g_return_if_fail (GST_IS_GLIMAGE_SINK (object));
-
- glimage_sink = GST_GLIMAGE_SINK (object);
-
- switch (prop_id) {
- case ARG_DISPLAY:
- g_value_set_string (value, glimage_sink->display_name);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-/*
- * GstElement methods
- */
-
-static GstStateChangeReturn
-gst_glimage_sink_change_state (GstElement * element, GstStateChange transition)
-{
- GstGLImageSink *glimage_sink;
- GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-
- GST_DEBUG ("change state");
-
- glimage_sink = GST_GLIMAGE_SINK (element);
-
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- break;
- case GST_STATE_CHANGE_READY_TO_PAUSED:
- break;
- case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
- break;
- default:
- break;
- }
-
- ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
- if (ret == GST_STATE_CHANGE_FAILURE)
- return ret;
-
- switch (transition) {
- case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
- break;
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- /* FIXME clear window */
- glimage_sink->fps_n = 0;
- glimage_sink->fps_d = 1;
- GST_VIDEO_SINK_WIDTH (glimage_sink) = 0;
- GST_VIDEO_SINK_HEIGHT (glimage_sink) = 0;
- break;
- case GST_STATE_CHANGE_READY_TO_NULL:
- /* FIXME dispose of window */
- break;
- default:
- break;
- }
-
- return ret;
-}
-
-/*
- * GstBaseSink methods
- */
-
-static gboolean
-gst_glimage_sink_start (GstBaseSink * bsink)
-{
- GstGLImageSink *glimage_sink;
-
- GST_DEBUG ("start");
-
- glimage_sink = GST_GLIMAGE_SINK (bsink);
-
- if (glimage_sink->display && glimage_sink->window_id) {
- gst_gl_display_set_window (glimage_sink->display, glimage_sink->window_id);
- gst_gl_display_set_visible (glimage_sink->display, TRUE);
- }
-
- GST_DEBUG ("start done");
-
- return TRUE;
-}
-
-static gboolean
-gst_glimage_sink_stop (GstBaseSink * bsink)
-{
- GstGLImageSink *glimage_sink;
-
- GST_DEBUG ("stop");
-
- glimage_sink = GST_GLIMAGE_SINK (bsink);
-
- if (glimage_sink->stored_buffer) {
- gst_buffer_unref (glimage_sink->stored_buffer);
- glimage_sink->stored_buffer = NULL;
- }
- if (glimage_sink->display) {
- gst_gl_display_set_visible (glimage_sink->display, FALSE);
- g_object_unref (glimage_sink->display);
- glimage_sink->display = NULL;
- }
-
- return TRUE;
-}
-
-static gboolean
-gst_glimage_sink_unlock (GstBaseSink * bsink)
-{
- //GstGLImageSink *glimage_sink;
-
- GST_DEBUG ("unlock");
-
- //glimage_sink = GST_GLIMAGE_SINK (bsink);
-
- /* FIXME */
-
- return TRUE;
-}
-
-static void
-gst_glimage_sink_get_times (GstBaseSink * bsink, GstBuffer * buf,
- GstClockTime * start, GstClockTime * end)
-{
- GstGLImageSink *glimagesink;
-
- glimagesink = GST_GLIMAGE_SINK (bsink);
-
- if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
- *start = GST_BUFFER_TIMESTAMP (buf);
- if (GST_BUFFER_DURATION_IS_VALID (buf)) {
- *end = *start + GST_BUFFER_DURATION (buf);
- } else {
- if (glimagesink->fps_n > 0) {
- *end = *start +
- gst_util_uint64_scale_int (GST_SECOND, glimagesink->fps_d,
- glimagesink->fps_n);
- }
- }
- }
-
-
-}
-
-static GstCaps *
-gst_glimage_sink_get_caps (GstBaseSink * bsink)
-{
- GstGLImageSink *glimage_sink;
-
- glimage_sink = GST_GLIMAGE_SINK (bsink);
-
- GST_DEBUG ("get caps returning %" GST_PTR_FORMAT, glimage_sink->caps);
-
- return gst_caps_ref (glimage_sink->caps);
-}
-
-static gboolean
-gst_glimage_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
-{
- GstGLImageSink *glimage_sink;
- int width;
- int height;
- gboolean ok;
- int fps_n, fps_d;
- int par_n, par_d;
- GstVideoFormat format;
- GstStructure *structure;
- gboolean is_gl;
-
- GST_DEBUG ("set caps with %" GST_PTR_FORMAT, caps);
-
- glimage_sink = GST_GLIMAGE_SINK (bsink);
-
- structure = gst_caps_get_structure (caps, 0);
- if (gst_structure_has_name (structure, "video/x-raw-gl")) {
- is_gl = TRUE;
- format = GST_VIDEO_FORMAT_UNKNOWN;
- ok = gst_structure_get_int (structure, "width", &width);
- ok &= gst_structure_get_int (structure, "height", &height);
- } else {
- is_gl = FALSE;
- ok = gst_video_format_parse_caps (caps, &format, &width, &height);
- }
- ok &= gst_video_parse_caps_framerate (caps, &fps_n, &fps_d);
- ok &= gst_video_parse_caps_pixel_aspect_ratio (caps, &par_n, &par_d);
-
- if (!ok)
- return FALSE;
-
- GST_VIDEO_SINK_WIDTH (glimage_sink) = width;
- GST_VIDEO_SINK_HEIGHT (glimage_sink) = height;
- glimage_sink->is_gl = is_gl;
- glimage_sink->format = format;
- glimage_sink->width = width;
- glimage_sink->height = height;
- glimage_sink->fps_n = fps_n;
- glimage_sink->fps_d = fps_d;
- glimage_sink->par_n = par_n;
- glimage_sink->par_d = par_d;
-
- return TRUE;
-}
-
-static GstFlowReturn
-gst_glimage_sink_render (GstBaseSink * bsink, GstBuffer * buf)
-{
- GstGLImageSink *glimage_sink;
- GstGLBuffer *gl_buffer;
- GstGLDisplay *display;
-
- glimage_sink = GST_GLIMAGE_SINK (bsink);
-
- if (glimage_sink->stored_buffer) {
- gst_buffer_unref (glimage_sink->stored_buffer);
- glimage_sink->stored_buffer = NULL;
- }
- if (glimage_sink->is_gl) {
- gl_buffer = GST_GL_BUFFER (gst_buffer_ref (buf));
-
- if (glimage_sink->display == NULL) {
- glimage_sink->display = g_object_ref (gl_buffer->display);
- if (glimage_sink->window_id) {
- gst_gl_display_set_window (glimage_sink->display,
- glimage_sink->window_id);
- }
- } else {
- g_assert (gl_buffer->display == glimage_sink->display);
- }
- display = gl_buffer->display;
-
- } else {
- if (glimage_sink->display == NULL) {
- gboolean ret;
-
- glimage_sink->display = gst_gl_display_new ();
- ret = gst_gl_display_connect (glimage_sink->display, NULL);
- if (!ret) {
- g_object_unref (glimage_sink->display);
- return GST_FLOW_ERROR;
- }
- if (glimage_sink->window_id) {
- gst_gl_display_set_window (glimage_sink->display,
- glimage_sink->window_id);
- }
- gst_gl_display_set_visible (glimage_sink->display, TRUE);
- }
- display = glimage_sink->display;
-
- gl_buffer = gst_gl_buffer_new_from_video_format (display,
- glimage_sink->format, glimage_sink->width, glimage_sink->height);
- gst_gl_buffer_upload (gl_buffer, glimage_sink->format,
- GST_BUFFER_DATA (buf));
- }
-
- glimage_sink->stored_buffer = gst_gl_buffer_ref (gl_buffer);
- gst_gl_display_draw_texture (display, gl_buffer->texture,
- gl_buffer->width, gl_buffer->height, TRUE);
-
- gst_buffer_unref (GST_BUFFER (gl_buffer));
-
- return GST_FLOW_OK;
-}
-
-/*
- * XOverlay
- */
-static void
-gst_glimage_sink_xoverlay_init (GstXOverlayClass * iface)
-{
- iface->set_xwindow_id = gst_glimage_sink_set_xwindow_id;
- iface->expose = gst_glimage_sink_expose;
- iface->handle_events = gst_glimage_sink_set_event_handling;
-}
-
-static void
-gst_glimage_sink_set_xwindow_id (GstXOverlay * overlay, XID window_id)
-{
- GstGLImageSink *glimage_sink;
-
- g_return_if_fail (GST_IS_GLIMAGE_SINK (overlay));
-
- GST_DEBUG ("set_xwindow_id %ld", window_id);
-
- glimage_sink = GST_GLIMAGE_SINK (overlay);
-
- if (glimage_sink->window_id == window_id) {
- return;
- }
- glimage_sink->window_id = window_id;
- if (glimage_sink->display) {
- gst_gl_display_set_window (glimage_sink->display, glimage_sink->window_id);
- }
-}
-
-static void
-gst_glimage_sink_expose (GstXOverlay * overlay)
-{
- GstGLImageSink *glimagesink = GST_GLIMAGE_SINK (overlay);
-
- GST_DEBUG ("expose");
-
- if (glimagesink->display) {
- gst_gl_display_update_window (glimagesink->display);
- }
-
- if (glimagesink->stored_buffer) {
- GstGLBuffer *gl_buffer = glimagesink->stored_buffer;
-
- gst_gl_display_draw_texture (gl_buffer->display, gl_buffer->texture,
- gl_buffer->width, gl_buffer->height, FALSE);
- }
-}
-
-static void
-gst_glimage_sink_set_event_handling (GstXOverlay * overlay,
- gboolean handle_events)
-{
- /* FIXME */
- GST_DEBUG ("handle_events %d", handle_events);
-}
-
-/*
- * GstImplementsInterface
- */
-static gboolean
-gst_glimage_sink_interface_supported (GstImplementsInterface * iface,
- GType type)
-{
- return TRUE;
-}
-
-static void
-gst_glimage_sink_implements_init (GstImplementsInterfaceClass * klass)
-{
- klass->supported = gst_glimage_sink_interface_supported;
-}
diff --git a/gst/gl/glimagesink.h b/gst/gl/glimagesink.h
deleted file mode 100644
index 093bc1c..0000000
--- a/gst/gl/glimagesink.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* GStreamer
- * Copyright (C) 2003 Julien Moutte <julien@moutte.net>
- * Copyright (C) 2005,2006,2007 David A. Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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 _GLIMAGESINK_H_
-#define _GLIMAGESINK_H_
-
-#include <gst/gst.h>
-#include <gst/interfaces/xoverlay.h>
-#include <gst/video/gstvideosink.h>
-#include <gst/video/video.h>
-
-#include "gstgldisplay.h"
-#include "gstglbuffer.h"
-
-GST_DEBUG_CATEGORY_EXTERN (gst_debug_glimage_sink);
-
-#define GST_TYPE_GLIMAGE_SINK \
- (gst_glimage_sink_get_type())
-#define GST_GLIMAGE_SINK(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GLIMAGE_SINK,GstGLImageSink))
-#define GST_GLIMAGE_SINK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_GLIMAGE_SINK,GstGLImageSinkClass))
-#define GST_IS_GLIMAGE_SINK(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GLIMAGE_SINK))
-#define GST_IS_GLIMAGE_SINK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_GLIMAGE_SINK))
-
-typedef struct _GstGLImageSink GstGLImageSink;
-typedef struct _GstGLImageSinkClass GstGLImageSinkClass;
-
-struct _GstGLImageSink
-{
- GstVideoSink video_sink;
-
- /* properties */
- char *display_name;
-
- /* caps */
- GstCaps *caps;
- GstVideoFormat format;
- int width;
- int height;
- gboolean is_gl;
- int fps_n, fps_d;
- int par_n, par_d;
-
- GstGLDisplay *display;
- GstGLBuffer *stored_buffer;
-
- XID window_id;
-};
-
-struct _GstGLImageSinkClass
-{
- GstVideoSinkClass video_sink_class;
-
-};
-
-GType gst_glimage_sink_get_type(void);
-
-#endif
-
diff --git a/gst/gl/gltestsrc.c b/gst/gl/gltestsrc.c
deleted file mode 100644
index 05750f7..0000000
--- a/gst/gl/gltestsrc.c
+++ /dev/null
@@ -1,495 +0,0 @@
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/* non-GST-specific stuff */
-
-#include "gstgltestsrc.h"
-#include "gltestsrc.h"
-#include "gstglbuffer.h"
-
-
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-enum
-{
- COLOR_WHITE = 0,
- COLOR_YELLOW,
- COLOR_CYAN,
- COLOR_GREEN,
- COLOR_MAGENTA,
- COLOR_RED,
- COLOR_BLUE,
- COLOR_BLACK,
- COLOR_NEG_I,
- COLOR_POS_Q,
- COLOR_SUPER_BLACK,
- COLOR_DARK_GREY
-};
-
-static const struct vts_color_struct vts_colors[] = {
- /* 100% white */
- {255, 128, 128, 255, 255, 255, 255},
- /* yellow */
- {226, 0, 155, 255, 255, 0, 255},
- /* cyan */
- {179, 170, 0, 0, 255, 255, 255},
- /* green */
- {150, 46, 21, 0, 255, 0, 255},
- /* magenta */
- {105, 212, 235, 255, 0, 255, 255},
- /* red */
- {76, 85, 255, 255, 0, 0, 255},
- /* blue */
- {29, 255, 107, 0, 0, 255, 255},
- /* black */
- {16, 128, 128, 0, 0, 0, 255},
- /* -I */
- {16, 198, 21, 0, 0, 128, 255},
- /* +Q */
- {16, 235, 198, 0, 128, 255, 255},
- /* superblack */
- {0, 128, 128, 0, 0, 0, 255},
- /* 5% grey */
- {32, 128, 128, 32, 32, 32, 255},
-};
-
-static void
-gst_gl_test_src_unicolor (GstGLTestSrc * v, GstGLBuffer * buffer, int w,
- int h, const struct vts_color_struct *color);
-
-void
-gst_gl_test_src_smpte (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
-{
- int i;
-
- glClearColor (0.0, 0.0, 0.0, 1.0);
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glDisable (GL_CULL_FACE);
- glDisable (GL_TEXTURE_RECTANGLE_ARB);
-
- glMatrixMode (GL_PROJECTION);
- glLoadIdentity ();
-
- glMatrixMode (GL_MODELVIEW);
- glLoadIdentity ();
-
- for (i = 0; i < 7; i++) {
- glColor4f (vts_colors[i].R * (1 / 255.0), vts_colors[i].G * (1 / 255.0),
- vts_colors[i].B * (1 / 255.0), 1.0);
- glBegin (GL_QUADS);
- glVertex3f (-1.0 + i * (2.0 / 7.0), -1.0 + 2.0 * (2.0 / 3.0), 0);
- glVertex3f (-1.0 + (i + 1) * (2.0 / 7.0), -1.0 + 2.0 * (2.0 / 3.0), 0);
- glVertex3f (-1.0 + (i + 1) * (2.0 / 7.0), -1.0, 0);
- glVertex3f (-1.0 + i * (2.0 / 7.0), -1.0, 0);
- glEnd ();
- }
-
- for (i = 0; i < 7; i++) {
- int k;
-
- if (i & 1) {
- k = 7;
- } else {
- k = 6 - i;
- }
-
- glColor4f (vts_colors[k].R * (1 / 255.0), vts_colors[k].G * (1 / 255.0),
- vts_colors[k].B * (1 / 255.0), 1.0);
- glBegin (GL_QUADS);
- glVertex3f (-1.0 + i * (2.0 / 7.0), -1.0 + 2.0 * (3.0 / 4.0), 0);
- glVertex3f (-1.0 + (i + 1) * (2.0 / 7.0), -1.0 + 2.0 * (3.0 / 4.0), 0);
- glVertex3f (-1.0 + (i + 1) * (2.0 / 7.0), -1.0 + 2.0 * (2.0 / 3.0), 0);
- glVertex3f (-1.0 + i * (2.0 / 7.0), -1.0 + 2.0 * (2.0 / 3.0), 0);
- glEnd ();
- }
-
- for (i = 0; i < 3; i++) {
- int k;
-
- if (i == 0) {
- k = 8;
- } else if (i == 1) {
- k = 0;
- } else {
- k = 9;
- }
-
- glColor4f (vts_colors[k].R * (1 / 255.0), vts_colors[k].G * (1 / 255.0),
- vts_colors[k].B * (1 / 255.0), 1.0);
- glBegin (GL_QUADS);
- glVertex3f (-1.0 + i * (2.0 / 6.0), -1.0 + 2.0 * 1, 0);
- glVertex3f (-1.0 + (i + 1) * (2.0 / 6.0), -1.0 + 2.0 * 1, 0);
- glVertex3f (-1.0 + (i + 1) * (2.0 / 6.0), -1.0 + 2.0 * (3.0 / 4.0), 0);
- glVertex3f (-1.0 + i * (2.0 / 6.0), -1.0 + 2.0 * (3.0 / 4.0), 0);
- glEnd ();
- }
-
- for (i = 0; i < 3; i++) {
- int k;
-
- if (i == 0) {
- k = COLOR_SUPER_BLACK;
- } else if (i == 1) {
- k = COLOR_BLACK;
- } else {
- k = COLOR_DARK_GREY;
- }
-
- glColor4f (vts_colors[k].R * (1 / 255.0), vts_colors[k].G * (1 / 255.0),
- vts_colors[k].B * (1 / 255.0), 1.0);
- glBegin (GL_QUADS);
- glVertex3f (-1.0 + 2.0 * (0.5 + i * (1.0 / 12.0)), -1.0 + 2.0 * 1, 0);
- glVertex3f (-1.0 + 2.0 * (0.5 + (i + 1) * (1.0 / 12.0)), -1.0 + 2.0 * 1, 0);
- glVertex3f (-1.0 + 2.0 * (0.5 + (i + 1) * (1.0 / 12.0)),
- -1.0 + 2.0 * (3.0 / 4.0), 0);
- glVertex3f (-1.0 + 2.0 * (0.5 + i * (1.0 / 12.0)), -1.0 + 2.0 * (3.0 / 4.0),
- 0);
- glEnd ();
- }
-
- glColor4f (0.5, 0.5, 0.5, 1.0);
- glBegin (GL_QUADS);
- glVertex3f (-1.0 + 2.0 * (0.75), -1.0 + 2.0 * 1, 0);
- glVertex3f (-1.0 + 2.0 * (1.0), -1.0 + 2.0 * 1, 0);
- glVertex3f (-1.0 + 2.0 * (1.0), -1.0 + 2.0 * (3.0 / 4.0), 0);
- glVertex3f (-1.0 + 2.0 * (0.75), -1.0 + 2.0 * (3.0 / 4.0), 0);
- glEnd ();
-
-}
-
-void
-gst_gl_test_src_snow (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
-{
- glClearColor (0.0, 0.0, 0.0, 1.0);
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glMatrixMode (GL_PROJECTION);
- glLoadIdentity ();
-
- glMatrixMode (GL_MODELVIEW);
- glLoadIdentity ();
-
- /* FIXME snow requires a fragment shader. Please write. */
- glColor4f (0.5, 0.5, 0.5, 1.0);
- glBegin (GL_QUADS);
- glVertex3f (-1.0 + 2.0 * (0.0), -1.0 + 2.0 * 1, 0);
- glVertex3f (-1.0 + 2.0 * (1.0), -1.0 + 2.0 * 1, 0);
- glVertex3f (-1.0 + 2.0 * (1.0), -1.0 + 2.0 * (0.0), 0);
- glVertex3f (-1.0 + 2.0 * (0.0), -1.0 + 2.0 * (0.0), 0);
- glEnd ();
-}
-
-static void
-gst_gl_test_src_unicolor (GstGLTestSrc * v, GstGLBuffer * buffer, int w,
- int h, const struct vts_color_struct *color)
-{
- glClearColor (color->R * (1 / 255.0), color->G * (1 / 255.0),
- color->B * (1 / 255.0), 1.0);
- glClear (GL_COLOR_BUFFER_BIT);
-}
-
-void
-gst_gl_test_src_black (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_BLACK);
-}
-
-void
-gst_gl_test_src_white (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_WHITE);
-}
-
-void
-gst_gl_test_src_red (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_RED);
-}
-
-void
-gst_gl_test_src_green (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_GREEN);
-}
-
-void
-gst_gl_test_src_blue (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_BLUE);
-}
-
-void
-gst_gl_test_src_checkers1 (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
-{
-#if 0
- int x, y;
- paintinfo pi = { NULL, };
- paintinfo *p = &pi;
- struct fourcc_list_struct *fourcc;
-
- p->width = w;
- p->height = h;
- fourcc = v->fourcc;
- if (fourcc == NULL)
- return;
-
- fourcc->paint_setup (p, dest);
- p->paint_hline = fourcc->paint_hline;
-
- for (y = 0; y < h; y++) {
- p->color = vts_colors + COLOR_GREEN;
- p->paint_hline (p, 0, y, w);
- for (x = (y % 2); x < w; x += 2) {
- p->color = vts_colors + COLOR_RED;
- p->paint_hline (p, x, y, 1);
- }
- }
-#endif
-}
-
-void
-gst_gl_test_src_checkers2 (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
-{
-#if 0
- int x, y;
- paintinfo pi = { NULL, };
- paintinfo *p = &pi;
- struct fourcc_list_struct *fourcc;
-
- p->width = w;
- p->height = h;
- fourcc = v->fourcc;
- if (fourcc == NULL)
- return;
-
- fourcc->paint_setup (p, dest);
- p->paint_hline = fourcc->paint_hline;
-
- p->color = vts_colors + COLOR_GREEN;
- for (y = 0; y < h; y++) {
- p->paint_hline (p, 0, y, w);
- }
-
- for (y = 0; y < h; y += 2) {
- for (x = ((y % 4) == 0) ? 0 : 2; x < w; x += 4) {
- guint len = (x < (w - 1)) ? 2 : (w - x);
-
- p->color = vts_colors + COLOR_RED;
- p->paint_hline (p, x, y + 0, len);
- if (G_LIKELY ((y + 1) < h)) {
- p->paint_hline (p, x, y + 1, len);
- }
- }
- }
-#endif
-}
-
-void
-gst_gl_test_src_checkers4 (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
-{
-#if 0
- int x, y;
- paintinfo pi = { NULL, };
- paintinfo *p = &pi;
- struct fourcc_list_struct *fourcc;
-
- p->width = w;
- p->height = h;
- fourcc = v->fourcc;
- if (fourcc == NULL)
- return;
-
- fourcc->paint_setup (p, dest);
- p->paint_hline = fourcc->paint_hline;
-
- p->color = vts_colors + COLOR_GREEN;
- for (y = 0; y < h; y++) {
- p->paint_hline (p, 0, y, w);
- }
-
- for (y = 0; y < h; y += 4) {
- for (x = ((y % 8) == 0) ? 0 : 4; x < w; x += 8) {
- guint len = (x < (w - 3)) ? 4 : (w - x);
-
- p->color = vts_colors + COLOR_RED;
- p->paint_hline (p, x, y + 0, len);
- if (G_LIKELY ((y + 1) < h)) {
- p->paint_hline (p, x, y + 1, len);
- if (G_LIKELY ((y + 2) < h)) {
- p->paint_hline (p, x, y + 2, len);
- if (G_LIKELY ((y + 3) < h)) {
- p->paint_hline (p, x, y + 3, len);
- }
- }
- }
- }
- }
-#endif
-}
-
-void
-gst_gl_test_src_checkers8 (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
-{
-#if 0
- int x, y;
- paintinfo pi = { NULL, };
- paintinfo *p = &pi;
- struct fourcc_list_struct *fourcc;
-
- p->width = w;
- p->height = h;
- fourcc = v->fourcc;
- if (fourcc == NULL)
- return;
-
- fourcc->paint_setup (p, dest);
- p->paint_hline = fourcc->paint_hline;
-
- p->color = vts_colors + COLOR_GREEN;
- for (y = 0; y < h; y++) {
- p->paint_hline (p, 0, y, w);
- }
-
- for (y = 0; y < h; y += 8) {
- for (x = ((GST_ROUND_UP_8 (y) % 16) == 0) ? 0 : 8; x < w; x += 16) {
- guint len = (x < (w - 7)) ? 8 : (w - x);
-
- p->color = vts_colors + COLOR_RED;
- p->paint_hline (p, x, y + 0, len);
- if (G_LIKELY ((y + 1) < h)) {
- p->paint_hline (p, x, y + 1, len);
- if (G_LIKELY ((y + 2) < h)) {
- p->paint_hline (p, x, y + 2, len);
- if (G_LIKELY ((y + 3) < h)) {
- p->paint_hline (p, x, y + 3, len);
- if (G_LIKELY ((y + 4) < h)) {
- p->paint_hline (p, x, y + 4, len);
- if (G_LIKELY ((y + 5) < h)) {
- p->paint_hline (p, x, y + 5, len);
- if (G_LIKELY ((y + 6) < h)) {
- p->paint_hline (p, x, y + 6, len);
- if (G_LIKELY ((y + 7) < h)) {
- p->paint_hline (p, x, y + 7, len);
- }
- }
- }
- }
- }
- }
- }
- }
- }
-#endif
-}
-
-void
-gst_gl_test_src_circular (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
-{
-#if 0
- int i;
- int j;
- paintinfo pi = { NULL, };
- paintinfo *p = &pi;
- struct fourcc_list_struct *fourcc;
- struct vts_color_struct color;
- static uint8_t sine_array[256];
- static int sine_array_inited = FALSE;
- double freq[8];
-
-#ifdef SCALE_AMPLITUDE
- double ampl[8];
-#endif
- int d;
-
- if (!sine_array_inited) {
- for (i = 0; i < 256; i++) {
- sine_array[i] =
- floor (255 * (0.5 + 0.5 * sin (i * 2 * M_PI / 256)) + 0.5);
- }
- sine_array_inited = TRUE;
- }
-
- p->width = w;
- p->height = h;
- fourcc = v->fourcc;
- if (fourcc == NULL)
- return;
-
- fourcc->paint_setup (p, dest);
- p->paint_hline = fourcc->paint_hline;
-
- color = vts_colors[COLOR_BLACK];
- p->color = &color;
-
- for (i = 1; i < 8; i++) {
- freq[i] = 200 * pow (2.0, -(i - 1) / 4.0);
-#ifdef SCALE_AMPLITUDE
- {
- double x;
-
- x = 2 * M_PI * freq[i] / w;
- ampl[i] = sin (x) / x;
- }
-#endif
- }
-
- for (i = 0; i < w; i++) {
- for (j = 0; j < h; j++) {
- double dist;
- int seg;
-
- dist =
- sqrt ((2 * i - w) * (2 * i - w) + (2 * j - h) * (2 * j -
- h)) / (2 * w);
- seg = floor (dist * 16);
- if (seg == 0 || seg >= 8) {
- color.Y = 255;
- } else {
-#ifdef SCALE_AMPLITUDE
- double a;
-#endif
- d = floor (256 * dist * freq[seg] + 0.5);
-#ifdef SCALE_AMPLITUDE
- a = ampl[seg];
- if (a < 0)
- a = 0;
- color.Y = 128 + a * (sine_array[d & 0xff] - 128);
-#else
- color.Y = sine_array[d & 0xff];
-#endif
- }
- color.R = color.Y;
- color.G = color.Y;
- color.B = color.Y;
- p->paint_hline (p, i, j, 1);
- }
- }
-#endif
-}
diff --git a/gst/gl/gltestsrc.h b/gst/gl/gltestsrc.h
deleted file mode 100644
index 345b9b1..0000000
--- a/gst/gl/gltestsrc.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* GStreamer
- * Copyright (C) <2003> David A. Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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 __GL_TEST_SRC_H__
-#define __GL_TEST_SRC_H__
-
-#include <glib.h>
-#include "gstglbuffer.h"
-
-struct vts_color_struct {
- guint8 Y, U, V;
- guint8 R, G, B;
- guint8 A;
-};
-
-void gst_gl_test_src_smpte (GstGLTestSrc * v,
- GstGLBuffer *buffer, int w, int h);
-void gst_gl_test_src_snow (GstGLTestSrc * v,
- GstGLBuffer *buffer, int w, int h);
-void gst_gl_test_src_black (GstGLTestSrc * v,
- GstGLBuffer *buffer, int w, int h);
-void gst_gl_test_src_white (GstGLTestSrc * v,
- GstGLBuffer *buffer, int w, int h);
-void gst_gl_test_src_red (GstGLTestSrc * v,
- GstGLBuffer *buffer, int w, int h);
-void gst_gl_test_src_green (GstGLTestSrc * v,
- GstGLBuffer *buffer, int w, int h);
-void gst_gl_test_src_blue (GstGLTestSrc * v,
- GstGLBuffer *buffer, int w, int h);
-void gst_gl_test_src_checkers1 (GstGLTestSrc * v,
- GstGLBuffer *buffer, int w, int h);
-void gst_gl_test_src_checkers2 (GstGLTestSrc * v,
- GstGLBuffer *buffer, int w, int h);
-void gst_gl_test_src_checkers4 (GstGLTestSrc * v,
- GstGLBuffer *buffer, int w, int h);
-void gst_gl_test_src_checkers8 (GstGLTestSrc * v,
- GstGLBuffer *buffer, int w, int h);
-void gst_gl_test_src_circular (GstGLTestSrc * v,
- GstGLBuffer *buffer, int w, int h);
-
-#endif
diff --git a/gst/gl/gstglconvert.c b/gst/gl/gstglconvert.c
deleted file mode 100644
index f4f525e..0000000
--- a/gst/gl/gstglconvert.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2007 David Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-#include <gst/video/video.h>
-#include <gstglbuffer.h>
-#include <gstglfilter.h>
-#include "glextensions.h"
-
-#define GST_CAT_DEFAULT gst_gl_convert_debug
-GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
-
-#define GST_TYPE_GL_CONVERT (gst_gl_convert_get_type())
-#define GST_GL_CONVERT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_CONVERT,GstGLConvert))
-#define GST_IS_GL_CONVERT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GL_CONVERT))
-#define GST_GL_CONVERT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_GL_CONVERT,GstGLConvertClass))
-#define GST_IS_GL_CONVERT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_GL_CONVERT))
-#define GST_GL_CONVERT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_GL_CONVERT,GstGLConvertClass))
-typedef struct _GstGLConvert GstGLConvert;
-typedef struct _GstGLConvertClass GstGLConvertClass;
-
-struct _GstGLConvert
-{
- GstGLFilter filter;
-
- /* < private > */
-
-};
-
-struct _GstGLConvertClass
-{
- GstGLFilterClass filter_class;
-};
-
-static const GstElementDetails element_details = GST_ELEMENT_DETAILS ("FIXME",
- "Filter/Effect",
- "FIXME GL conversion filter",
- "FIXME <fixme@fixme.com>");
-
-enum
-{
- PROP_0
-};
-
-#define DEBUG_INIT(bla) \
- GST_DEBUG_CATEGORY_INIT (gst_gl_convert_debug, "glconvert", 0, "glconvert element");
-
-GST_BOILERPLATE_FULL (GstGLConvert, gst_gl_convert, GstGLFilter,
- GST_TYPE_GL_FILTER, DEBUG_INIT);
-
-static void gst_gl_convert_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_gl_convert_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static gboolean gst_gl_convert_filter (GstGLFilter * filter,
- GstGLBuffer * inbuf, GstGLBuffer * outbuf);
-
-
-static void
-gst_gl_convert_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_set_details (element_class, &element_details);
-}
-
-static void
-gst_gl_convert_class_init (GstGLConvertClass * klass)
-{
- GObjectClass *gobject_class;
-
- gobject_class = (GObjectClass *) klass;
- gobject_class->set_property = gst_gl_convert_set_property;
- gobject_class->get_property = gst_gl_convert_get_property;
-
- GST_GL_FILTER_CLASS (klass)->filter = gst_gl_convert_filter;
-}
-
-static void
-gst_gl_convert_init (GstGLConvert * filter, GstGLConvertClass * klass)
-{
-}
-
-static void
-gst_gl_convert_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- //GstGLConvert *filter = GST_GL_CONVERT (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_gl_convert_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- //GstGLConvert *filter = GST_GL_CONVERT (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static gboolean
-gst_gl_convert_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
- GstGLBuffer * outbuf)
-{
- //GstGLConvert *convert = GST_GL_CONVERT(filter);
-
- glDisable (GL_CULL_FACE);
- glEnableClientState (GL_TEXTURE_COORD_ARRAY);
-
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP);
- glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
- if (inbuf->is_yuv) {
-#ifdef GL_POST_COLOR_MATRIX_RED_BIAS
- const double matrix[16] = {
- 1.16438, 1.6321, -0.00107909, 0,
- 1.13839, -0.813005, -0.39126, 0,
- 1.13839, 0.00112726, 2.01741, 0,
- 0, 0, 0, 1
- };
-
- GST_DEBUG ("applying YUV->RGB conversion");
-
- glMatrixMode (GL_COLOR);
- glLoadMatrixd (matrix);
-
- /* same */
- glPixelTransferf (GL_POST_COLOR_MATRIX_RED_BIAS, -0.873494);
- glPixelTransferf (GL_POST_COLOR_MATRIX_GREEN_BIAS, 0.531435);
- glPixelTransferf (GL_POST_COLOR_MATRIX_BLUE_BIAS, -1.08629);
-#else
- g_assert_not_reached ();
-#endif
- }
-
- glColor4f (1, 0, 1, 1);
-
- glBegin (GL_QUADS);
- glNormal3f (0, 0, -1);
- glTexCoord2f (inbuf->width, 0);
- glVertex3f (1.0, -1.0, 0);
- glTexCoord2f (0, 0);
- glVertex3f (-1.0, -1.0, 0);
- glTexCoord2f (0, inbuf->height);
- glVertex3f (-1.0, 1.0, 0);
- glTexCoord2f (inbuf->width, inbuf->height);
- glVertex3f (1.0, 1.0, 0);
- glEnd ();
-
- if (inbuf->is_yuv) {
-#ifdef GL_POST_COLOR_MATRIX_RED_BIAS
- glMatrixMode (GL_COLOR);
- glLoadIdentity ();
-
- glPixelTransferf (GL_POST_COLOR_MATRIX_RED_BIAS, 0);
- glPixelTransferf (GL_POST_COLOR_MATRIX_GREEN_BIAS, 0);
- glPixelTransferf (GL_POST_COLOR_MATRIX_BLUE_BIAS, 0);
-#else
- g_assert_not_reached ();
-#endif
- }
-
- return TRUE;
-}
diff --git a/gst/gl/gstgldownload.c b/gst/gl/gstgldownload.c
deleted file mode 100644
index 4c460b9..0000000
--- a/gst/gl/gstgldownload.c
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2007 David Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-#include <gst/base/gstbasetransform.h>
-#include <gst/video/video.h>
-#include <gstglbuffer.h>
-
-#define GST_CAT_DEFAULT gst_gl_download_debug
-GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
-
-#define GST_TYPE_GL_DOWNLOAD (gst_gl_download_get_type())
-#define GST_GL_DOWNLOAD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_DOWNLOAD,GstGLDownload))
-#define GST_IS_GL_DOWNLOAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GL_DOWNLOAD))
-#define GST_GL_DOWNLOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_GL_DOWNLOAD,GstGLDownloadClass))
-#define GST_IS_GL_DOWNLOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_GL_DOWNLOAD))
-#define GST_GL_DOWNLOAD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_GL_DOWNLOAD,GstGLDownloadClass))
-typedef struct _GstGLDownload GstGLDownload;
-typedef struct _GstGLDownloadClass GstGLDownloadClass;
-
-typedef void (*GstGLDownloadProcessFunc) (GstGLDownload *, guint8 *, guint);
-
-struct _GstGLDownload
-{
- GstBaseTransform base_transform;
-
- /* < private > */
-
- GstGLDisplay *display;
- GstVideoFormat format;
- int width;
- int height;
-};
-
-struct _GstGLDownloadClass
-{
- GstBaseTransformClass base_transform_class;
-};
-
-static const GstElementDetails element_details = GST_ELEMENT_DETAILS ("FIXME",
- "Filter/Effect",
- "FIXME example filter",
- "FIXME <fixme@fixme.com>");
-
-static GstStaticPadTemplate gst_gl_download_src_pad_template =
- GST_STATIC_PAD_TEMPLATE ("src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_xRGB ";"
- GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_BGRx ";" GST_VIDEO_CAPS_xBGR)
- );
-
-static GstStaticPadTemplate gst_gl_download_sink_pad_template =
-GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_GL_VIDEO_CAPS)
- );
-
-enum
-{
- PROP_0
-};
-
-#define DEBUG_INIT(bla) \
- GST_DEBUG_CATEGORY_INIT (gst_gl_download_debug, "gldownload", 0, "gldownload element");
-
-GST_BOILERPLATE_FULL (GstGLDownload, gst_gl_download, GstBaseTransform,
- GST_TYPE_BASE_TRANSFORM, DEBUG_INIT);
-
-static void gst_gl_download_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_gl_download_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static void gst_gl_download_reset (GstGLDownload * download);
-static gboolean gst_gl_download_set_caps (GstBaseTransform * bt,
- GstCaps * incaps, GstCaps * outcaps);
-static GstCaps *gst_gl_download_transform_caps (GstBaseTransform * bt,
- GstPadDirection direction, GstCaps * caps);
-static gboolean gst_gl_download_start (GstBaseTransform * bt);
-static gboolean gst_gl_download_stop (GstBaseTransform * bt);
-static GstFlowReturn gst_gl_download_transform (GstBaseTransform * trans,
- GstBuffer * inbuf, GstBuffer * outbuf);
-static gboolean
-gst_gl_download_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
- guint * size);
-
-
-static void
-gst_gl_download_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_set_details (element_class, &element_details);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_gl_download_src_pad_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_gl_download_sink_pad_template));
-}
-
-static void
-gst_gl_download_class_init (GstGLDownloadClass * klass)
-{
- GObjectClass *gobject_class;
-
- gobject_class = (GObjectClass *) klass;
- gobject_class->set_property = gst_gl_download_set_property;
- gobject_class->get_property = gst_gl_download_get_property;
-
- GST_BASE_TRANSFORM_CLASS (klass)->transform_caps =
- gst_gl_download_transform_caps;
- GST_BASE_TRANSFORM_CLASS (klass)->transform = gst_gl_download_transform;
- GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_download_start;
- GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_download_stop;
- GST_BASE_TRANSFORM_CLASS (klass)->set_caps = gst_gl_download_set_caps;
- GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size =
- gst_gl_download_get_unit_size;
-}
-
-static void
-gst_gl_download_init (GstGLDownload * download, GstGLDownloadClass * klass)
-{
- gst_gl_download_reset (download);
-}
-
-static void
-gst_gl_download_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- //GstGLDownload *download = GST_GL_DOWNLOAD (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_gl_download_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- //GstGLDownload *download = GST_GL_DOWNLOAD (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_gl_download_reset (GstGLDownload * download)
-{
- if (download->display) {
- g_object_unref (download->display);
- download->display = NULL;
- }
- download->format = GST_VIDEO_FORMAT_RGBx;
-}
-
-static gboolean
-gst_gl_download_start (GstBaseTransform * bt)
-{
- GstGLDownload *download = GST_GL_DOWNLOAD (bt);
-
- download->format = GST_VIDEO_FORMAT_RGBx;
-
- return TRUE;
-}
-
-static gboolean
-gst_gl_download_stop (GstBaseTransform * bt)
-{
- GstGLDownload *download = GST_GL_DOWNLOAD (bt);
-
- gst_gl_download_reset (download);
-
- return TRUE;
-}
-
-static GstCaps *
-gst_gl_download_transform_caps (GstBaseTransform * bt,
- GstPadDirection direction, GstCaps * caps)
-{
- GstGLDownload *download;
- GstStructure *structure;
- GstCaps *newcaps;
- GstStructure *newstruct;
- const GValue *width_value;
- const GValue *height_value;
- const GValue *framerate_value;
- const GValue *par_value;
-
- download = GST_GL_DOWNLOAD (bt);
-
- GST_ERROR ("transform caps %" GST_PTR_FORMAT, caps);
-
- structure = gst_caps_get_structure (caps, 0);
-
- width_value = gst_structure_get_value (structure, "width");
- height_value = gst_structure_get_value (structure, "height");
- framerate_value = gst_structure_get_value (structure, "framerate");
- par_value = gst_structure_get_value (structure, "pixel-aspect-ratio");
-
- if (direction == GST_PAD_SINK) {
- newcaps = gst_caps_new_simple ("video/x-raw-rgb", NULL);
- } else {
- newcaps = gst_caps_new_simple ("video/x-raw-gl",
- "format", G_TYPE_INT, GST_GL_BUFFER_FORMAT_RGBA,
- "is_yuv", G_TYPE_BOOLEAN, FALSE, NULL);
- }
- newstruct = gst_caps_get_structure (newcaps, 0);
- gst_structure_set_value (newstruct, "width", width_value);
- gst_structure_set_value (newstruct, "height", height_value);
- gst_structure_set_value (newstruct, "framerate", framerate_value);
- if (par_value) {
- gst_structure_set_value (newstruct, "pixel-aspect-ratio", par_value);
- } else {
- gst_structure_set (newstruct, "pixel-aspect-ratio", GST_TYPE_FRACTION,
- 1, 1, NULL);
- }
-
- GST_ERROR ("new caps %" GST_PTR_FORMAT, newcaps);
-
- return newcaps;
-}
-
-static gboolean
-gst_gl_download_set_caps (GstBaseTransform * bt, GstCaps * incaps,
- GstCaps * outcaps)
-{
- GstGLDownload *download;
- gboolean ret;
-
- download = GST_GL_DOWNLOAD (bt);
-
- GST_DEBUG ("called with %" GST_PTR_FORMAT, incaps);
-
- ret = gst_video_format_parse_caps (outcaps, &download->format,
- &download->width, &download->height);
-
- if (!ret) {
- GST_ERROR ("bad caps");
- return FALSE;
- }
-
- return ret;
-}
-
-static gboolean
-gst_gl_download_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
- guint * size)
-{
- gboolean ret;
- GstStructure *structure;
- int width;
- int height;
-
- structure = gst_caps_get_structure (caps, 0);
- if (gst_structure_has_name (structure, "video/x-raw-gl")) {
- GstGLBufferFormat format;
-
- ret = gst_gl_buffer_format_parse_caps (caps, &format, &width, &height);
- if (ret) {
- *size = gst_gl_buffer_format_get_size (format, width, height);
- }
- } else {
- GstVideoFormat format;
-
- ret = gst_video_format_parse_caps (caps, &format, &width, &height);
- if (ret) {
- *size = gst_video_format_get_size (format, width, height);
- }
- }
-
- return ret;
-}
-
-static GstFlowReturn
-gst_gl_download_transform (GstBaseTransform * trans, GstBuffer * inbuf,
- GstBuffer * outbuf)
-{
- GstGLDownload *download;
- GstGLBuffer *gl_inbuf = GST_GL_BUFFER (inbuf);
-
- download = GST_GL_DOWNLOAD (trans);
-
- if (download->display == NULL) {
- download->display = g_object_ref (gl_inbuf->display);
- } else {
- g_assert (download->display == gl_inbuf->display);
- }
-
- GST_DEBUG ("downloading %p size %d",
- GST_BUFFER_DATA (outbuf), GST_BUFFER_SIZE (outbuf));
- gst_gl_buffer_download (gl_inbuf, download->format, GST_BUFFER_DATA (outbuf));
-
- return GST_FLOW_OK;
-}
diff --git a/gst/gl/gstglfilterexample.c b/gst/gl/gstglfilterexample.c
deleted file mode 100644
index 8f7de08..0000000
--- a/gst/gl/gstglfilterexample.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2007 David Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-#include <gst/video/video.h>
-#include <gstglbuffer.h>
-#include <gstglfilter.h>
-#include "glextensions.h"
-#include <string.h>
-
-#define GST_CAT_DEFAULT gst_gl_filter_example_debug
-GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
-
-#define GST_TYPE_GL_FILTER_EXAMPLE (gst_gl_filter_example_get_type())
-#define GST_GL_FILTER_EXAMPLE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_FILTER_EXAMPLE,GstGLFilterExample))
-#define GST_IS_GL_FILTER_EXAMPLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GL_FILTER_EXAMPLE))
-#define GST_GL_FILTER_EXAMPLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_GL_FILTER_EXAMPLE,GstGLFilterExampleClass))
-#define GST_IS_GL_FILTER_EXAMPLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_GL_FILTER_EXAMPLE))
-#define GST_GL_FILTER_EXAMPLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_GL_FILTER_EXAMPLE,GstGLFilterExampleClass))
-typedef struct _GstGLFilterExample GstGLFilterExample;
-typedef struct _GstGLFilterExampleClass GstGLFilterExampleClass;
-
-struct _GstGLFilterExample
-{
- GstGLFilter filter;
-
- /* < private > */
-
-};
-
-struct _GstGLFilterExampleClass
-{
- GstGLFilterClass filter_class;
-};
-
-static const GstElementDetails element_details = GST_ELEMENT_DETAILS ("FIXME",
- "Filter/Effect",
- "FIXME example filter",
- "FIXME <fixme@fixme.com>");
-
-enum
-{
- PROP_0
-};
-
-#define DEBUG_INIT(bla) \
- GST_DEBUG_CATEGORY_INIT (gst_gl_filter_example_debug, "glfilterexample", 0, "glfilterexample element");
-
-GST_BOILERPLATE_FULL (GstGLFilterExample, gst_gl_filter_example, GstGLFilter,
- GST_TYPE_GL_FILTER, DEBUG_INIT);
-
-static void gst_gl_filter_example_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_gl_filter_example_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static gboolean gst_gl_filter_example_filter (GstGLFilter * filter,
- GstGLBuffer * inbuf, GstGLBuffer * outbuf);
-
-
-static void
-gst_gl_filter_example_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_set_details (element_class, &element_details);
-}
-
-static void
-gst_gl_filter_example_class_init (GstGLFilterExampleClass * klass)
-{
- GObjectClass *gobject_class;
-
- gobject_class = (GObjectClass *) klass;
- gobject_class->set_property = gst_gl_filter_example_set_property;
- gobject_class->get_property = gst_gl_filter_example_get_property;
-
- GST_GL_FILTER_CLASS (klass)->filter = gst_gl_filter_example_filter;
-}
-
-static void
-gst_gl_filter_example_init (GstGLFilterExample * filter,
- GstGLFilterExampleClass * klass)
-{
-}
-
-static void
-gst_gl_filter_example_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- //GstGLFilterExample *filter = GST_GL_FILTER_EXAMPLE (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_gl_filter_example_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- //GstGLFilterExample *filter = GST_GL_FILTER_EXAMPLE (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static gboolean
-gst_gl_filter_example_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
- GstGLBuffer * outbuf)
-{
- //GstGLFilterExample *example = GST_GL_FILTER_EXAMPLE(filter);
- int i, j;
- double *vertex_x, *vertex_y;
-
- glDisable (GL_CULL_FACE);
- glEnableClientState (GL_TEXTURE_COORD_ARRAY);
-
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP);
- glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
- glColor4f (1, 0, 1, 1);
-
-#define GAIN 0.5
- /* just for fun. swap red and blue components. Doesn't work on my
- * driver. */
- {
- const double matrix[16] = {
- 0, 0, 1.0, 0,
- 0, 1.0, 0, 0,
- 1.0, 0, 0, 0,
- 0, 0, 0, 1
- };
-
- glMatrixMode (GL_COLOR);
- glLoadMatrixd (matrix);
- glPixelTransferf (GL_POST_COLOR_MATRIX_RED_BIAS, (1 - GAIN) / 2);
- glPixelTransferf (GL_POST_COLOR_MATRIX_GREEN_BIAS, (1 - GAIN) / 2);
- glPixelTransferf (GL_POST_COLOR_MATRIX_BLUE_BIAS, (1 - GAIN) / 2);
- }
-
- /* load raster-scanning matrix */
- {
- const double matrix[16] = {
- 2.0, 0, 0, 0,
- 0, 2.0, 0, 0,
- 0, 0, 1, 0,
- -1, -1, 0, 1
- };
- glMatrixMode (GL_MODELVIEW);
- glLoadMatrixd (matrix);
- }
- /* load texture raster-scanning matrix */
- {
- double matrix[16] = {
- 1.0, 0, 0, 0,
- 0, 1.0, 0, 0,
- 0, 0, 1, 0,
- -1, -1, 0, 1
- };
- matrix[0] = inbuf->width;
- matrix[5] = inbuf->height;
- glMatrixMode (GL_TEXTURE);
- glLoadMatrixd (matrix);
- }
-
-#define N 10
-#define SCALE (1.0/N)
-#define NOISE() (0.1*SCALE*g_random_double_range(-1,1))
- vertex_x = malloc (sizeof (double) * (N + 1) * (N + 1));
- vertex_y = malloc (sizeof (double) * (N + 1) * (N + 1));
- for (j = 0; j < N + 1; j++) {
- for (i = 0; i < N + 1; i++) {
- vertex_x[j * (N + 1) + i] = i * SCALE + NOISE ();
- vertex_y[j * (N + 1) + i] = j * SCALE + NOISE ();
- }
- }
- for (j = 0; j < N; j++) {
- for (i = 0; i < N; i++) {
- glBegin (GL_QUADS);
- glNormal3f (0, 0, -1);
- glTexCoord2f (i * SCALE, j * SCALE);
- glVertex3f (vertex_x[j * (N + 1) + i], vertex_y[j * (N + 1) + i], 0);
- glTexCoord2f ((i + 1) * SCALE, j * SCALE);
- glVertex3f (vertex_x[j * (N + 1) + (i + 1)],
- vertex_y[j * (N + 1) + (i + 1)], 0);
- glTexCoord2f ((i + 1) * SCALE, (j + 1) * SCALE);
- glVertex3f (vertex_x[(j + 1) * (N + 1) + (i + 1)],
- vertex_y[(j + 1) * (N + 1) + (i + 1)], 0);
- glTexCoord2f (i * SCALE, (j + 1) * SCALE);
- glVertex3f (vertex_x[(j + 1) * (N + 1) + i],
- vertex_y[(j + 1) * (N + 1) + i], 0);
- glEnd ();
- }
- }
- free (vertex_x);
- free (vertex_y);
-
-
- glFlush ();
-
- glMatrixMode (GL_MODELVIEW);
- glLoadIdentity ();
- glMatrixMode (GL_TEXTURE);
- glLoadIdentity ();
- glMatrixMode (GL_COLOR);
- glLoadIdentity ();
- glPixelTransferf (GL_POST_COLOR_MATRIX_RED_SCALE, 1.0);
- glPixelTransferf (GL_POST_COLOR_MATRIX_RED_BIAS, 0);
- glPixelTransferf (GL_POST_COLOR_MATRIX_GREEN_BIAS, 0);
- glPixelTransferf (GL_POST_COLOR_MATRIX_BLUE_BIAS, 0);
-
- return TRUE;
-}
diff --git a/gst/gl/gstgltestsrc.c b/gst/gl/gstgltestsrc.c
deleted file mode 100644
index 83fa422..0000000
--- a/gst/gl/gstgltestsrc.c
+++ /dev/null
@@ -1,632 +0,0 @@
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- * Copyright (C) 2002,2007 David A. Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-/**
- * SECTION:element-gltestsrc
- *
- * <refsect2>
- * <para>
- * The gltestsrc element is used to produce test video data in a wide variaty
- * of formats. The video test data produced can be controlled with the "pattern"
- * property.
- * </para>
- * <title>Example launch line</title>
- * <para>
- * <programlisting>
- * gst-launch -v gltestsrc pattern=snow ! ximagesink
- * </programlisting>
- * Shows random noise in an X window.
- * </para>
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include "gstgltestsrc.h"
-#include "gltestsrc.h"
-#include "gstglbuffer.h"
-#include "glextensions.h"
-#include <gst/gst-i18n-plugin.h>
-
-#include <string.h>
-#include <stdlib.h>
-
-#define USE_PEER_BUFFERALLOC
-
-GST_DEBUG_CATEGORY_STATIC (gl_test_src_debug);
-#define GST_CAT_DEFAULT gl_test_src_debug
-
-static const GstElementDetails gl_test_src_details =
-GST_ELEMENT_DETAILS ("Video test source",
- "Source/Video",
- "Creates a test video stream",
- "David A. Schleef <ds@schleef.org>");
-
-
-enum
-{
- PROP_0,
- PROP_PATTERN,
- PROP_TIMESTAMP_OFFSET,
- PROP_IS_LIVE
- /* FILL ME */
-};
-
-
-GST_BOILERPLATE (GstGLTestSrc, gst_gl_test_src, GstPushSrc, GST_TYPE_PUSH_SRC);
-
-
-static void gst_gl_test_src_set_pattern (GstGLTestSrc * gltestsrc,
- int pattern_type);
-static void gst_gl_test_src_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_gl_test_src_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static gboolean gst_gl_test_src_setcaps (GstBaseSrc * bsrc, GstCaps * caps);
-static void gst_gl_test_src_src_fixate (GstPad * pad, GstCaps * caps);
-
-static gboolean gst_gl_test_src_is_seekable (GstBaseSrc * psrc);
-static gboolean gst_gl_test_src_do_seek (GstBaseSrc * bsrc,
- GstSegment * segment);
-static gboolean gst_gl_test_src_query (GstBaseSrc * bsrc, GstQuery * query);
-
-static void gst_gl_test_src_get_times (GstBaseSrc * basesrc,
- GstBuffer * buffer, GstClockTime * start, GstClockTime * end);
-static GstFlowReturn gst_gl_test_src_create (GstPushSrc * psrc,
- GstBuffer ** buffer);
-static gboolean gst_gl_test_src_start (GstBaseSrc * basesrc);
-static gboolean gst_gl_test_src_stop (GstBaseSrc * basesrc);
-
-#define GST_TYPE_GL_TEST_SRC_PATTERN (gst_gl_test_src_pattern_get_type ())
-static GType
-gst_gl_test_src_pattern_get_type (void)
-{
- static GType gl_test_src_pattern_type = 0;
- static const GEnumValue pattern_types[] = {
- {GST_GL_TEST_SRC_SMPTE, "SMPTE 100% color bars", "smpte"},
- {GST_GL_TEST_SRC_SNOW, "Random (television snow)", "snow"},
- {GST_GL_TEST_SRC_BLACK, "100% Black", "black"},
- {GST_GL_TEST_SRC_WHITE, "100% White", "white"},
- {GST_GL_TEST_SRC_RED, "Red", "red"},
- {GST_GL_TEST_SRC_GREEN, "Green", "green"},
- {GST_GL_TEST_SRC_BLUE, "Blue", "blue"},
- {GST_GL_TEST_SRC_CHECKERS1, "Checkers 1px", "checkers-1"},
- {GST_GL_TEST_SRC_CHECKERS2, "Checkers 2px", "checkers-2"},
- {GST_GL_TEST_SRC_CHECKERS4, "Checkers 4px", "checkers-4"},
- {GST_GL_TEST_SRC_CHECKERS8, "Checkers 8px", "checkers-8"},
- {GST_GL_TEST_SRC_CIRCULAR, "Circular", "circular"},
- {GST_GL_TEST_SRC_BLINK, "Blink", "blink"},
- {0, NULL, NULL}
- };
-
- if (!gl_test_src_pattern_type) {
- gl_test_src_pattern_type =
- g_enum_register_static ("GstGLTestSrcPattern", pattern_types);
- }
- return gl_test_src_pattern_type;
-}
-
-static void
-gst_gl_test_src_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details (element_class, &gl_test_src_details);
-
- gst_element_class_add_pad_template (element_class,
- gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
- gst_caps_from_string (GST_GL_VIDEO_CAPS)));
-}
-
-static void
-gst_gl_test_src_class_init (GstGLTestSrcClass * klass)
-{
- GObjectClass *gobject_class;
- GstBaseSrcClass *gstbasesrc_class;
- GstPushSrcClass *gstpushsrc_class;
-
- GST_DEBUG_CATEGORY_INIT (gl_test_src_debug, "gltestsrc", 0,
- "Video Test Source");
-
- gobject_class = (GObjectClass *) klass;
- gstbasesrc_class = (GstBaseSrcClass *) klass;
- gstpushsrc_class = (GstPushSrcClass *) klass;
-
- gobject_class->set_property = gst_gl_test_src_set_property;
- gobject_class->get_property = gst_gl_test_src_get_property;
-
- g_object_class_install_property (gobject_class, PROP_PATTERN,
- g_param_spec_enum ("pattern", "Pattern",
- "Type of test pattern to generate", GST_TYPE_GL_TEST_SRC_PATTERN,
- GST_GL_TEST_SRC_SMPTE, G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_TIMESTAMP_OFFSET, g_param_spec_int64 ("timestamp-offset",
- "Timestamp offset",
- "An offset added to timestamps set on buffers (in ns)", G_MININT64,
- G_MAXINT64, 0, G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class, PROP_IS_LIVE,
- g_param_spec_boolean ("is-live", "Is Live",
- "Whether to act as a live source", FALSE, G_PARAM_READWRITE));
-
- gstbasesrc_class->set_caps = gst_gl_test_src_setcaps;
- gstbasesrc_class->is_seekable = gst_gl_test_src_is_seekable;
- gstbasesrc_class->do_seek = gst_gl_test_src_do_seek;
- gstbasesrc_class->query = gst_gl_test_src_query;
- gstbasesrc_class->get_times = gst_gl_test_src_get_times;
- gstbasesrc_class->start = gst_gl_test_src_start;
- gstbasesrc_class->stop = gst_gl_test_src_stop;
-
- gstpushsrc_class->create = gst_gl_test_src_create;
-}
-
-static void
-gst_gl_test_src_init (GstGLTestSrc * src, GstGLTestSrcClass * g_class)
-{
- GstPad *pad = GST_BASE_SRC_PAD (src);
-
- gst_pad_set_fixatecaps_function (pad, gst_gl_test_src_src_fixate);
-
- gst_gl_test_src_set_pattern (src, GST_GL_TEST_SRC_SMPTE);
-
- src->timestamp_offset = 0;
-
- /* we operate in time */
- gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
- gst_base_src_set_live (GST_BASE_SRC (src), FALSE);
-}
-
-static void
-gst_gl_test_src_src_fixate (GstPad * pad, GstCaps * caps)
-{
- GstStructure *structure;
-
- GST_DEBUG ("fixate");
-
- structure = gst_caps_get_structure (caps, 0);
-
- gst_structure_fixate_field_nearest_int (structure, "width", 320);
- gst_structure_fixate_field_nearest_int (structure, "height", 240);
- gst_structure_fixate_field_nearest_fraction (structure, "framerate", 30, 1);
-}
-
-static void
-gst_gl_test_src_set_pattern (GstGLTestSrc * gltestsrc, int pattern_type)
-{
- gltestsrc->pattern_type = pattern_type;
-
- GST_DEBUG_OBJECT (gltestsrc, "setting pattern to %d", pattern_type);
-
- switch (pattern_type) {
- case GST_GL_TEST_SRC_SMPTE:
- gltestsrc->make_image = gst_gl_test_src_smpte;
- break;
- case GST_GL_TEST_SRC_SNOW:
- gltestsrc->make_image = gst_gl_test_src_snow;
- break;
- case GST_GL_TEST_SRC_BLACK:
- gltestsrc->make_image = gst_gl_test_src_black;
- break;
- case GST_GL_TEST_SRC_WHITE:
- gltestsrc->make_image = gst_gl_test_src_white;
- break;
- case GST_GL_TEST_SRC_RED:
- gltestsrc->make_image = gst_gl_test_src_red;
- break;
- case GST_GL_TEST_SRC_GREEN:
- gltestsrc->make_image = gst_gl_test_src_green;
- break;
- case GST_GL_TEST_SRC_BLUE:
- gltestsrc->make_image = gst_gl_test_src_blue;
- break;
- case GST_GL_TEST_SRC_CHECKERS1:
- gltestsrc->make_image = gst_gl_test_src_checkers1;
- break;
- case GST_GL_TEST_SRC_CHECKERS2:
- gltestsrc->make_image = gst_gl_test_src_checkers2;
- break;
- case GST_GL_TEST_SRC_CHECKERS4:
- gltestsrc->make_image = gst_gl_test_src_checkers4;
- break;
- case GST_GL_TEST_SRC_CHECKERS8:
- gltestsrc->make_image = gst_gl_test_src_checkers8;
- break;
- case GST_GL_TEST_SRC_CIRCULAR:
- gltestsrc->make_image = gst_gl_test_src_circular;
- break;
- case GST_GL_TEST_SRC_BLINK:
- gltestsrc->make_image = gst_gl_test_src_black;
- break;
- default:
- g_assert_not_reached ();
- }
-}
-
-static void
-gst_gl_test_src_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstGLTestSrc *src = GST_GL_TEST_SRC (object);
-
- switch (prop_id) {
- case PROP_PATTERN:
- gst_gl_test_src_set_pattern (src, g_value_get_enum (value));
- break;
- case PROP_TIMESTAMP_OFFSET:
- src->timestamp_offset = g_value_get_int64 (value);
- break;
- case PROP_IS_LIVE:
- gst_base_src_set_live (GST_BASE_SRC (src), g_value_get_boolean (value));
- break;
- default:
- break;
- }
-}
-
-static void
-gst_gl_test_src_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstGLTestSrc *src = GST_GL_TEST_SRC (object);
-
- switch (prop_id) {
- case PROP_PATTERN:
- g_value_set_enum (value, src->pattern_type);
- break;
- case PROP_TIMESTAMP_OFFSET:
- g_value_set_int64 (value, src->timestamp_offset);
- break;
- case PROP_IS_LIVE:
- g_value_set_boolean (value, gst_base_src_is_live (GST_BASE_SRC (src)));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static gboolean
-gst_gl_test_src_parse_caps (const GstCaps * caps,
- gint * width, gint * height, gint * rate_numerator, gint * rate_denominator)
-{
- const GstStructure *structure;
- GstPadLinkReturn ret;
- const GValue *framerate;
-
- GST_DEBUG ("parsing caps");
-
- if (gst_caps_get_size (caps) < 1)
- return FALSE;
-
- structure = gst_caps_get_structure (caps, 0);
-
- ret = gst_structure_get_int (structure, "width", width);
- ret &= gst_structure_get_int (structure, "height", height);
- framerate = gst_structure_get_value (structure, "framerate");
-
- if (framerate) {
- *rate_numerator = gst_value_get_fraction_numerator (framerate);
- *rate_denominator = gst_value_get_fraction_denominator (framerate);
- } else
- goto no_framerate;
-
- return ret;
-
- /* ERRORS */
-no_framerate:
- {
- GST_DEBUG ("gltestsrc no framerate given");
- return FALSE;
- }
-}
-
-static gboolean
-gst_gl_test_src_setcaps (GstBaseSrc * bsrc, GstCaps * caps)
-{
- gboolean res;
- gint width, height, rate_denominator, rate_numerator;
- GstGLTestSrc *gltestsrc;
-
- gltestsrc = GST_GL_TEST_SRC (bsrc);
-
- GST_DEBUG ("setcaps");
-
- res = gst_gl_test_src_parse_caps (caps, &width, &height,
- &rate_numerator, &rate_denominator);
- if (res) {
- /* looks ok here */
- gltestsrc->width = width;
- gltestsrc->height = height;
- gltestsrc->rate_numerator = rate_numerator;
- gltestsrc->rate_denominator = rate_denominator;
- gltestsrc->negotiated = TRUE;
-
- GST_DEBUG_OBJECT (gltestsrc, "size %dx%d, %d/%d fps",
- gltestsrc->width, gltestsrc->height,
- gltestsrc->rate_numerator, gltestsrc->rate_denominator);
- }
- return res;
-}
-
-static gboolean
-gst_gl_test_src_query (GstBaseSrc * bsrc, GstQuery * query)
-{
- gboolean res;
- GstGLTestSrc *src;
-
- src = GST_GL_TEST_SRC (bsrc);
-
- switch (GST_QUERY_TYPE (query)) {
- case GST_QUERY_CONVERT:
- {
- GstFormat src_fmt, dest_fmt;
- gint64 src_val, dest_val;
-
- gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val);
- if (src_fmt == dest_fmt) {
- dest_val = src_val;
- goto done;
- }
-
- switch (src_fmt) {
- case GST_FORMAT_DEFAULT:
- switch (dest_fmt) {
- case GST_FORMAT_TIME:
- /* frames to time */
- if (src->rate_numerator) {
- dest_val = gst_util_uint64_scale (src_val,
- src->rate_denominator * GST_SECOND, src->rate_numerator);
- } else {
- dest_val = 0;
- }
- break;
- default:
- goto error;
- }
- break;
- case GST_FORMAT_TIME:
- switch (dest_fmt) {
- case GST_FORMAT_DEFAULT:
- /* time to frames */
- if (src->rate_numerator) {
- dest_val = gst_util_uint64_scale (src_val,
- src->rate_numerator, src->rate_denominator * GST_SECOND);
- } else {
- dest_val = 0;
- }
- break;
- default:
- goto error;
- }
- break;
- default:
- goto error;
- }
- done:
- gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
- res = TRUE;
- break;
- }
- default:
- res = GST_BASE_SRC_CLASS (parent_class)->query (bsrc, query);
- }
- return res;
-
- /* ERROR */
-error:
- {
- GST_DEBUG_OBJECT (src, "query failed");
- return FALSE;
- }
-}
-
-static void
-gst_gl_test_src_get_times (GstBaseSrc * basesrc, GstBuffer * buffer,
- GstClockTime * start, GstClockTime * end)
-{
- /* for live sources, sync on the timestamp of the buffer */
- if (gst_base_src_is_live (basesrc)) {
- GstClockTime timestamp = GST_BUFFER_TIMESTAMP (buffer);
-
- if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
- /* get duration to calculate end time */
- GstClockTime duration = GST_BUFFER_DURATION (buffer);
-
- if (GST_CLOCK_TIME_IS_VALID (duration)) {
- *end = timestamp + duration;
- }
- *start = timestamp;
- }
- } else {
- *start = -1;
- *end = -1;
- }
-}
-
-static gboolean
-gst_gl_test_src_do_seek (GstBaseSrc * bsrc, GstSegment * segment)
-{
- GstClockTime time;
- GstGLTestSrc *src;
-
- src = GST_GL_TEST_SRC (bsrc);
-
- segment->time = segment->start;
- time = segment->last_stop;
-
- /* now move to the time indicated */
- if (src->rate_numerator) {
- src->n_frames = gst_util_uint64_scale (time,
- src->rate_numerator, src->rate_denominator * GST_SECOND);
- } else {
- src->n_frames = 0;
- }
- if (src->rate_numerator) {
- src->running_time = gst_util_uint64_scale (src->n_frames,
- src->rate_denominator * GST_SECOND, src->rate_numerator);
- } else {
- /* FIXME : Not sure what to set here */
- src->running_time = 0;
- }
-
- g_assert (src->running_time <= time);
-
- return TRUE;
-}
-
-static gboolean
-gst_gl_test_src_is_seekable (GstBaseSrc * psrc)
-{
- /* we're seekable... */
- return TRUE;
-}
-
-static GstFlowReturn
-gst_gl_test_src_create (GstPushSrc * psrc, GstBuffer ** buffer)
-{
- GstGLTestSrc *src;
- GstGLBuffer *outbuf;
-
- //GstFlowReturn res;
- GstClockTime next_time;
- GLuint fbo;
-
- src = GST_GL_TEST_SRC (psrc);
-
- if (G_UNLIKELY (!src->negotiated))
- goto not_negotiated;
-
- /* 0 framerate and we are at the second frame, eos */
- if (G_UNLIKELY (src->rate_numerator == 0 && src->n_frames == 1))
- goto eos;
-
- GST_LOG_OBJECT (src, "creating buffer %dx%d image for frame %d",
- src->width, src->height, (gint) src->n_frames);
-
- outbuf = gst_gl_buffer_new (src->display, src->width, src->height);
- gst_buffer_set_caps (GST_BUFFER (outbuf),
- GST_PAD_CAPS (GST_BASE_SRC_PAD (psrc)));
-
- gst_gl_display_lock (outbuf->display);
-
- glGenFramebuffersEXT (1, &fbo);
- glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, fbo);
-
- glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT,
- GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_RECTANGLE_ARB, outbuf->texture, 0);
-
- glDrawBuffer (GL_COLOR_ATTACHMENT0_EXT);
- glReadBuffer (GL_COLOR_ATTACHMENT0_EXT);
-
- g_assert (glCheckFramebufferStatusEXT (GL_FRAMEBUFFER_EXT) ==
- GL_FRAMEBUFFER_COMPLETE_EXT);
-
- glViewport (0, 0, outbuf->width, outbuf->height);
- gst_gl_display_check_error (outbuf->display, __LINE__);
-
-#if 0
- glClearColor (0.3, 0.3, 0.3, 1.0);
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-#endif
- if (src->pattern_type == GST_GL_TEST_SRC_BLINK) {
- if (src->n_frames & 0x1) {
- gst_gl_test_src_white (src, outbuf, src->width, src->height);
- } else {
- gst_gl_test_src_black (src, outbuf, src->width, src->height);
- }
- } else {
- src->make_image (src, outbuf, src->width, src->height);
- }
-
- glFlush ();
- gst_gl_display_check_error (outbuf->display, __LINE__);
-
- glDeleteFramebuffersEXT (1, &fbo);
- gst_gl_display_check_error (outbuf->display, __LINE__);
-
- gst_gl_display_unlock (outbuf->display);
-
- GST_BUFFER_TIMESTAMP (GST_BUFFER (outbuf)) =
- src->timestamp_offset + src->running_time;
- GST_BUFFER_OFFSET (GST_BUFFER (outbuf)) = src->n_frames;
- src->n_frames++;
- GST_BUFFER_OFFSET_END (GST_BUFFER (outbuf)) = src->n_frames;
- if (src->rate_numerator) {
- next_time = gst_util_uint64_scale_int (src->n_frames * GST_SECOND,
- src->rate_denominator, src->rate_numerator);
- GST_BUFFER_DURATION (GST_BUFFER (outbuf)) = next_time - src->running_time;
- } else {
- next_time = src->timestamp_offset;
- /* NONE means forever */
- GST_BUFFER_DURATION (GST_BUFFER (outbuf)) = GST_CLOCK_TIME_NONE;
- }
-
- src->running_time = next_time;
-
- *buffer = GST_BUFFER (outbuf);
-
- return GST_FLOW_OK;
-
-not_negotiated:
- {
- GST_ELEMENT_ERROR (src, CORE, NEGOTIATION, (NULL),
- (_("format wasn't negotiated before get function")));
- return GST_FLOW_NOT_NEGOTIATED;
- }
-eos:
- {
- GST_DEBUG_OBJECT (src, "eos: 0 framerate, frame %d", (gint) src->n_frames);
- return GST_FLOW_UNEXPECTED;
- }
-#if 0
-no_buffer:
- {
- GST_DEBUG_OBJECT (src, "could not allocate buffer, reason %s",
- gst_flow_get_name (res));
- return res;
- }
-#endif
-}
-
-static gboolean
-gst_gl_test_src_start (GstBaseSrc * basesrc)
-{
- GstGLTestSrc *src = GST_GL_TEST_SRC (basesrc);
- gboolean ret;
-
- src->running_time = 0;
- src->n_frames = 0;
- src->negotiated = FALSE;
- src->display = gst_gl_display_new ();
- ret = gst_gl_display_connect (src->display, NULL);
-
- return ret;
-}
-
-static gboolean
-gst_gl_test_src_stop (GstBaseSrc * basesrc)
-{
- GstGLTestSrc *src = GST_GL_TEST_SRC (basesrc);
-
- g_object_unref (src->display);
-
- return TRUE;
-}
diff --git a/gst/gl/gstgltestsrc.h b/gst/gl/gstgltestsrc.h
deleted file mode 100644
index 5d1f51b..0000000
--- a/gst/gl/gstgltestsrc.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* GStreamer
- * Copyright (C) 2002,2007 David A. Schleef <ds@schleef.org>
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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 __GST_GL_TEST_SRC_H__
-#define __GST_GL_TEST_SRC_H__
-
-#include <gst/gst.h>
-#include <gst/base/gstpushsrc.h>
-#include "gstglbuffer.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_GL_TEST_SRC \
- (gst_gl_test_src_get_type())
-#define GST_GL_TEST_SRC(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_TEST_SRC,GstGLTestSrc))
-#define GST_GL_TEST_SRC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_GL_TEST_SRC,GstGLTestSrcClass))
-#define GST_IS_GL_TEST_SRC(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GL_TEST_SRC))
-#define GST_IS_GL_TEST_SRC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_GL_TEST_SRC))
-
-/**
- * GstGLTestSrcPattern:
- * @GST_GL_TEST_SRC_SMPTE: A standard SMPTE test pattern
- * @GST_GL_TEST_SRC_SNOW: Random noise
- * @GST_GL_TEST_SRC_BLACK: A black image
- * @GST_GL_TEST_SRC_WHITE: A white image
- * @GST_GL_TEST_SRC_RED: A red image
- * @GST_GL_TEST_SRC_GREEN: A green image
- * @GST_GL_TEST_SRC_BLUE: A blue image
- * @GST_GL_TEST_SRC_CHECKERS1: Checkers pattern (1px)
- * @GST_GL_TEST_SRC_CHECKERS2: Checkers pattern (2px)
- * @GST_GL_TEST_SRC_CHECKERS4: Checkers pattern (4px)
- * @GST_GL_TEST_SRC_CHECKERS8: Checkers pattern (8px)
- * @GST_GL_TEST_SRC_CIRCULAR: Circular pattern
- * @GST_GL_TEST_SRC_BLINK: Alternate between black and white
- *
- * The test pattern to produce.
- */
-typedef enum {
- GST_GL_TEST_SRC_SMPTE,
- GST_GL_TEST_SRC_SNOW,
- GST_GL_TEST_SRC_BLACK,
- GST_GL_TEST_SRC_WHITE,
- GST_GL_TEST_SRC_RED,
- GST_GL_TEST_SRC_GREEN,
- GST_GL_TEST_SRC_BLUE,
- GST_GL_TEST_SRC_CHECKERS1,
- GST_GL_TEST_SRC_CHECKERS2,
- GST_GL_TEST_SRC_CHECKERS4,
- GST_GL_TEST_SRC_CHECKERS8,
- GST_GL_TEST_SRC_CIRCULAR,
- GST_GL_TEST_SRC_BLINK
-} GstGLTestSrcPattern;
-
-typedef struct _GstGLTestSrc GstGLTestSrc;
-typedef struct _GstGLTestSrcClass GstGLTestSrcClass;
-
-/**
- * GstGLTestSrc:
- *
- * Opaque data structure.
- */
-struct _GstGLTestSrc {
- GstPushSrc element;
-
- /*< private >*/
-
- /* type of output */
- GstGLTestSrcPattern pattern_type;
-
- /* video state */
- char *format_name;
- gint width;
- gint height;
- gint rate_numerator;
- gint rate_denominator;
-
- /* private */
- GstGLDisplay *display;
- gint64 timestamp_offset; /* base offset */
- GstClockTime running_time; /* total running time */
- gint64 n_frames; /* total frames sent */
- gboolean negotiated;
-
- void (*make_image) (GstGLTestSrc *v, GstGLBuffer *buffer, int w, int h);
-};
-
-struct _GstGLTestSrcClass {
- GstPushSrcClass parent_class;
-};
-
-GType gst_gl_test_src_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_GL_TEST_SRC_H__ */
diff --git a/gst/gl/gstglupload.c b/gst/gl/gstglupload.c
deleted file mode 100644
index ff2b220..0000000
--- a/gst/gl/gstglupload.c
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2007 David Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-#include <gst/base/gstbasetransform.h>
-#include <gst/video/video.h>
-#include <gstglbuffer.h>
-
-#define GST_CAT_DEFAULT gst_gl_upload_debug
-GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
-
-#define GST_TYPE_GL_UPLOAD (gst_gl_upload_get_type())
-#define GST_GL_UPLOAD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_UPLOAD,GstGLUpload))
-#define GST_IS_GL_UPLOAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GL_UPLOAD))
-#define GST_GL_UPLOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_GL_UPLOAD,GstGLUploadClass))
-#define GST_IS_GL_UPLOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_GL_UPLOAD))
-#define GST_GL_UPLOAD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_GL_UPLOAD,GstGLUploadClass))
-typedef struct _GstGLUpload GstGLUpload;
-typedef struct _GstGLUploadClass GstGLUploadClass;
-
-typedef void (*GstGLUploadProcessFunc) (GstGLUpload *, guint8 *, guint);
-
-struct _GstGLUpload
-{
- GstBaseTransform base_transform;
-
- GstPad *srcpad;
- GstPad *sinkpad;
-
- /* < private > */
-
- GstGLDisplay *display;
- GstVideoFormat video_format;
- GstGLBufferFormat format;
- int width;
- int height;
-
- gboolean peek;
-};
-
-struct _GstGLUploadClass
-{
- GstBaseTransformClass base_transform_class;
-};
-
-static const GstElementDetails element_details = GST_ELEMENT_DETAILS ("FIXME",
- "Filter/Effect",
- "FIXME example filter",
- "FIXME <fixme@fixme.com>");
-
-static GstStaticPadTemplate gst_gl_upload_src_pad_template =
-GST_STATIC_PAD_TEMPLATE ("src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_GL_VIDEO_CAPS)
- );
-
-static GstStaticPadTemplate gst_gl_upload_sink_pad_template =
- GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_RGBx ";"
- GST_VIDEO_CAPS_BGRx ";"
- GST_VIDEO_CAPS_xRGB ";"
- GST_VIDEO_CAPS_xBGR ";"
- GST_VIDEO_CAPS_YUV ("{ YUY2, UYVY, AYUV, YV12, I420 }"))
- );
-
-enum
-{
- PROP_0
-};
-
-#define DEBUG_INIT(bla) \
- GST_DEBUG_CATEGORY_INIT (gst_gl_upload_debug, "glupload", 0, "glupload element");
-
-GST_BOILERPLATE_FULL (GstGLUpload, gst_gl_upload, GstBaseTransform,
- GST_TYPE_BASE_TRANSFORM, DEBUG_INIT);
-
-static void gst_gl_upload_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_gl_upload_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static void gst_gl_upload_reset (GstGLUpload * upload);
-
-static void gst_gl_upload_reset (GstGLUpload * upload);
-static gboolean gst_gl_upload_set_caps (GstBaseTransform * bt,
- GstCaps * incaps, GstCaps * outcaps);
-static GstCaps *gst_gl_upload_transform_caps (GstBaseTransform * bt,
- GstPadDirection direction, GstCaps * caps);
-static gboolean gst_gl_upload_start (GstBaseTransform * bt);
-static gboolean gst_gl_upload_stop (GstBaseTransform * bt);
-static GstFlowReturn gst_gl_upload_prepare_output_buffer (GstBaseTransform *
- trans, GstBuffer * input, gint size, GstCaps * caps, GstBuffer ** buf);
-static GstFlowReturn gst_gl_upload_transform (GstBaseTransform * trans,
- GstBuffer * inbuf, GstBuffer * outbuf);
-static gboolean gst_gl_upload_get_unit_size (GstBaseTransform * trans,
- GstCaps * caps, guint * size);
-
-
-static void
-gst_gl_upload_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_set_details (element_class, &element_details);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_gl_upload_src_pad_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_gl_upload_sink_pad_template));
-}
-
-static void
-gst_gl_upload_class_init (GstGLUploadClass * klass)
-{
- GObjectClass *gobject_class;
-
- gobject_class = (GObjectClass *) klass;
- gobject_class->set_property = gst_gl_upload_set_property;
- gobject_class->get_property = gst_gl_upload_get_property;
-
- GST_BASE_TRANSFORM_CLASS (klass)->transform_caps =
- gst_gl_upload_transform_caps;
- GST_BASE_TRANSFORM_CLASS (klass)->transform = gst_gl_upload_transform;
- GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_upload_start;
- GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_upload_stop;
- GST_BASE_TRANSFORM_CLASS (klass)->set_caps = gst_gl_upload_set_caps;
- GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size = gst_gl_upload_get_unit_size;
- GST_BASE_TRANSFORM_CLASS (klass)->prepare_output_buffer =
- gst_gl_upload_prepare_output_buffer;
-}
-
-static void
-gst_gl_upload_init (GstGLUpload * upload, GstGLUploadClass * klass)
-{
-
- gst_gl_upload_reset (upload);
-}
-
-static void
-gst_gl_upload_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- //GstGLUpload *upload = GST_GL_UPLOAD (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_gl_upload_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- //GstGLUpload *upload = GST_GL_UPLOAD (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_gl_upload_reset (GstGLUpload * upload)
-{
- if (upload->display) {
- g_object_unref (upload->display);
- upload->display = NULL;
- }
- upload->format = GST_GL_BUFFER_FORMAT_RGB;
- upload->peek = FALSE;
-}
-
-static gboolean
-gst_gl_upload_start (GstBaseTransform * bt)
-{
- GstGLUpload *upload = GST_GL_UPLOAD (bt);
- gboolean ret;
-
- upload->format = GST_GL_BUFFER_FORMAT_RGB;
- upload->display = gst_gl_display_new ();
- ret = gst_gl_display_connect (upload->display, NULL);
- //upload->format = GST_VIDEO_FORMAT_RGBx;
-
- return TRUE;
-}
-
-static gboolean
-gst_gl_upload_stop (GstBaseTransform * bt)
-{
- GstGLUpload *upload = GST_GL_UPLOAD (bt);
-
- gst_gl_upload_reset (upload);
-
- return TRUE;
-}
-
-#if 0
-static gboolean
-gst_gl_upload_sink_setcaps (GstPad * pad, GstCaps * caps)
-{
- GstGLUpload *upload;
- GstVideoFormat video_format;
- int height;
- int width;
- gboolean ret;
- GstCaps *srccaps;
- int fps_n, fps_d;
- int par_n, par_d;
-
- upload = GST_GL_UPLOAD (gst_pad_get_parent (pad));
-
- ret = gst_video_format_parse_caps (caps, &video_format, &width, &height);
- ret &= gst_video_parse_caps_framerate (caps, &fps_n, &fps_d);
-
- if (!ret)
- return FALSE;
-
- upload->video_format = video_format;
- upload->width = width;
- upload->height = height;
-
- GST_DEBUG ("setcaps %d %d %d", video_format, width, height);
-
- par_n = 1;
- par_d = 1;
- gst_video_parse_caps_pixel_aspect_ratio (caps, &par_n, &par_d);
-
- srccaps = gst_caps_new_simple ("video/x-raw-gl",
- "format", G_TYPE_INT, 0,
- "width", G_TYPE_INT, width, "height", G_TYPE_INT, height,
- "framerate", GST_TYPE_FRACTION, fps_n, fps_d,
- "pixel-aspect-ratio", GST_TYPE_FRACTION, par_n, par_d, NULL);
-
- ret = gst_pad_set_caps (upload->srcpad, srccaps);
- gst_caps_unref (srccaps);
-
- return ret;
-}
-#endif
-
-#if 0
-static GstFlowReturn
-gst_gl_upload_chain (GstPad * pad, GstBuffer * buf)
-{
- GstGLUpload *upload;
- GstGLBuffer *outbuf;
-
- upload = GST_GL_UPLOAD (gst_pad_get_parent (pad));
-
- outbuf = gst_gl_buffer_new_from_data (upload->display,
- upload->video_format, upload->width, upload->height,
- GST_BUFFER_DATA (buf));
-
- gst_buffer_copy_metadata (GST_BUFFER (outbuf), buf,
- GST_BUFFER_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS);
- gst_buffer_set_caps (GST_BUFFER (outbuf), GST_PAD_CAPS (upload->srcpad));
-
- GST_DEBUG ("uploading %p size %d", GST_BUFFER_DATA (buf),
- GST_BUFFER_SIZE (buf));
- gst_buffer_unref (buf);
-
- if (upload->peek) {
- gst_gl_display_draw_texture (outbuf->display, outbuf->texture,
- outbuf->width, outbuf->height);
- }
-
- gst_pad_push (upload->srcpad, GST_BUFFER (outbuf));
-
- gst_object_unref (upload);
- return GST_FLOW_OK;
-}
-#endif
-
-static GstCaps *
-gst_gl_upload_transform_caps (GstBaseTransform * bt,
- GstPadDirection direction, GstCaps * caps)
-{
- GstGLUpload *upload;
- GstStructure *structure;
- GstCaps *newcaps;
- GstStructure *newstruct;
- const GValue *width_value;
- const GValue *height_value;
- const GValue *framerate_value;
- const GValue *par_value;
-
- upload = GST_GL_UPLOAD (bt);
-
- GST_ERROR ("transform caps %" GST_PTR_FORMAT, caps);
-
- structure = gst_caps_get_structure (caps, 0);
-
- width_value = gst_structure_get_value (structure, "width");
- height_value = gst_structure_get_value (structure, "height");
- framerate_value = gst_structure_get_value (structure, "framerate");
- par_value = gst_structure_get_value (structure, "pixel-aspect-ratio");
-
- if (direction == GST_PAD_SRC) {
- newcaps = gst_caps_new_simple ("video/x-raw-rgb", NULL);
- } else {
- newcaps = gst_caps_new_simple ("video/x-raw-gl",
- "format", G_TYPE_INT, GST_GL_BUFFER_FORMAT_RGBA,
- "is_yuv", G_TYPE_BOOLEAN, FALSE, NULL);
- }
- newstruct = gst_caps_get_structure (newcaps, 0);
- gst_structure_set_value (newstruct, "width", width_value);
- gst_structure_set_value (newstruct, "height", height_value);
- gst_structure_set_value (newstruct, "framerate", framerate_value);
- if (par_value) {
- gst_structure_set_value (newstruct, "pixel-aspect-ratio", par_value);
- } else {
- gst_structure_set (newstruct, "pixel-aspect-ratio", GST_TYPE_FRACTION,
- 1, 1, NULL);
- }
-
- GST_ERROR ("new caps %" GST_PTR_FORMAT, newcaps);
-
- return newcaps;
-}
-
-static gboolean
-gst_gl_upload_set_caps (GstBaseTransform * bt, GstCaps * incaps,
- GstCaps * outcaps)
-{
- GstGLUpload *upload;
- gboolean ret;
-
- upload = GST_GL_UPLOAD (bt);
-
- GST_DEBUG ("called with %" GST_PTR_FORMAT, incaps);
-
- ret = gst_video_format_parse_caps (incaps, &upload->video_format,
- &upload->width, &upload->height);
-
- if (!ret) {
- GST_DEBUG ("bad caps");
- return FALSE;
- }
-
- return ret;
-}
-
-static gboolean
-gst_gl_upload_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
- guint * size)
-{
- gboolean ret;
- GstStructure *structure;
- int width;
- int height;
-
- structure = gst_caps_get_structure (caps, 0);
- if (gst_structure_has_name (structure, "video/x-raw-gl")) {
- GstGLBufferFormat format;
-
- ret = gst_gl_buffer_format_parse_caps (caps, &format, &width, &height);
- if (ret) {
- *size = gst_gl_buffer_format_get_size (format, width, height);
- }
- } else {
- GstVideoFormat format;
-
- ret = gst_video_format_parse_caps (caps, &format, &width, &height);
- if (ret) {
- *size = gst_video_format_get_size (format, width, height);
- }
- }
-
- return TRUE;
-}
-
-static GstFlowReturn
-gst_gl_upload_prepare_output_buffer (GstBaseTransform * trans,
- GstBuffer * input, gint size, GstCaps * caps, GstBuffer ** buf)
-{
- GstGLUpload *upload;
- GstGLBuffer *gl_outbuf;
-
- upload = GST_GL_UPLOAD (trans);
-
- gl_outbuf = gst_gl_buffer_new_from_video_format (upload->display,
- upload->video_format, upload->width, upload->height);
-
- *buf = GST_BUFFER (gl_outbuf);
- gst_buffer_set_caps (*buf, caps);
-
- return GST_FLOW_OK;
-}
-
-static GstFlowReturn
-gst_gl_upload_transform (GstBaseTransform * trans, GstBuffer * inbuf,
- GstBuffer * outbuf)
-{
- GstGLUpload *upload;
- GstGLBuffer *gl_outbuf = GST_GL_BUFFER (outbuf);
-
- upload = GST_GL_UPLOAD (trans);
-
- GST_DEBUG ("uploading %p size %d",
- GST_BUFFER_DATA (inbuf), GST_BUFFER_SIZE (inbuf));
- gst_gl_buffer_upload (gl_outbuf, upload->video_format,
- GST_BUFFER_DATA (inbuf));
-
- if (upload->peek) {
- gst_gl_display_draw_texture (gl_outbuf->display, gl_outbuf->texture,
- gl_outbuf->width, gl_outbuf->height, FALSE);
- }
-
- return GST_FLOW_OK;
-}
diff --git a/gst/gl/gstopengl.c b/gst/gl/gstopengl.c
deleted file mode 100644
index 97d0e7c..0000000
--- a/gst/gl/gstopengl.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* GStreamer
- * Copyright (C) 2003 Julien Moutte <julien@moutte.net>
- * Copyright (C) 2005,2006,2007 David A. Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-
-#include <gst/gst.h>
-#include <gst/interfaces/xoverlay.h>
-#include <gst/video/gstvideosink.h>
-#include <gst/video/video.h>
-
-#include <string.h>
-
-#include <glimagesink.h>
-
-GType gst_gl_upload_get_type (void);
-GType gst_gl_download_get_type (void);
-GType gst_gl_filter_example_get_type (void);
-GType gst_gl_convert_get_type (void);
-GType gst_gl_test_src_get_type (void);
-
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- if (!gst_element_register (plugin, "glimagesink",
- GST_RANK_SECONDARY, GST_TYPE_GLIMAGE_SINK)) {
- return FALSE;
- }
- if (!gst_element_register (plugin, "glupload",
- GST_RANK_NONE, gst_gl_upload_get_type ())) {
- return FALSE;
- }
- if (!gst_element_register (plugin, "gldownload",
- GST_RANK_NONE, gst_gl_download_get_type ())) {
- return FALSE;
- }
- if (!gst_element_register (plugin, "glfilterexample",
- GST_RANK_NONE, gst_gl_filter_example_get_type ())) {
- return FALSE;
- }
- if (!gst_element_register (plugin, "glconvert",
- GST_RANK_NONE, gst_gl_convert_get_type ())) {
- return FALSE;
- }
- if (!gst_element_register (plugin, "gltestsrc",
- GST_RANK_NONE, gst_gl_test_src_get_type ())) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "opengl",
- "plugin for elements using OpenGL",
- plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/m4/.cvsignore b/m4/.cvsignore
deleted file mode 100644
index ae2f6d8..0000000
--- a/m4/.cvsignore
+++ /dev/null
@@ -1,17 +0,0 @@
-codeset.m4
-gettext.m4
-glibc21.m4
-iconv.m4
-intdiv0.m4
-inttypes-pri.m4
-inttypes.m4
-inttypes_h.m4
-isc-posix.m4
-lcmessage.m4
-lib-ld.m4
-lib-link.m4
-lib-prefix.m4
-progtest.m4
-stdint_h.m4
-uintmax_t.m4
-ulonglong.m4
diff --git a/m4/Makefile.am b/m4/Makefile.am
index 7442467..4e8db27 100644
--- a/m4/Makefile.am
+++ b/m4/Makefile.am
@@ -1,18 +1,18 @@
-EXTRA_DIST = \
- codeset.m4 \
- gettext.m4 \
- glibc21.m4 \
- iconv.m4 \
- intdiv0.m4 \
- inttypes-pri.m4 \
- inttypes.m4 \
- inttypes_h.m4 \
- isc-posix.m4 \
- lcmessage.m4 \
- lib-ld.m4 \
- lib-link.m4 \
- lib-prefix.m4 \
- progtest.m4 \
- stdint_h.m4 \
- uintmax_t.m4 \
- ulonglong.m4
+EXTRA_DIST = \
+ codeset.m4 \
+ gettext.m4 \
+ glibc21.m4 \
+ iconv.m4 \
+ intdiv0.m4 \
+ inttypes-pri.m4 \
+ inttypes.m4 \
+ inttypes_h.m4 \
+ isc-posix.m4 \
+ lcmessage.m4 \
+ lib-ld.m4 \
+ lib-link.m4 \
+ lib-prefix.m4 \
+ progtest.m4 \
+ stdint_h.m4 \
+ uintmax_t.m4 \
+ ulonglong.m4
diff --git a/pkgconfig/.cvsignore b/pkgconfig/.cvsignore
deleted file mode 100644
index 6fd0ef0..0000000
--- a/pkgconfig/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-*.pc
diff --git a/pkgconfig/Makefile.am b/pkgconfig/Makefile.am
index 8dd51ac..20df9ec 100644
--- a/pkgconfig/Makefile.am
+++ b/pkgconfig/Makefile.am
@@ -1,23 +1,23 @@
-
-pcverfiles = gstreamer-gl-@GST_MAJORMINOR@.pc
-
-pcverfiles_uninstalled = gstreamer-gl-@GST_MAJORMINOR@-uninstalled.pc
-
-all-local: $(pcverfiles) $(pcverfiles_uninstalled)
-
-### how to generate versioned .pc files from .pc files in this dir
-%-@GST_MAJORMINOR@.pc: %.pc
- cp $< $@
-%-@GST_MAJORMINOR@-uninstalled.pc: %-uninstalled.pc
- cp $< $@
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = $(pcverfiles)
-
-CLEANFILES = $(pcverfiles) $(pcverfiles_uninstalled)
-pcinfiles = \
- gstreamer-gl.pc.in gstreamer-gl-uninstalled.pc.in
-
-DISTCLEANFILES = $(pcinfiles:.in=)
-EXTRA_DIST = $(pcinfiles)
-
+
+pcverfiles = gstreamer-gl-@GST_MAJORMINOR@.pc
+
+pcverfiles_uninstalled = gstreamer-gl-@GST_MAJORMINOR@-uninstalled.pc
+
+all-local: $(pcverfiles) $(pcverfiles_uninstalled)
+
+### how to generate versioned .pc files from .pc files in this dir
+%-@GST_MAJORMINOR@.pc: %.pc
+ cp $< $@
+%-@GST_MAJORMINOR@-uninstalled.pc: %-uninstalled.pc
+ cp $< $@
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = $(pcverfiles)
+
+CLEANFILES = $(pcverfiles) $(pcverfiles_uninstalled)
+pcinfiles = \
+ gstreamer-gl.pc.in gstreamer-gl-uninstalled.pc.in
+
+DISTCLEANFILES = $(pcinfiles:.in=)
+EXTRA_DIST = $(pcinfiles)
+
diff --git a/pkgconfig/gstreamer-gl-uninstalled.pc.in b/pkgconfig/gstreamer-gl-uninstalled.pc.in
index 14c06a7..ff9b2a3 100644
--- a/pkgconfig/gstreamer-gl-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-gl-uninstalled.pc.in
@@ -1,15 +1,15 @@
-prefix=
-exec_prefix=
-libdir=${pcfiledir}/../gst-libs/gst
-includedir=${pcfiledir}/../gst-libs
-pluginsdir=${pcfiledir}/..
-
-Name: GStreamer OpenGL Plugins Libraries, Uninstalled
-Description: Streaming media framework, OpenGL plugins libraries, uninstalled
-Version: @VERSION@
-Requires: gstreamer-@GST_MAJORMINOR@
-
-Libs: -L${libdir}/gl
-Cflags: -I${includedir}
-
-libraries=gl
+prefix=
+exec_prefix=
+libdir=${pcfiledir}/../gst-libs/gst
+includedir=${pcfiledir}/../gst-libs
+pluginsdir=${pcfiledir}/..
+
+Name: GStreamer OpenGL Plugins Libraries, Uninstalled
+Description: Streaming media framework, OpenGL plugins libraries, uninstalled
+Version: @VERSION@
+Requires: gstreamer-@GST_MAJORMINOR@
+
+Libs: -L${libdir}/gl
+Cflags: -I${includedir}
+
+libraries=gl
diff --git a/pkgconfig/gstreamer-gl.pc.in b/pkgconfig/gstreamer-gl.pc.in
index 432b73e..8e219ff 100644
--- a/pkgconfig/gstreamer-gl.pc.in
+++ b/pkgconfig/gstreamer-gl.pc.in
@@ -1,13 +1,13 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@/gstreamer-@GST_MAJORMINOR@
-pluginsdir=@libdir@/gstreamer-@GST_MAJORMINOR@
-
-Name: GStreamer OpenGL Plugins Libraries
-Description: Streaming media framework, OpenGL plugins libraries
-Requires: gstreamer-@GST_MAJORMINOR@ gstreamer-base-@GST_MAJORMINOR@
-Version: @VERSION@
-Libs: -L${libdir} -lgstgl-@GST_MAJORMINOR@
-Cflags: -I${includedir}
-
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@/gstreamer-@GST_MAJORMINOR@
+pluginsdir=@libdir@/gstreamer-@GST_MAJORMINOR@
+
+Name: GStreamer OpenGL Plugins Libraries
+Description: Streaming media framework, OpenGL plugins libraries
+Requires: gstreamer-@GST_MAJORMINOR@ gstreamer-base-@GST_MAJORMINOR@
+Version: @VERSION@
+Libs: -L${libdir} -lgstgl-@GST_MAJORMINOR@
+Cflags: -I${includedir}
+
diff --git a/po/.cvsignore b/po/.cvsignore
deleted file mode 100644
index fbf1f1c..0000000
--- a/po/.cvsignore
+++ /dev/null
@@ -1,16 +0,0 @@
-*.gmo
-remove-potcdate.sed
-remove-potcdate.sin
-stamp-po
-POTFILES
-cat-id-tbl.c
-*.pot
-Makefile.in.in
-Makevars.template
-Rules-quot
-boldquot.sed
-en@boldquot.header
-en@quot.header
-insert-header.sin
-quot.sed
-.pot
diff --git a/po/LINGUAS b/po/LINGUAS
index c574d07..076fde9 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1 +1 @@
-en
+en
diff --git a/po/Makevars b/po/Makevars
index 6155923..70e62b9 100644
--- a/po/Makevars
+++ b/po/Makevars
@@ -1,41 +1,41 @@
-# Makefile variables for PO directory in any package using GNU gettext.
-
-# Usually the message domain is the same as the package name.
-DOMAIN = $(GETTEXT_PACKAGE)
-
-# These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
-
-# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
-
-# This is the copyright holder that gets inserted into the header of the
-# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
-# package. (Note that the msgstr strings, extracted from the package's
-# sources, belong to the copyright holder of the package.) Translators are
-# expected to transfer the copyright for their translations to this person
-# or entity, or to disclaim their copyright. The empty string stands for
-# the public domain; in this case the translators are expected to disclaim
-# their copyright.
-COPYRIGHT_HOLDER =
-
-# This is the email address or URL to which the translators shall report
-# bugs in the untranslated strings:
-# - Strings which are not entire sentences, see the maintainer guidelines
-# in the GNU gettext documentation, section 'Preparing Strings'.
-# - Strings which use unclear terms or require additional context to be
-# understood.
-# - Strings which make invalid assumptions about notation of date, time or
-# money.
-# - Pluralisation problems.
-# - Incorrect English spelling.
-# - Incorrect formatting.
-# It can be your email address, or a mailing list address where translators
-# can write to without being subscribed, or the URL of a web page through
-# which the translators can contact you.
-MSGID_BUGS_ADDRESS = http://bugzilla.gnome.org/
-
-# This is the list of locale categories, beyond LC_MESSAGES, for which the
-# message catalogs shall be used. It is usually empty.
-EXTRA_LOCALE_CATEGORIES =
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(GETTEXT_PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
+# package. (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.) Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright. The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER =
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+# in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+# understood.
+# - Strings which make invalid assumptions about notation of date, time or
+# money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = http://bugzilla.gnome.org/
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used. It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 472cbf7..23e0b3a 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1 +1 @@
-gst/gl/gstgltestsrc.c
+gst/gl/gstgltestsrc.c
diff --git a/po/en.po b/po/en.po
index 5b60d7a..66c4f20 100644
--- a/po/en.po
+++ b/po/en.po
@@ -1,17 +1,17 @@
-# English translation.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gst-plugins-gl 0.10.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-01-17 15:29-0800\n"
-"PO-Revision-Date: 2004-04-26 10:41-0400\n"
-"Last-Translator: none <none@none.com>\n"
-"Language-Team: English <en@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: gst/gl/gstgltestsrc.c:591
-msgid "format wasn't negotiated before get function"
-msgstr ""
+# English translation.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-gl 0.10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-01-17 15:29-0800\n"
+"PO-Revision-Date: 2004-04-26 10:41-0400\n"
+"Last-Translator: none <none@none.com>\n"
+"Language-Team: English <en@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: gst/gl/gstgltestsrc.c:591
+msgid "format wasn't negotiated before get function"
+msgstr ""
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 913a53f..606ac5c 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1 +1 @@
-SUBDIRS = check icles examples
+SUBDIRS = check icles examples
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index 1da9c81..f41c2ff 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -1,44 +1,44 @@
-include $(top_srcdir)/common/check.mak
-
-CHECK_REGISTRY = $(top_builddir)/tests/check/test-registry.reg
-TEST_FILES_DIRECTORY = $(top_srcdir)/tests/files
-
-REGISTRY_ENVIRONMENT = \
- GST_REGISTRY=$(CHECK_REGISTRY)
-
-TESTS_ENVIRONMENT = \
- $(REGISTRY_ENVIRONMENT) \
- GST_PLUGIN_SYSTEM_PATH= \
- GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/ext:$(top_builddir)/sys:$(GSTPB_PLUGINS_DIR):$(GST_PLUGINS_DIR) \
- GST_TEST_FILES_PATH=$(TEST_FILES_DIRECTORY) \
- STATE_IGNORE_ELEMENTS="aasink autovideosink cacasink cairotextoverlay"
-
-# ths core dumps of some machines have PIDs appended
-CLEANFILES = core.* test-registry.*
-
-clean-local: clean-local-check
-
-check_PROGRAMS = \
- generic/states \
- pipelines/simple-launch-lines
-
-VALGRIND_TO_FIX =
-
-TESTS = $(check_PROGRAMS)
-
-# these tests don't even pass
-# autodetect: temporarily disabled because of broken videosinks in -bad
-#noinst_PROGRAMS = \
-# elements/autodetect
-
-AM_CFLAGS = $(GST_OBJ_CFLAGS) $(GST_CHECK_CFLAGS) $(CHECK_CFLAGS) $(GST_OPTION_CFLAGS)
-LDADD = $(GST_OBJ_LIBS) $(GST_CHECK_LIBS) $(CHECK_LIBS)
-
-# valgrind testing
-# videocrop disabled since it takes way too long in valgrind
-VALGRIND_TESTS_DISABLE = \
- elements/videocrop \
- $(VALGRIND_TO_FIX)
-
-SUPPRESSIONS = $(top_srcdir)/common/gst.supp
-
+include $(top_srcdir)/common/check.mak
+
+CHECK_REGISTRY = $(top_builddir)/tests/check/test-registry.reg
+TEST_FILES_DIRECTORY = $(top_srcdir)/tests/files
+
+REGISTRY_ENVIRONMENT = \
+ GST_REGISTRY=$(CHECK_REGISTRY)
+
+TESTS_ENVIRONMENT = \
+ $(REGISTRY_ENVIRONMENT) \
+ GST_PLUGIN_SYSTEM_PATH= \
+ GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/ext:$(top_builddir)/sys:$(GSTPB_PLUGINS_DIR):$(GST_PLUGINS_DIR) \
+ GST_TEST_FILES_PATH=$(TEST_FILES_DIRECTORY) \
+ STATE_IGNORE_ELEMENTS="aasink autovideosink cacasink cairotextoverlay"
+
+# ths core dumps of some machines have PIDs appended
+CLEANFILES = core.* test-registry.*
+
+clean-local: clean-local-check
+
+check_PROGRAMS = \
+ generic/states \
+ pipelines/simple-launch-lines
+
+VALGRIND_TO_FIX =
+
+TESTS = $(check_PROGRAMS)
+
+# these tests don't even pass
+# autodetect: temporarily disabled because of broken videosinks in -bad
+#noinst_PROGRAMS = \
+# elements/autodetect
+
+AM_CFLAGS = $(GST_OBJ_CFLAGS) $(GST_CHECK_CFLAGS) $(CHECK_CFLAGS) $(GST_OPTION_CFLAGS)
+LDADD = $(GST_OBJ_LIBS) $(GST_CHECK_LIBS) $(CHECK_LIBS)
+
+# valgrind testing
+# videocrop disabled since it takes way too long in valgrind
+VALGRIND_TESTS_DISABLE = \
+ elements/videocrop \
+ $(VALGRIND_TO_FIX)
+
+SUPPRESSIONS = $(top_srcdir)/common/gst.supp
+
diff --git a/tests/check/generic/states.c b/tests/check/generic/states.c
index a4a226f..5ce75c2 100644
--- a/tests/check/generic/states.c
+++ b/tests/check/generic/states.c
@@ -1,222 +1,222 @@
-/* GStreamer
- *
- * unit test for state changes on all elements
- *
- * Copyright (C) <2005> Thomas Vander Stichele <thomas at apestaart dot org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <unistd.h>
-
-#include <gst/check/gstcheck.h>
-
-static GList *elements = NULL;
-
-static void
-setup ()
-{
- GList *features, *f;
- GList *plugins, *p;
- gchar **ignorelist = NULL;
- const gchar *STATE_IGNORE_ELEMENTS = NULL;
-
- GST_DEBUG ("getting elements for package %s", PACKAGE);
- STATE_IGNORE_ELEMENTS = g_getenv ("STATE_IGNORE_ELEMENTS");
- if (STATE_IGNORE_ELEMENTS) {
- GST_DEBUG ("Will ignore element factories: '%s'", STATE_IGNORE_ELEMENTS);
- ignorelist = g_strsplit (STATE_IGNORE_ELEMENTS, " ", 0);
- }
-
- plugins = gst_registry_get_plugin_list (gst_registry_get_default ());
-
- for (p = plugins; p; p = p->next) {
- GstPlugin *plugin = p->data;
-
- if (strcmp (gst_plugin_get_source (plugin), PACKAGE) != 0)
- continue;
-
- features =
- gst_registry_get_feature_list_by_plugin (gst_registry_get_default (),
- gst_plugin_get_name (plugin));
-
- for (f = features; f; f = f->next) {
- GstPluginFeature *feature = f->data;
- const gchar *name = gst_plugin_feature_get_name (feature);
- gboolean ignore = FALSE;
-
- if (!GST_IS_ELEMENT_FACTORY (feature))
- continue;
-
- if (ignorelist) {
- gchar **s;
-
- for (s = ignorelist; s && *s; ++s) {
- if (g_str_has_prefix (name, *s)) {
- GST_DEBUG ("ignoring element %s", name);
- ignore = TRUE;
- }
- }
- if (ignore)
- continue;
- }
-
- GST_DEBUG ("adding element %s", name);
- elements = g_list_prepend (elements, (gpointer) g_strdup (name));
- }
- gst_plugin_feature_list_free (features);
- }
- gst_plugin_list_free (plugins);
- g_strfreev (ignorelist);
-}
-
-static void
-teardown ()
-{
- GList *e;
-
- for (e = elements; e; e = e->next) {
- g_free (e->data);
- }
- g_list_free (elements);
- elements = NULL;
-}
-
-
-GST_START_TEST (test_state_changes_up_and_down_seq)
-{
- GstElement *element;
- GList *e;
-
- for (e = elements; e; e = e->next) {
- const gchar *name = e->data;
-
- GST_INFO ("testing element %s", name);
- element = gst_element_factory_make (name, name);
- fail_if (element == NULL, "Could not make element from factory %s", name);
-
- if (GST_IS_PIPELINE (element)) {
- GST_DEBUG ("element %s is a pipeline", name);
- }
-
- gst_element_set_state (element, GST_STATE_READY);
- gst_element_set_state (element, GST_STATE_PAUSED);
- gst_element_set_state (element, GST_STATE_PLAYING);
- gst_element_set_state (element, GST_STATE_PAUSED);
- gst_element_set_state (element, GST_STATE_READY);
- gst_element_set_state (element, GST_STATE_NULL);
- gst_element_set_state (element, GST_STATE_PAUSED);
- gst_element_set_state (element, GST_STATE_READY);
- gst_element_set_state (element, GST_STATE_PLAYING);
- gst_element_set_state (element, GST_STATE_PAUSED);
- gst_element_set_state (element, GST_STATE_NULL);
- gst_object_unref (GST_OBJECT (element));
- }
-}
-
-GST_END_TEST;
-
-GST_START_TEST (test_state_changes_up_seq)
-{
- GstElement *element;
- GList *e;
-
- for (e = elements; e; e = e->next) {
- const gchar *name = e->data;
-
- GST_INFO ("testing element %s", name);
- element = gst_element_factory_make (name, name);
- fail_if (element == NULL, "Could not make element from factory %s", name);
-
- if (GST_IS_PIPELINE (element)) {
- GST_DEBUG ("element %s is a pipeline", name);
- }
-
- gst_element_set_state (element, GST_STATE_READY);
-
- gst_element_set_state (element, GST_STATE_PAUSED);
- gst_element_set_state (element, GST_STATE_READY);
-
- gst_element_set_state (element, GST_STATE_PAUSED);
- gst_element_set_state (element, GST_STATE_PLAYING);
- gst_element_set_state (element, GST_STATE_PAUSED);
- gst_element_set_state (element, GST_STATE_READY);
-
- gst_element_set_state (element, GST_STATE_NULL);
- gst_object_unref (GST_OBJECT (element));
- }
-}
-
-GST_END_TEST;
-
-GST_START_TEST (test_state_changes_down_seq)
-{
- GstElement *element;
- GList *e;
-
- for (e = elements; e; e = e->next) {
- const gchar *name = e->data;
-
- GST_INFO ("testing element %s", name);
- element = gst_element_factory_make (name, name);
- fail_if (element == NULL, "Could not make element from factory %s", name);
-
- if (GST_IS_PIPELINE (element)) {
- GST_DEBUG ("element %s is a pipeline", name);
- }
-
- gst_element_set_state (element, GST_STATE_READY);
- gst_element_set_state (element, GST_STATE_PAUSED);
- gst_element_set_state (element, GST_STATE_PLAYING);
-
- gst_element_set_state (element, GST_STATE_PAUSED);
- gst_element_set_state (element, GST_STATE_PLAYING);
-
- gst_element_set_state (element, GST_STATE_PAUSED);
- gst_element_set_state (element, GST_STATE_READY);
- gst_element_set_state (element, GST_STATE_PAUSED);
- gst_element_set_state (element, GST_STATE_PLAYING);
-
- gst_element_set_state (element, GST_STATE_PAUSED);
- gst_element_set_state (element, GST_STATE_READY);
- gst_element_set_state (element, GST_STATE_NULL);
- gst_object_unref (GST_OBJECT (element));
- }
-}
-
-GST_END_TEST;
-
-
-Suite *
-states_suite (void)
-{
- Suite *s = suite_create ("states");
- TCase *tc_chain = tcase_create ("general");
-
- suite_add_tcase (s, tc_chain);
- tcase_add_checked_fixture (tc_chain, setup, teardown);
- tcase_add_test (tc_chain, test_state_changes_up_and_down_seq);
- tcase_add_test (tc_chain, test_state_changes_up_seq);
- tcase_add_test (tc_chain, test_state_changes_down_seq);
-
- return s;
-}
-
-GST_CHECK_MAIN (states);
+/* GStreamer
+ *
+ * unit test for state changes on all elements
+ *
+ * Copyright (C) <2005> Thomas Vander Stichele <thomas at apestaart dot org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <unistd.h>
+
+#include <gst/check/gstcheck.h>
+
+static GList *elements = NULL;
+
+static void
+setup ()
+{
+ GList *features, *f;
+ GList *plugins, *p;
+ gchar **ignorelist = NULL;
+ const gchar *STATE_IGNORE_ELEMENTS = NULL;
+
+ GST_DEBUG ("getting elements for package %s", PACKAGE);
+ STATE_IGNORE_ELEMENTS = g_getenv ("STATE_IGNORE_ELEMENTS");
+ if (STATE_IGNORE_ELEMENTS) {
+ GST_DEBUG ("Will ignore element factories: '%s'", STATE_IGNORE_ELEMENTS);
+ ignorelist = g_strsplit (STATE_IGNORE_ELEMENTS, " ", 0);
+ }
+
+ plugins = gst_registry_get_plugin_list (gst_registry_get_default ());
+
+ for (p = plugins; p; p = p->next) {
+ GstPlugin *plugin = p->data;
+
+ if (strcmp (gst_plugin_get_source (plugin), PACKAGE) != 0)
+ continue;
+
+ features =
+ gst_registry_get_feature_list_by_plugin (gst_registry_get_default (),
+ gst_plugin_get_name (plugin));
+
+ for (f = features; f; f = f->next) {
+ GstPluginFeature *feature = f->data;
+ const gchar *name = gst_plugin_feature_get_name (feature);
+ gboolean ignore = FALSE;
+
+ if (!GST_IS_ELEMENT_FACTORY (feature))
+ continue;
+
+ if (ignorelist) {
+ gchar **s;
+
+ for (s = ignorelist; s && *s; ++s) {
+ if (g_str_has_prefix (name, *s)) {
+ GST_DEBUG ("ignoring element %s", name);
+ ignore = TRUE;
+ }
+ }
+ if (ignore)
+ continue;
+ }
+
+ GST_DEBUG ("adding element %s", name);
+ elements = g_list_prepend (elements, (gpointer) g_strdup (name));
+ }
+ gst_plugin_feature_list_free (features);
+ }
+ gst_plugin_list_free (plugins);
+ g_strfreev (ignorelist);
+}
+
+static void
+teardown ()
+{
+ GList *e;
+
+ for (e = elements; e; e = e->next) {
+ g_free (e->data);
+ }
+ g_list_free (elements);
+ elements = NULL;
+}
+
+
+GST_START_TEST (test_state_changes_up_and_down_seq)
+{
+ GstElement *element;
+ GList *e;
+
+ for (e = elements; e; e = e->next) {
+ const gchar *name = e->data;
+
+ GST_INFO ("testing element %s", name);
+ element = gst_element_factory_make (name, name);
+ fail_if (element == NULL, "Could not make element from factory %s", name);
+
+ if (GST_IS_PIPELINE (element)) {
+ GST_DEBUG ("element %s is a pipeline", name);
+ }
+
+ gst_element_set_state (element, GST_STATE_READY);
+ gst_element_set_state (element, GST_STATE_PAUSED);
+ gst_element_set_state (element, GST_STATE_PLAYING);
+ gst_element_set_state (element, GST_STATE_PAUSED);
+ gst_element_set_state (element, GST_STATE_READY);
+ gst_element_set_state (element, GST_STATE_NULL);
+ gst_element_set_state (element, GST_STATE_PAUSED);
+ gst_element_set_state (element, GST_STATE_READY);
+ gst_element_set_state (element, GST_STATE_PLAYING);
+ gst_element_set_state (element, GST_STATE_PAUSED);
+ gst_element_set_state (element, GST_STATE_NULL);
+ gst_object_unref (GST_OBJECT (element));
+ }
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_state_changes_up_seq)
+{
+ GstElement *element;
+ GList *e;
+
+ for (e = elements; e; e = e->next) {
+ const gchar *name = e->data;
+
+ GST_INFO ("testing element %s", name);
+ element = gst_element_factory_make (name, name);
+ fail_if (element == NULL, "Could not make element from factory %s", name);
+
+ if (GST_IS_PIPELINE (element)) {
+ GST_DEBUG ("element %s is a pipeline", name);
+ }
+
+ gst_element_set_state (element, GST_STATE_READY);
+
+ gst_element_set_state (element, GST_STATE_PAUSED);
+ gst_element_set_state (element, GST_STATE_READY);
+
+ gst_element_set_state (element, GST_STATE_PAUSED);
+ gst_element_set_state (element, GST_STATE_PLAYING);
+ gst_element_set_state (element, GST_STATE_PAUSED);
+ gst_element_set_state (element, GST_STATE_READY);
+
+ gst_element_set_state (element, GST_STATE_NULL);
+ gst_object_unref (GST_OBJECT (element));
+ }
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_state_changes_down_seq)
+{
+ GstElement *element;
+ GList *e;
+
+ for (e = elements; e; e = e->next) {
+ const gchar *name = e->data;
+
+ GST_INFO ("testing element %s", name);
+ element = gst_element_factory_make (name, name);
+ fail_if (element == NULL, "Could not make element from factory %s", name);
+
+ if (GST_IS_PIPELINE (element)) {
+ GST_DEBUG ("element %s is a pipeline", name);
+ }
+
+ gst_element_set_state (element, GST_STATE_READY);
+ gst_element_set_state (element, GST_STATE_PAUSED);
+ gst_element_set_state (element, GST_STATE_PLAYING);
+
+ gst_element_set_state (element, GST_STATE_PAUSED);
+ gst_element_set_state (element, GST_STATE_PLAYING);
+
+ gst_element_set_state (element, GST_STATE_PAUSED);
+ gst_element_set_state (element, GST_STATE_READY);
+ gst_element_set_state (element, GST_STATE_PAUSED);
+ gst_element_set_state (element, GST_STATE_PLAYING);
+
+ gst_element_set_state (element, GST_STATE_PAUSED);
+ gst_element_set_state (element, GST_STATE_READY);
+ gst_element_set_state (element, GST_STATE_NULL);
+ gst_object_unref (GST_OBJECT (element));
+ }
+}
+
+GST_END_TEST;
+
+
+Suite *
+states_suite (void)
+{
+ Suite *s = suite_create ("states");
+ TCase *tc_chain = tcase_create ("general");
+
+ suite_add_tcase (s, tc_chain);
+ tcase_add_checked_fixture (tc_chain, setup, teardown);
+ tcase_add_test (tc_chain, test_state_changes_up_and_down_seq);
+ tcase_add_test (tc_chain, test_state_changes_up_seq);
+ tcase_add_test (tc_chain, test_state_changes_down_seq);
+
+ return s;
+}
+
+GST_CHECK_MAIN (states);
diff --git a/tests/check/pipelines/simple-launch-lines.c b/tests/check/pipelines/simple-launch-lines.c
index 88d271a..5ef9adf 100644
--- a/tests/check/pipelines/simple-launch-lines.c
+++ b/tests/check/pipelines/simple-launch-lines.c
@@ -1,149 +1,149 @@
-/* GStreamer
- * Copyright (C) 2005 Andy Wingo <wingo@pobox.com>
- *
- * simple_launch_lines.c: Unit test for simple pipelines
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#include <gst/check/gstcheck.h>
-
-#ifndef GST_DISABLE_PARSE
-
-static GstElement *
-setup_pipeline (const gchar * pipe_descr)
-{
- GstElement *pipeline;
-
- pipeline = gst_parse_launch (pipe_descr, NULL);
- g_return_val_if_fail (GST_IS_PIPELINE (pipeline), NULL);
- return pipeline;
-}
-
-/*
- * run_pipeline:
- * @pipe: the pipeline to run
- * @desc: the description for use in messages
- * @events: is a mask of expected events
- * @tevent: is the expected terminal event.
- *
- * the poll call will time out after half a second.
- */
-static void
-run_pipeline (GstElement * pipe, const gchar * descr,
- GstMessageType events, GstMessageType tevent, GstState target_state)
-{
- GstBus *bus;
- GstMessage *message;
- GstMessageType revent;
- GstStateChangeReturn ret;
-
- g_assert (pipe);
- bus = gst_element_get_bus (pipe);
- g_assert (bus);
-
- fail_if (gst_element_set_state (pipe, target_state) ==
- GST_STATE_CHANGE_FAILURE, "Could not set pipeline %s to playing", descr);
- ret = gst_element_get_state (pipe, NULL, NULL, 10 * GST_SECOND);
- if (ret == GST_STATE_CHANGE_ASYNC) {
- g_critical ("Pipeline '%s' failed to go to PAUSED fast enough", descr);
- goto done;
- } else if ((ret != GST_STATE_CHANGE_SUCCESS)
- && (ret != GST_STATE_CHANGE_NO_PREROLL)) {
- g_critical ("Pipeline '%s' failed to go into PAUSED state (%s)", descr,
- gst_element_state_change_return_get_name (ret));
- goto done;
- }
-
- while (1) {
- message = gst_bus_poll (bus, GST_MESSAGE_ANY, GST_SECOND / 2);
-
- /* always have to pop the message before getting back into poll */
- if (message) {
- revent = GST_MESSAGE_TYPE (message);
- gst_message_unref (message);
- } else {
- revent = GST_MESSAGE_UNKNOWN;
- }
-
- if (revent == tevent) {
- break;
- } else if (revent == GST_MESSAGE_UNKNOWN) {
- g_critical ("Unexpected timeout in gst_bus_poll, looking for %d: %s",
- tevent, descr);
- break;
- } else if (revent & events) {
- continue;
- }
- g_critical
- ("Unexpected message received of type %d, '%s', looking for %d: %s",
- revent, gst_message_type_get_name (revent), tevent, descr);
- }
-
-done:
- fail_if (gst_element_set_state (pipe, GST_STATE_NULL) ==
- GST_STATE_CHANGE_FAILURE, "Could not set pipeline %s to NULL", descr);
- gst_element_get_state (pipe, NULL, NULL, GST_CLOCK_TIME_NONE);
- gst_object_unref (pipe);
-
- gst_bus_set_flushing (bus, TRUE);
- gst_object_unref (bus);
-}
-
-GST_START_TEST (test_something)
-{
- gchar *s;
- GstState target_state = GST_STATE_PLAYING;
-
- s = "fakesrc num-buffers=10 ! fakesink";
- run_pipeline (setup_pipeline (s), s,
- GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
- GST_MESSAGE_UNKNOWN, target_state);
-}
-
-GST_END_TEST
-#endif /* #ifndef GST_DISABLE_PARSE */
- Suite * simple_launch_lines_suite (void)
-{
- Suite *s = suite_create ("Pipelines");
- TCase *tc_chain = tcase_create ("linear");
-
- /* time out after 60s, not the default 3 */
- tcase_set_timeout (tc_chain, 60);
-
- suite_add_tcase (s, tc_chain);
-#ifndef GST_DISABLE_PARSE
- tcase_add_test (tc_chain, test_something);
-#endif
- return s;
-}
-
-int
-main (int argc, char **argv)
-{
- int nf;
-
- Suite *s = simple_launch_lines_suite ();
- SRunner *sr = srunner_create (s);
-
- gst_check_init (&argc, &argv);
-
- srunner_run_all (sr, CK_NORMAL);
- nf = srunner_ntests_failed (sr);
- srunner_free (sr);
-
- return nf;
-}
+/* GStreamer
+ * Copyright (C) 2005 Andy Wingo <wingo@pobox.com>
+ *
+ * simple_launch_lines.c: Unit test for simple pipelines
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library 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.
+ */
+
+#include <gst/check/gstcheck.h>
+
+#ifndef GST_DISABLE_PARSE
+
+static GstElement *
+setup_pipeline (const gchar * pipe_descr)
+{
+ GstElement *pipeline;
+
+ pipeline = gst_parse_launch (pipe_descr, NULL);
+ g_return_val_if_fail (GST_IS_PIPELINE (pipeline), NULL);
+ return pipeline;
+}
+
+/*
+ * run_pipeline:
+ * @pipe: the pipeline to run
+ * @desc: the description for use in messages
+ * @events: is a mask of expected events
+ * @tevent: is the expected terminal event.
+ *
+ * the poll call will time out after half a second.
+ */
+static void
+run_pipeline (GstElement * pipe, const gchar * descr,
+ GstMessageType events, GstMessageType tevent, GstState target_state)
+{
+ GstBus *bus;
+ GstMessage *message;
+ GstMessageType revent;
+ GstStateChangeReturn ret;
+
+ g_assert (pipe);
+ bus = gst_element_get_bus (pipe);
+ g_assert (bus);
+
+ fail_if (gst_element_set_state (pipe, target_state) ==
+ GST_STATE_CHANGE_FAILURE, "Could not set pipeline %s to playing", descr);
+ ret = gst_element_get_state (pipe, NULL, NULL, 10 * GST_SECOND);
+ if (ret == GST_STATE_CHANGE_ASYNC) {
+ g_critical ("Pipeline '%s' failed to go to PAUSED fast enough", descr);
+ goto done;
+ } else if ((ret != GST_STATE_CHANGE_SUCCESS)
+ && (ret != GST_STATE_CHANGE_NO_PREROLL)) {
+ g_critical ("Pipeline '%s' failed to go into PAUSED state (%s)", descr,
+ gst_element_state_change_return_get_name (ret));
+ goto done;
+ }
+
+ while (1) {
+ message = gst_bus_poll (bus, GST_MESSAGE_ANY, GST_SECOND / 2);
+
+ /* always have to pop the message before getting back into poll */
+ if (message) {
+ revent = GST_MESSAGE_TYPE (message);
+ gst_message_unref (message);
+ } else {
+ revent = GST_MESSAGE_UNKNOWN;
+ }
+
+ if (revent == tevent) {
+ break;
+ } else if (revent == GST_MESSAGE_UNKNOWN) {
+ g_critical ("Unexpected timeout in gst_bus_poll, looking for %d: %s",
+ tevent, descr);
+ break;
+ } else if (revent & events) {
+ continue;
+ }
+ g_critical
+ ("Unexpected message received of type %d, '%s', looking for %d: %s",
+ revent, gst_message_type_get_name (revent), tevent, descr);
+ }
+
+done:
+ fail_if (gst_element_set_state (pipe, GST_STATE_NULL) ==
+ GST_STATE_CHANGE_FAILURE, "Could not set pipeline %s to NULL", descr);
+ gst_element_get_state (pipe, NULL, NULL, GST_CLOCK_TIME_NONE);
+ gst_object_unref (pipe);
+
+ gst_bus_set_flushing (bus, TRUE);
+ gst_object_unref (bus);
+}
+
+GST_START_TEST (test_something)
+{
+ gchar *s;
+ GstState target_state = GST_STATE_PLAYING;
+
+ s = "fakesrc num-buffers=10 ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+#endif /* #ifndef GST_DISABLE_PARSE */
+ Suite * simple_launch_lines_suite (void)
+{
+ Suite *s = suite_create ("Pipelines");
+ TCase *tc_chain = tcase_create ("linear");
+
+ /* time out after 60s, not the default 3 */
+ tcase_set_timeout (tc_chain, 60);
+
+ suite_add_tcase (s, tc_chain);
+#ifndef GST_DISABLE_PARSE
+ tcase_add_test (tc_chain, test_something);
+#endif
+ return s;
+}
+
+int
+main (int argc, char **argv)
+{
+ int nf;
+
+ Suite *s = simple_launch_lines_suite ();
+ SRunner *sr = srunner_create (s);
+
+ gst_check_init (&argc, &argv);
+
+ srunner_run_all (sr, CK_NORMAL);
+ nf = srunner_ntests_failed (sr);
+ srunner_free (sr);
+
+ return nf;
+}